摘要: #include<iostream>#include<cstring>#include<cstdio>usingnamespacestd;constintnMax=1000;classedge{public:intv,nex;};edgee[nMax];intn,k,head[nMax];//head[i]是以点i为起点的链表头部voidaddedge(inta,intb){//向图中加有向边的算法,注意加上的是有向边//b为a的后续节点既是a---->be[k].v=b;e[k].nex=head[a];head[a]=k;k++;}intmain( 阅读全文
posted @ 2012-01-27 19:45 追逐. 阅读(262) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3211 小两口洗衣服,只有一种颜色的衣服洗完才能洗下一种颜色,两人同时洗问需要的最小时间。 这里一种颜色的衣服所需的总时间可以求出,求出每种颜色衣服所需最小时间便求出了ans。每种颜色的衣服总时间有了,让求两个人最短完成时间,就相当于给你一个数让你分成两份,并让这两份尽可能的小,显然这个数的一半就是答案。在这里也就是两个人洗衣服的时间尽可能相同。 怎么让一个人洗衣服的时间尽可能等于总时间的一半呢?01背包,最大容量为sum[i]/2,尽可能将背包装满即可。ans += sum[i] - dp[sum[i]/2] ;,ans便为解。代码:#i 阅读全文
posted @ 2012-01-27 17:00 追逐. 阅读(232) 评论(0) 推荐(0) 编辑