03 2014 档案

摘要:题目链接:http://acm.fzu.edu.cn/problem.php?pid=2155思路:在一般的并查集操作中设立虚父亲节点,当删除x的时候,不是真的删除x,而是通过一个映射,即令tmp[x] = cnt, parent[cnt] = cnt;这样x就从原来的集合中独立出来了,而我们每次合并x,y的时候,只需合并tmp[x], tmp[y]就可以了。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 const int MAXN = (2000000 +100... 阅读全文
posted @ 2014-03-26 17:44 ihge2k 阅读(351) 评论(2) 推荐(0) 编辑
摘要:模块一:线段树单点更新,区间最值。http://acm.hdu.edu.cn/showproblem.php?pid=1166线段树功能:update:单点更新,query:区间求和。http://acm.hdu.edu.cn/showproblem.php?pid=1754线段树功能:update... 阅读全文
posted @ 2014-03-20 22:22 ihge2k 阅读(1523) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4834思路:dp[i][j]表示当前节点在i,分数为j的路径条数,从题中可以得出,要在N处的分数为K,那么那些到达N的路径上的节点的val必然是K的因子,由于K的范围为[1, 1000000],二维数组开不下,那么我们可以用一个数组来保留K的所有因子,在用一个数组来保留这个因子的值,这样,二维数组就可开了,于是,就是记忆化搜索了! 1 /***************************************************************** 阅读全文
posted @ 2014-03-18 22:12 ihge2k 阅读(386) 评论(0) 推荐(0) 编辑
摘要:首先得讲一下单调队列,顾名思义,单调队列就是队列中的每个元素具有单调性,如果是单调递增队列,那么每个元素都是单调递增的,反正,亦然。那么如何对单调队列进行操作呢?是这样的:对于单调队列而言,队首和队尾都可以进行出队操作,但只有队尾能够进行入队操作。至于如何来维护单调队列,这里以单调递增队列为例:1、如果队列的长度是一定的,首先判断队首元素是否在规定范围内,如果不再,则队首指针向后移动。(至于如何来判断是否在制定范围内,一般而言,我们可以给每个元素设定一个入队的序号,这样就能够知道每个元素原来的顺序了)。2、每次加入元素是,如果元素小于队尾元素且队列非空,则减小尾指针,队尾元素出队列,直到保持队 阅读全文
posted @ 2014-03-11 09:35 ihge2k 阅读(588) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4257dp[state]表示当前状态为state时的所能获得的最大值,这里我用1表示气球存在,0表示消失,由于状态转移是从有到无,于是最外层循环于是从大到小,这与一般的状态要所略有区别。方程为:dp[s ^ (1 File Name: zoj3471.cpp 3 > Author: syhjh 4 > Created Time: 2014年03月09日 星期日 18时19分25秒 5 *******************************... 阅读全文
posted @ 2014-03-09 18:39 ihge2k 阅读(197) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3001由于本题中一个点最多能够访问2次,由此可以联想到3进制;visited[i][j]表示在状态i下在点j已经做过的次数,dp[i][j]表示在状态i下到达点j走过的最小的路程,于是我们可以通过预处理得到visited[i][j]数组,然后就是一般的状态转移。 1 /************************************************************************* 2 > File Name: hdu3001.cpp 3 > Auth.. 阅读全文
posted @ 2014-03-09 15:51 ihge2k 阅读(472) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1932spfa求最长路,判断dist[n] > 0,需要注意的是有正环存在,如果有环存在,那么就要判断这个环上的某一点是否能够到达n点,如果能,就说明可以到达,否则,就说明不能。 1 /************************************************************************* 2 > File Name: poj1932.cpp 3 > Author: syhjh 4 > Created Time: 2014年03月04日 星期二 16时54分43秒 5 **. 阅读全文
posted @ 2014-03-04 19:10 ihge2k 阅读(1684) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://poj.org/problem?id=3895思想很简单,就是dfs,并且用一个数组记录到该节点所走过的长度,然后如果遇到已经走过的,就说明存在环了, 更新一下ans。 1 /************************************************************************* 2 > File Name: poj3895.cpp 3 > Author: syhjh 4 > Created Time: 2014年03月02日 星期日 21时06分39秒 5 **********************... 阅读全文
posted @ 2014-03-02 21:18 ihge2k 阅读(2548) 评论(1) 推荐(0) 编辑

点击右上角即可分享
微信分享提示