2012年8月5日

模拟题。

摘要: 算法:没有什么bug.以后少用STL。。。View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>using namespace std;map<string,int>mp;m 阅读全文

posted @ 2012-08-05 21:10 more think, more gains 阅读(185) 评论(0) 推荐(0) 编辑

搜索

摘要: 算法:题意比赛搞错了,只要最后彼此拿到的财务价值一样即可。搜索,2(40)次。加个if条件剪枝就可以了。View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>using namespac 阅读全文

posted @ 2012-08-05 21:09 more think, more gains 阅读(160) 评论(0) 推荐(0) 编辑

网络流

摘要: 求最大流后判断下那些边的容量为0即可。。View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>using namespace std;#define MAXN 2000000struct 阅读全文

posted @ 2012-08-05 21:07 more think, more gains 阅读(130) 评论(0) 推荐(0) 编辑

closest 素数

摘要: View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>using namespace std;int pri[3200];bool visit[3200] = {0};int prime 阅读全文

posted @ 2012-08-05 21:05 more think, more gains 阅读(129) 评论(0) 推荐(0) 编辑

贪心

摘要: 算法:以结束时间从小到大排序,枚举比当前开始时间小的剩余房间,有足够不另开房间,没有足够的就加上缺少多少。View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>using namespa 阅读全文

posted @ 2012-08-05 21:04 more think, more gains 阅读(128) 评论(0) 推荐(0) 编辑

HDU 3811 Permutation 记忆化搜索 状态压缩 DP

摘要: 题意:求1-N的排列数但是有限定条件,AI,BI,该排列要满足第AI位为Bi。算法:1.裸的DFS果断TLE。。时间复杂度为N!View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>us 阅读全文

posted @ 2012-08-05 11:25 more think, more gains 阅读(169) 评论(0) 推荐(0) 编辑

HDU 3006 The Number of set状态压缩

摘要: 题意:给你N个集合,k个元素,元素值小于等于14,问由这些集合可以构造出多少新的不同集合。。。算法:由元素值特别小,可以这样处理。。1,2就是set[i]第1,2位为1然后把所有集合的合并,枚举。。最后枚举1..1<<m之间哪些数存在可以组成。。View Code #include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>#include<queue>using namespace std;int N, M, set[110];int d 阅读全文

posted @ 2012-08-05 10:06 more think, more gains 阅读(173) 评论(0) 推荐(0) 编辑

HDU 1074 Doing Homework 状态压缩 + 搜索

摘要: 题意:就是有0-15个工作,每个工作有完成日期限制,还有完成这个工作所需要时间,求完成所有工作花时最少,并且输出这些顺序。。。因为工作很小,最多也就1<<15种方案,BFS枚举所有方案即可。View Code /*鐘舵€佸帇缂?+ 鎼滅储*/#include<stdio.h>#include<string.h>#include<stdlib.h>#include<queue>#include<algorithm>using namespace std;struct node{ char name[110]; int end 阅读全文

posted @ 2012-08-05 09:42 more think, more gains 阅读(136) 评论(0) 推荐(0) 编辑

HDU 1565 状态压缩

摘要: 题意:你一个n*n的格子的棋盘,每个格子里面有一个非负数。从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的和最大。(n <= 20)算法:因为n比较少20,可以用状态压缩,1表示方格该数取,0表示不取。每一行的状态有1<<N种,先预处理所有合法状态,即相邻两位不能为1,判断条件是i && (i<<1),下一行的状态要满足条件的是跟上一行没有相邻的 num[i] & num[j] == 0int num[21000]; //状态 int sum[21][21000]; //该状态的和 阅读全文

posted @ 2012-08-05 09:13 more think, more gains 阅读(191) 评论(0) 推荐(0) 编辑

导航