2013年2月6日

【DP】【2012 ACM/ICPC 成都赛区现场赛】【I.Count】

摘要: 【题目来源】http://acm.hdu.edu.cn/showproblem.php?pid=4472【题目解析】F[I][J]表示的是前I个人,最后一层有J个人的方案数。F[I][J] = Sum{F[I-J][K]} (K为J的约数),意思是枚举前一层的人数,但要注意的是,前一层的人数必须是后一层人数的约数。另外一件值得注意的事是,只有一个headman,所以边界应该设为F[1][1] = 1。最后Ans[I] = Sum{F[I][J]} (1<=J<=I)。貌似是难度最小的一题了,详细看题解。【代码如下】 1 #include <iostream> 2 #in 阅读全文

posted @ 2013-02-06 11:33 孤星ぁ紫辰 阅读(207) 评论(0) 推荐(0) 编辑

2013年1月23日

【Baltic 2001远程通信】

摘要: 【题目描述】波罗的海上有两个小岛:Bornholm和Gotland。在每个小岛上都有一些神奇的远程通信端口,每个通信端口可以运行在两种模式下——发送模式和接收模式。Bornholm和Gotland分别有n和m个这样的端口,每个端口都连接着另一个小岛某个端口,称为“目标端口”。请设置这n+m个端口的模式,使得所有端口都处于工作状态,即:l对于处于接收模式的端口A,另一个小岛上至少有一个以A为目标端口的端口被设置成发送模式。l对于处于发送模式的端口B,它的目标端口必须处于接收状态。其中1≤n,m≤50000。如下图(每个点指向的点表示它的目标端口):那么它的一种设置方案为:即Bornholm岛上1 阅读全文

posted @ 2013-01-23 17:28 孤星ぁ紫辰 阅读(221) 评论(0) 推荐(0) 编辑

2013年1月22日

【ZOJ月赛】【树形DP】【I.Destroy】

摘要: 【题目来源】http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=4937【个人体会】这个题目刚开始看的时候我以为是树的中心点+最小割。但是最小割那边我很怕会超时,因此一开始就没敢打,后来发现可以使用树形DP在O(N)的级别中解决这个问题,因此思路很明确,首先是求树的中心点,然后是树形DP,总级别也是O(N),可能带点常数,但无关紧要。【题目解析】思路分为两块,第一块是求树的中心点,有经典的O(N)级别的算法。第二块是树形DP,DP[U]表示的是以U为根的子树中,切断所有叶子节点与根节点的联系,所要付出的那个最大边的 阅读全文

posted @ 2013-01-22 22:30 孤星ぁ紫辰 阅读(218) 评论(0) 推荐(0) 编辑

【ZOJ月赛】【存在性背包问题】【G.E - Cup 3】

摘要: 【题目来源】http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=4935【个人体会】后来发现我的代码质量竟然排在第一位,真心有点吃惊。。。【题目解析】建立一个容量为min(S1,S2)的背包,将每个房间的容量看成是一个个物品,将物品放入背包中,F[i]表示的是容量为i的背包的路径数。对于容量为奇数的房间,直接按01背包做,对于容量为偶数的房间,按分组背包做,每组有3个背包(0,1,0.5)。【代码如下】 1 #include <iostream> 2 #include <cstdio> 3 阅读全文

posted @ 2013-01-22 21:57 孤星ぁ紫辰 阅读(205) 评论(0) 推荐(0) 编辑

【ZOJ月赛】【二分查找】【A.Edward's Cola Plan】

摘要: 【题目来源】http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=4929【个人体会】这个题目是我在4小时50多分钟最后AC的,因为我一看这个题目时限是3S就有点心虚,怕为了搞这个题目而忽略了“可能”存在的水题,最后连这个题目也没搞出来。不过后来看到这个题目过的人数就发现了原来这个题目才是水题。。。【题目大意】唧唧歪歪半天,意思很简单。就是对于每个朋友,在Pi和Qi-M中选一个大的,然后求和。接着,给出T组询问,每次M的值都在变化,要求每组询问的和。【题目解析】根据Qi-Pi的差值进行排序,对于每组M,求出它在排序后 阅读全文

posted @ 2013-01-22 21:21 孤星ぁ紫辰 阅读(408) 评论(0) 推荐(0) 编辑

2013年1月19日

【Codeforces】【161Div2】

摘要: 【题目来源】http://www.codeforces.com/contest/263【A. Beautiful Matrix】【解析】模拟即可。按照题目的意思,找到1所在的位置(x, y),然后输出abs(x - 3) + abs(y - 3)。 1 #include <iostream> 2 #include <cmath> 3 4 using namespace std; 5 6 int X, Y; 7 8 int main() 9 {10 for (int i = 1; i <= 5; i ++)11 for (int j = 1, a; j <= 阅读全文

posted @ 2013-01-19 16:44 孤星ぁ紫辰 阅读(293) 评论(2) 推荐(0) 编辑

2013年1月13日

【树形依赖背包】

摘要: 【参考资料】徐持横--2009年国家集训队论文《浅析几类背包问题》 http://wenku.baidu.com/view/8ab3daef5ef7ba0d4a733b25.html 《背包九讲》 http://wenku.baidu.com/view/8b3c0d778e9951e79b892755.html【问题模型】http://www.rqnoj.cn/Problem_30.html 有树形依赖的背包问题。(引自以上参考资料内容)【泛化物品定义】考虑这样的物品,它没有固定的体积和价值,它的价值随着分配给它的体积的变化而变化。抽象成数学模型... 阅读全文

posted @ 2013-01-13 17:52 孤星ぁ紫辰 阅读(2403) 评论(3) 推荐(2) 编辑

2013年1月8日

【树形DP】【分组背包】【HDU1561】

摘要: 【题目来源】http://acm.hdu.edu.cn/showproblem.php?pid=1561【题目解析】有树形依赖的背包问题。 流传较广的是多叉树转二叉树的DP方法。首先运用“左儿子右兄弟”的方法将多叉树转化为二叉树。这样的话,DP的进程就更加容易。由于是二叉,那么只需要枚举分配给左儿子多少个点,分配给右儿子(右兄弟)多少个点即可。不过需要注意的是枚举给左儿子的时候记得给父亲留一个点,因为是依赖的;枚举给右儿子的时候可以全部给它,因为它和父节点是兄弟关系。 这里要解析的是直接多叉树DP,即直接在原有的树上面进行DP。从递归的角度来考虑:把根节点看成是一个容量为V... 阅读全文

posted @ 2013-01-08 20:22 孤星ぁ紫辰 阅读(440) 评论(0) 推荐(0) 编辑

【DP】【单调队列--多重背包】

摘要: 【01背包模板】 1 #include <iostream> 2 #include <algorithm> 3 4 using namespace std; 5 6 const int Maxv = 1001; 7 int N, V, F[Maxv]; 8 9 int main()10 {11 cin >> N >> V;12 for (int i = 1, w, c; i <= N; i ++)13 {14 cin >> w >> c;15 for (int j = V; j >= w; j --)16 F. 阅读全文

posted @ 2013-01-08 15:08 孤星ぁ紫辰 阅读(1832) 评论(0) 推荐(0) 编辑

2012年12月31日

【差分约束系统】【仍未AC】【Asia - Harbin - 2010/2011】【THE MATRIX PROBLEM】

摘要: 【题目描述】You have been given a matrix CN x M, each element E of CN x M is positive and no more than 1000, The problem is that if there exist N numbers a1, a2,..., aN and M numbers b1, b2,..., bM, which satisfies that each elements in row-i multiplied with ai and each elements in column-j divided by bj, 阅读全文

posted @ 2012-12-31 13:56 孤星ぁ紫辰 阅读(199) 评论(1) 推荐(0) 编辑

导航