- 博客(16)
- 收藏
- 关注
原创 堆
最近学了下堆,堆就是一坨一坨的东西,最普通的堆有两种,大根堆(也叫最大堆)和小根堆(最小堆)。堆是一棵树,普通的二叉堆是完全二叉树,每棵子树也是一个堆,树中结点个数就是堆的大小(size)。对于最大堆,就是上面的一定比下面的大,但同一层之间互相的关系完全不清楚,因此最大的
2011-08-22 01:54:33
883
原创 自写的万能归并排序
在网上搜了一下归并排序的原理后就发现归并排序dfs一下非常好写,于是马上写了个,并且改造了下变成了“万能的”。虽然还是没有C++ “algorithm”头文件里的sort来得方便,但也算个小成果吧,嘻嘻。以后不断完善功能:int lef[MAX/2],ri
2011-08-17 17:30:45
413
原创 我的挫13大数模板
Xstruct Bignum{#define VV 10010#define CONT int#define WID 10000 private: CONT bit[VV]; int bitlen; bool
2011-08-17 13:17:47
386
原创 HDU 3053 Group Travel
m[i][j]=min{m[i-1][l]+w[l+1][j}; (i-1其中,m[i][j]表示前j个人用i个下车点的最优解,w[i][j]表示i到j共用1个下车点的最小距离和(此时显然是在(i+j)/2下车最好)。因为l要枚举从i-1到j-1复杂度达到了O(k*n*n),n
2011-07-25 19:42:04
509
原创 HDU 1011 Starship Troopers
以后编辑;#include #include #include #include #define MAX 101using namespace std;int n,m;struct vcc{ int dp[MAX]; int val,cos;
2011-07-19 00:20:05
391
原创 HDU 2242 考研路茫茫——空调教室
这题又是一道混合算法题。基本思路是用tarjan在无向图中搜出桥边然后将缩点将图变成一颗树进行树形DP。但是这题其实是有平行边的,在双连通tarjan的模板上加一个判断子节点为父亲的语句,让其能通过第二次及以后的边搜到其父亲就能解决平行边问题。缩点退栈的同时把原来的点所包含的人数
2011-07-18 01:02:32
884
原创 HDU 3594 Cactus
此题数据过水,第一次A时其实代码是错的,但是AC了。。。。。。下面有几组比较苛刻的数据(但不保证情况覆盖完全)。40 11 22 02 33 00 0答案应该是NO。40 11 22 33 22 00 040
2011-07-17 01:21:51
574
原创 HDU 2767 Proving Equivalences
这两题题目的内容虽然不一样,但题意是一样的,代码只要改个输入方式就行了。解题方法就是输入有向边求强连通分量然后缩点,如果分量只有一个就输出零。不为零就转化成DAG(有向无环图)最少添加几条有向边能使其变成强连通图,也就是入度为零的点的个数和出度为零的点的个数两个中最大的那个。这两
2011-07-13 01:06:30
656
原创 HDU 3500 Fling
这题题意是一个弹来弹去的游戏。在一个7*8的板子上,有若干个球(小于12个,经测试最多11个)。你每次可以选择一个球向上下左右推动,能推动的条件是推动的方向上有球但是不能粘在一起,中间必需得隔一个及以上的格子。然后你推动这个球后它会一直在这个方向上滚动,直到碰到下一个球或者掉下板
2011-07-10 01:54:47
898
原创 HDU 2243 考研路茫茫——单词情结
此题其实为综合算法,AC自动机DP+矩阵二分快速求幂。由于要求的是“至少”包含一个的情况,每次碰到这种词就必然要联想到反面,也就是一个都不包含的情况。因为是对2的64次方取模,其实直接用unsigned long long类型即可,其结果就是直接对2^64取模,而且为正,输出用%
2011-07-09 01:13:52
1088
原创 HDU 1426 Sudoku Killer
此题输入格式十分奇怪,用scanf("%s",s );来收下每个字符就能忽略空格的影响了。思路是简单DFS,把每个为问号的点存下来进行DFS枚举,枚举时判断下能否放入该数字然后回溯结果即可。附渣代码:#include #include #include #include
2011-07-09 00:41:46
873
原创 HDU 1002 A+BII大数
此题杀死各种新手,当年被此题卡住两个星期辗转难眠,最终发现拿数组存下每位数然后模仿笔算即可,附渣代码:#include #include void main(){ char s1[1001],s2[1001]; int cas,c,i,j,x,lc;
2011-07-09 00:32:03
397
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人