poj
BACKUP_zw
github: github.com/zhewang95
blog: zhewang95.github.io
展开
-
poj2075Tangled in Cables
基础的最小生成树题,用的kruskal原创 2014-11-21 12:12:00 · 455 阅读 · 0 评论 -
读背包九讲之二——完全背包
没想到完全背包还有如此神奇的写法。学习了。还了解了和快速求幂类似的二进制思想。对于为什么完全背包能够这样直接从s[i][1]到v遍历可行并且必须这样,可以从两个层面理解。一是从抽象的概念角度,也就是文章里所说的,对于状态dp[j],由于可能多次取到同一个物品,所以从已经遍历的方向向未遍历的方向遍历是正确的,并且只有以这个方向遍历才是正确的。而是从具体的代码执行流程考虑,假设dp[j]第一次原创 2014-11-25 21:29:39 · 339 阅读 · 0 评论 -
poj2886Who Gets the Most Candies?
这道题又加深了我对线段树的认识,不过依然被自己坑的很惨,简直不能忍。题意不难理解,用线段树来快速找到从当前开始的第k个人,注意公式推导一定要认真。最郁闷的是,自己的约数算法是错的。。。愚蠢的写成了i j都小于770,实际上有些数的约数可能大于根号500000.。。#include#include#include#includeusing namespace std;const原创 2015-02-17 18:20:55 · 386 阅读 · 0 评论 -
poj2828Buy Tickets
这道题收获非常大啊。我觉得这道题的要点不仅是对于线段树的考察,更重要的是对问题的理解抽象以及转化能力。200000的数据量如果直接模拟,就算是用链表也要达到1e10,绝对超时。可见从前往后考虑是没有可能的。如果从后向前考虑,也就是假设现在的状态是已经得到了最后的队列,要做的是一个一个退队,就可以发现,最后一条命令的人的位置可以直接确定,倒数第二条命令对应的那个人如果是在倒数第一个前面,就可原创 2015-02-11 17:33:29 · 352 阅读 · 0 评论 -
poj1015Jury Compromise
完完全全用自己的思路做了一道dp题,感觉对dp的理解又加深了一层题目其实可以抽象为:从n个数对里面选出m个数对,使得所有数对的第一个数字之和与第二个数字之和的差尽量接近于0且所有数字之和尽量大。如果直接从两部分的差值最小来设计状态转移的话很困难,因为如果子问题的差值的绝对值最小,不一定总体的差值绝对值最小。考虑到题目的数据量不算太大,可以考虑通过每个差值的最大数字之和来设计状态转移,这样最原创 2015-03-29 10:45:50 · 345 阅读 · 0 评论 -
poj3468A Simple Problem with Integers
线段树区间更新,这题略坑,当然,自己坑自己的成分还是占大多数。。。还是代码能力的问题,对long long和int之间的差异不敏感,导致错误,奇怪的是用int64就不会出错。。。还有数组必须开到140000才能ac,但有人开100010照样ac,估计是我的写法有问题,尤其是pushdown那个地方反正线段树区间更新我还很不熟练,代码需要优化#include#include#in原创 2015-04-13 21:04:51 · 275 阅读 · 0 评论 -
poj 1789 Truck History 最小生成树
好久没写kruskal算法了,复习一下。由于两个节点间距离的取值只可能是1-7(每个点的名字不同),所以 不用排序,直接放到对应的数组里面就行了。然后直接交上去TLE,加了个优化当已经达到n-1条边时直接goto end#include#include#include#include#define MAXN 2000#define MAXM 8using namespace原创 2016-01-13 18:46:42 · 369 阅读 · 0 评论