ACM/ICPC
文章平均质量分 68
hustluy
这个作者很懒,什么都没留下…
展开
-
Hduacm1003 Max Sum
http://acm.hdu.edu.cn/showproblem.php?pid=1003 Max Sum,求解最大字段和问题,刚开始做这道题时没接触什么算法,就直接穷举每个字段和,复杂度是O(n^3), 毫无疑问超时了, 优化后,缩小到了O(n^2), 但是测试数据量太大,又超时了。 ////O(n^3) 枚举法 for(max = -100000, i=1; i for(原创 2013-01-08 18:00:48 · 404 阅读 · 0 评论 -
POJ 1011 Sticks
毫无疑问,非常经典的搜索题。除了在搜索前要对木棍进行排序外,在搜索过程中的两个关键的剪枝必须要考虑到,否则就TLE了:(1)在当前尚未组合的木棍里面,先把第一条尚未组合的木棍做为原始木棍的一部分,然后尝试搜索填充这条原始木棍的剩余部分,若失败,则直接返回上一层。(2)若当前木棍参与当前的组合方式不能得到合法的解,那么后面的长度和这条木棍相同的木棍可以直接跳过。#include #原创 2013-06-17 21:09:45 · 873 阅读 · 0 评论 -
POJ 1861/ZOJ 1542 Network
#include #include #include #include #include #include using namespace std;bool Comp(pair,int> left, pair,int> right){ return left.second < right.second;}void MakeSet(vector& p, vecto原创 2013-07-11 22:23:03 · 778 阅读 · 0 评论 -
POJ 1308 Is It A Tree?
在此提供了两种解法:(1)利用树的性质,除了根节点入度为0外,其余节点入度均为1;(2)利用并查集,但是并查集检测是否存在多余的边后,还要检测全部节点构成的是树还是森林。比如测试数据 1 2 2 3 4 5 0 0。Solution 1:#include #include using namespace std;const int MAXSIZE = 10024;vector原创 2013-07-13 10:43:59 · 635 阅读 · 0 评论 -
POJ 1033 Defragment
根据http://hi.baidu.com/algorithm/item/d51b15f7a8ea1c0a84d278be这个开始练习ac,刚开始接触这道题时以为是道搜索题,读完之后深思了一下,感觉不需要套用一贯的dfs或者bfs,直接根据自己的思路走,然后注意一下效率问题就行了!可见算法注重灵活,而不是一贯的套用现有的模式。利用题中示例:原创 2013-06-27 22:09:05 · 1328 阅读 · 0 评论 -
POJ 1129/ZOJ 1084
搜索练习,没什么重要的剪枝要考虑,直接按照dfs模板码就行了!但是网上也有贪心解法,虽然不能确定得到最优解,但是能够ac!精确解法代码如下:#include #include using namespace std;int n;vector > adjList;vector color;int corNum;bool Judge(int l, int c){ i原创 2013-06-29 11:19:04 · 858 阅读 · 0 评论 -
POJ 1006 数论简单题
不用中国剩余定理的知识,直接简单模拟#include using namespace std;const int pc = 23, ep = 28, ip = 33;int p, e, i, d;bool Judge(int ans){ if( (ans-p)%pc != 0 ) return false; if( (ans-e)%ep != 0原创 2013-07-19 21:49:44 · 666 阅读 · 0 评论 -
POJ 2049 Finding Nemo
搜索练习,在数据预处理部分稍微麻烦一下(即初始化迷宫地图部分),AC时还要注意一下Nemo起始位置可能在迷宫外边,这个时候应该直接返回0。BFS和DFS都在代码里面了!#include #include #include #include #include #include #include using namespace std;const int MAXLEN =原创 2013-07-14 21:45:47 · 607 阅读 · 0 评论 -
POJ 1459 Power Network
经典最大流问题,需要将题中的多源点多汇点最大流问题转化为单源单汇。源点s指向power station,边的权重为相应的power station的pmax;consumer都指向汇点t,边权为相应的consumer的cmax;采用Edmonds-Karps耗时有点大,借助scanf才能勉强在1s内跑完!待学习了压入与重标记算法后重写代码。#include #include原创 2013-07-26 21:21:30 · 555 阅读 · 0 评论 -
POJ 1008/Maya Calendar
一道水题,竟然WA了快10次了,究其原因就是问题没有彻底查清楚就断然提交!导致一直WA的问题就是在计算Tzolkin年份的时候,边界没有考虑到,直接以totalDays/260得出年份,这样计算直接导致的错误就是当totalDays=260时,会输出年份为1,而事实上是0年的最后一天,应该输出年份为0。附代码:#include #include using namespace s原创 2013-07-28 19:15:21 · 549 阅读 · 0 评论 -
POJ 1009 Edge Detection
读完此题后,总的感觉就是没有具体的确定的优化方案,所以迟迟没法下手敲代码。于是在网上搜了一下解题报告,看了好几篇仍是感觉好凌乱。直到看了这一篇http://liangsun.org/posts/poj-1009-edge-detection-report/后,思路才算清晰起来。引文首先给出了一个命题:每一个在输出结果中的像素点在原图像中的位置至少跟一个输入像素点相邻。注:这里的相邻是指两个原创 2013-08-25 16:04:27 · 2356 阅读 · 0 评论 -
POJ 1182并查集的经典运用
#include #include #include using namespace std;typedef struct { int parent; int rank; int tag;}Node;vector v;int n, k;void MakeSet(){ v.clear(); v.resize(n+5); for原创 2013-10-01 20:18:01 · 733 阅读 · 1 评论 -
POJ 1010 STAMPS
又是一道经典搜索题,剪枝是必须的!题意有点晦涩,参考了网上提供的中文版才明白过来到底是个什么事。具体题意可参考http://blog.csdn.net/sdj222555/article/details/7240991这篇博文,同时也给出了用经典DFS模板写的代码。这里给出了个人所想的剪枝方法:1. 重点剪枝:由于题目中说明了不同类型的邮票可能具有相同的面值,所以这里把首先把邮票按原创 2013-10-23 21:46:35 · 773 阅读 · 0 评论 -
暴力搜索中的强度优化练习之Codeforces:Two Circles
暴力搜索中的强度优化,数据结构和数学的完美结合!原创 2013-11-27 22:08:44 · 1524 阅读 · 1 评论 -
浅谈Codeforces round 217 Summer Reading的两种解法:DP与构造
这是在codeforces上参加的第二场比赛了,虽然最后测评的结果显示在房间排名是第二名,但是与第一名的差距之大却是很难看的。这里,简单地报告一下E题Summer Reading的两种解法。比赛完后,看了作者提供的tutorial仍然是一脸雾水,主要是因为误解block为输入中连续的数字块。之后,借鉴了牛人的代码,才知道block其实是指一本书号的数字块。如给定输入序列为0 0 2 23 3原创 2014-01-15 20:19:57 · 1140 阅读 · 0 评论 -
hdu2047
/* Description: HDU__ACM 2047 阿牛的EOF牛肉串 http://acm.hdu.edu.cn/showproblem.php?pid=2047*/#include#include#include#include#includeusing namespace std;long long save[55];lo原创 2013-01-08 18:01:17 · 388 阅读 · 0 评论 -
动态规划整理(转)
动态规划 容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 1322, 1414, 1456, 1458, 1609, 1644, 1664, 1690, 1699, 1740, 1742, 1887, 1926, 1936, 1952, 1953, 1958, 1959, 1转载 2013-01-08 18:01:04 · 651 阅读 · 0 评论 -
迷宫最短路径
http://poj.org/problem?id=3984迷宫问题#include#includeusing namespace std;const int N = 5;int maze[N][N];typedef struct PathNode{ int x; int y; int nstep;//就是加个记录步数的变量}PathNode;原创 2013-01-08 18:00:58 · 276 阅读 · 0 评论 -
Hdu1443(Joseph)巧妙的提交
一般这道题都会出现超时,鉴于题中提示了只有1--13的输入数据, 于是可以先写个程序分别计算对应的值,记下来,再编写个小程序,里面用一个一维数组保留刚才记下来的各个值,a[20] = {0,2,7,5,30,169,441,1872,7632,1740,93313,459901,1358657,2504881,0}; #include using namespace std; i原创 2013-01-08 18:00:50 · 395 阅读 · 0 评论 -
浮点数高精度相加(杭电1753A+B)
#include #include #define MAX_LEN 400 using namespace std; int a1[MAX_LEN+10]; int a2[MAX_LEN+10]; int b1[MAX_LEN+10]; int b2[MAX_LEN+10]; char s1[MAX_LEN+10]; char s2[MAX_LEN+10]; int mai原创 2013-01-08 18:00:56 · 418 阅读 · 0 评论 -
Hdu2045--LELE的RPG难题
/** Description:不容易系列之(3)—— LELE的RPG难题 http://acm.hdu.edu.cn/showproblem.php?pid=2045 递推题: (1)当前n-1个方格已满足任何相邻的方格不同色,且首尾两格也不同色时,第n个格子就只有一种涂法, 就是异于第1、n-1个格子的剩下一种颜色。 (2)前n-1格子不满足要求、当涂上n的时候满足了原创 2013-01-08 18:01:09 · 322 阅读 · 0 评论 -
POJ_1001 Exponentiation
http://poj.org/problem?id=1001/* Description: 基本思想很简单:把double型当做字符串进行读入,然后提取出double的各个数到int型 数组中,模拟手算进行大整数乘法。 注意:要事先计算出小数点的位置,输出的时候加以控制即可!*/#include#include#include#include#include#include#inc原创 2013-01-08 18:01:36 · 367 阅读 · 0 评论 -
过河问题
POJ1700 Cross River,一道贪心题,合理选择贪心策略:http://poj.org/problem?id=1700#include#include#include#includeusing namespace std;int main(){ int iCase; cin>>iCase; while(iCase-- ){ in原创 2013-01-08 18:01:07 · 350 阅读 · 0 评论 -
Is It Symmetric 浙大计算机研究生保研复试上机考试-2011年
http://acm.hdu.edu.cn/showproblem.php?pid=3793就是加强版的回文串 3793 Is It Symmetric 浙大计算机研究生保研复试上机考试-2011年 (57/136)41原创 2013-01-08 18:01:11 · 796 阅读 · 0 评论 -
杭电acm试题分类
【转】 杭电ACM题目分类http://hi.baidu.com/dongjinwei86/blog/item/4c345c0a626fb31295ca6b4b.html基础题:1000、1001、1004、1005、1008、1012、1013、1014、1017、1019、1021、1028、1029、1032、1037、1040、1048、1056、1058、1061、1070、10转载 2013-01-08 18:01:13 · 492 阅读 · 0 评论 -
hdu2048递推练习
/* Description: HDU__ACM 2048 总体上就是得出n的完全错排方案个数, 然后除以n!即可;关键是求n的完全错排方案个数; 第n个人可以选取前n-1个人中任意一个人的字条, 第n个人有n-1种选择, 假设第n个人取到的是第i个人的字条,这时i可以保留第n个人的字条,剩余的n-2个人完全错排;原创 2013-01-08 18:01:15 · 508 阅读 · 0 评论 -
hdu2044
/* Description: HDU__ACM 2044 一只小蜜蜂... http://acm.hdu.edu.cn/showproblem.php?pid=2044*/#include#include#include#include#includeusing namespace std;long long save[55];long原创 2013-01-08 18:01:19 · 460 阅读 · 0 评论 -
hdu2049
/* Description:是2048的加强版 HDU__ACM 2049 不容易系列之(4)——考新郎 http://acm.hdu.edu.cn/showproblem.php?pid=2049*/#include#include#include#include#includeusing namespace std;long long c原创 2013-01-08 18:01:21 · 396 阅读 · 0 评论 -
POJACM3752
/* Description: 字母旋转游戏 POJ__ACM 3752 http://poj.org/problem?id=3752*/#include#includechar **s;void Molloc(int m, int n){ s = (char **)malloc( (m+1)*sizeof(char *) ); i原创 2013-01-08 18:01:23 · 335 阅读 · 0 评论 -
华中科技大学2010年复试上机题a+b
/* Description: 完美实现版(无冗余) 编写十进制一位加法器add() , 以被加位、加位、低位进位为参数,用十进制数字字符表示,以本位结果和高位进位为输出。 实现两个任意长整数加法,其他过程自理,不能使用字符串库函数。*/#include#include#include#include#includetypedef struct原创 2013-01-08 18:01:32 · 532 阅读 · 0 评论 -
取石子游戏POJ1067
POJ1067取石子游戏:威佐夫博奕(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。 这种情况下是颇为复杂的。我们用(ak,bk)(ak ≤ bk ,k=0,1,2,……,n)表示两堆物品的数量并称其为局势,如果甲面对(0,0),那么甲已经输了,这种局势我们称为奇异局势。前几个奇异局势是:(原创 2013-01-08 18:01:34 · 400 阅读 · 0 评论 -
POJ_2593最大两不想交子段和问题
http://poj.org/problem?id=2593/* Description: 思想:对于数据a[],从左向右依次求解以a[i]结尾的最大子段和b[i], 然后变b[i]为a[i]左边(包括a[i])的最大字段和。 然后,从右向左遍历,求a[i]右边(包括a[i])的最大子段和sum,输出sum+b[i-1]的 最大值。 */#include using name原创 2013-01-08 18:01:38 · 342 阅读 · 0 评论 -
poj3311 经典tsp问题
TSP问题目前有多种解法:搜索解法,动归解法,启发式解法。这里就针对poj 3311问题给出了前两种解法。搜索解法:这种解法其实就是计算排列子集树的过程。从0点出发,要求遍历1,2,3点后回到0点。以不同的顺序来依次遍历1,2,3点就会导出不同的路径(0->1->2->3->0;0->1->3->2->0等等),总共有3!=6条路径需要考虑,从中选出最短的那条就是所求。搜索解法的时间复杂度为O(n!)。动归解法:仔细观察搜索解法的过程,其实是有很多重复计算的。比如从0点出发,经过1,2,3,4,5点后回原创 2014-06-02 17:11:24 · 2464 阅读 · 0 评论