题目链接:uva 1436 - Counting heaps
题目大意:给出一个树的形状,现在为这棵树标号,保证根节点的标号值比子节点的标号值大,问有多少种标号树。
解题思路:和村名排队的思路是一只的uva11174,最后问题只和树德结构有直接关系,f(root)=(s(root)?1)!(s(1)?s(2)???s(n)
但是给定的取模数不是质数,所以不能用逆元做,只能将分子分...
分类:
其他好文 时间:
2014-06-30 09:17:52
阅读次数:
272
http://poj.org/problem?id=3270
大致题意:给出n个整数,要将它们转化成递增序列,每交换其中两个数的代价是这两个数之和。问排序成功后的最小代价。
该题考察的是置换群知识。在黑书p247上有详细的讲解。总结下置换群,方便复习。
群:给定一个集合G={a,b,c...}和集合G上的二元运算 ·,如果满足封闭性,结合律,存在单位元和逆元,则成集合...
分类:
其他好文 时间:
2014-06-11 06:01:26
阅读次数:
365
又是一条数论题目,最近学习数论,看完书本感觉并不能掌握数论的,还是需要多多练习,多运用才能掌握这个思想武器的。
本题可以简单点过,不需要太高级的数论内容;
但是也可以运用好数论的内容,可以应用上三个数论的内容:
1 扩展欧几里得
2 快速求模
3 乘法逆元(inverse of modulo)
2 快速求模,也可以生成一个数组,因为这里最大是40000,故此数值不大,可以使用数组,然后查表,速度很快。
但是这里使用快速的时间效率也几乎接近常数,没必要保存一个数组。如下面的powMod函数。
3 乘法...
分类:
其他好文 时间:
2014-06-11 00:55:53
阅读次数:
351
昨天我仔细一想,发现自己之前的分类(用OJ来划分,毫无意义啊!)太失败了,所以我重新划分了一下大分类,在分到数论的时候,我就想起了中国剩余定理了,于是乎今天就刷了一题中国剩余定理的题目了,话说太久没作数学题,导致我连样例都调了好多次(在算逆元时候老是算错~烦恼!),好在提交时候是1A。
题目的意思就是:人有三个周期,记为p,e,i,周期天数分别为23,28,33,现在给定你三个时间a,b,c,和...
分类:
其他好文 时间:
2014-06-10 14:42:16
阅读次数:
144
题目链接分析:打表以后就能发现时卡特兰数, 但是有除法取余。f[i] = f[i-1]*(4*i -
2)/(i+1);看了一下网上的题解,照着题解写了下面的代码,不过还是不明白,为什么用扩展gcd, 不是用逆元吗。。网上还有别人的解释,没看懂,贴一下:(a /
b) % m = ( a % (m*...
分类:
其他好文 时间:
2014-05-27 16:17:10
阅读次数:
305
解题思路:求乘法逆元就好了。 1 //Accepted 228 KB 0 ms 2 #include
3 #include 4 const int pp = 9973; 5 int extend_euclid(int a,int b,int &x,int
&y) 6 { 7 ...
分类:
其他好文 时间:
2014-05-26 02:17:41
阅读次数:
210
HDU 4828 Grids
思路:可以转化为卡特兰数,先把前n个人标为0,后n个人标为1,然后去全排列,全排列的数列,如果每个1的前面对应的0大于等于1,那么就是满足的序列,如果把0看成入栈,1看成出栈,那么就等价于n个元素入栈出栈,求符合条件的出栈序列,这个就是卡特兰数了。然后去递推一下解,过程中需要求逆元去计算
代码:
#include
#include
const int ...
分类:
其他好文 时间:
2014-05-25 12:52:33
阅读次数:
389
代码太丑就不贴了,,又是一篇无责任民科的题解。。
HDU 4828 Grids
看了一下跟卡特兰数差不多就猜了一下,具体为啥我也不知道。。然后有除法套个逆元。。
HDU 4830 Party
发现这个除了叶子节点可能是环,剩下就是一棵树了(如果是单独的环,就用虚拟节点0来连接一下)
剩下就是环状树形dp。。...
分类:
其他好文 时间:
2014-05-25 07:23:48
阅读次数:
281
题目连接:uva 11174 - Stand in a Line
题目大意:村子里有n个村名民,现在他们要排成一列,处于对长辈的尊敬,他们不能排在自己父亲的前面,有些人的父亲不一定在村子了。问有多少种列的顺序。
解题思路:【算法竞赛入门经典-训练指南】的例题,主要还用到了欧几里得拓展定理求逆元。
#include
#include
#include
using namespa...
分类:
其他好文 时间:
2014-05-22 13:24:44
阅读次数:
179
错了29遍,终成正果。。。。。
根据题意,很容易的可以想到容斥。
然后的问题就是如何求
sum(n)=1^4+2^4+3^4+....+n^4;
有三种道路:
很显然:1^4+2^4+3^4+....+n^4=(n^5)/5+(n^4)/2+(n^3)/3-n/30;
则1,用java的大数去敲这个的代码。
2,用c++敲,但是用到分数取模,求逆元。
3,用c++敲,但是不用这...
分类:
其他好文 时间:
2014-05-15 06:36:06
阅读次数:
328