混沌DM

DM Hunter

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2013年1月21日

摘要: http://codeforces.com/problemset/problem/264/C题目意思: n个小球排成一列,每个小球有两个属性:颜色ci,权值vi 然后有q次询问,每次给出两个整数a和b 求一个权值最大的小球子序列: 一个序列的权值这样计算: 当一个小球前面有小球,且颜色相同时,权值为a*vi 否则为b*vi 序列的权值为所有小球权值之和。 长度为0的序列权值视为0,所以本题答案至少为0很容易写出状态转移方程dp[i]表示以小球i结束的序列的最大权值dp[i] = max( max(dp[j] + (ci == cj?a:b)*vi) (0<=j<... 阅读全文
posted @ 2013-01-21 20:07 混沌DM 阅读(473) 评论(0) 推荐(0) 编辑

摘要: http://codeforces.com/problemset/problem/264/B题目意思 给定一个上升子序列,要你求一个最长子序列的长度,满足任意相邻两项均不互质。首先注意一下,长度至少为1,而且当长度为1时,序列 1 也是可以的。虽然1与任何数都互质,但长度为1的序列没有任意相邻两项,不过好在这组数据一开始就在测试数据中。不然这题的hack就要精彩很多了。首先很容易想到n^2的DP,dp[j]表示以第j个数结尾的序列的最长长度。 dp[j] = max(dp[k] + 1, 0<=k<j && gcd(num[k], num[j])>1)大量的工 阅读全文
posted @ 2013-01-21 19:36 混沌DM 阅读(472) 评论(0) 推荐(0) 编辑

摘要: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3684题目意思是: 给定一个n个节点的树,边有长度和权值。然后求一个最小值值Power,当把权值小于等于Power的边全部破坏时,所有的叶子节点都和中心点不连通。 题目保证树的中心唯一。首先两次dfs求出树的直径,然后在这条路径上找到中点。从任意点进行第一次dfs求得数的直径的一个端点,从这个端点dfs求得另一个端点然后遍历直径,找到最接近直径一半的点就是中点。然后以中点为根,进行树形DP(dfs)对于一个点point来说,所需要的最小Power为,Min(Max(所.. 阅读全文
posted @ 2013-01-21 19:12 混沌DM 阅读(619) 评论(0) 推荐(0) 编辑

摘要: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3682题目意思: 有两种球迷,分别有s1、s2人,然后有n个广场,每个广场ki个人。每个广场要么只有一种球迷,要么两种球迷数量相等。问安排数量注意题目有一个比较重要的条件 Sum(ki) == s1 + s2,漏看这个条件的话,此题难度就#¥@¥%#%……@……¥有了这个条件,我们可以知道每个广场都是满的。我们考虑人比较少的那个球迷,取s = min(s1, s2)每个广场要么全部分给该类球迷,要么不分给该类球迷,如果该广场能容纳的人数为偶数,则亦可以选择一半为该球迷。. 阅读全文
posted @ 2013-01-21 18:50 混沌DM 阅读(378) 评论(0) 推荐(0) 编辑

摘要: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3681题目意思稍微有些抽象,不好叙述。这里直接讲方法首先O(sqrt(n))预处理出n的所有约数。对于一个数k,至多需要(k+1)/2个人而对于k的每一个约数a(a>1),则需要ans[a] * ans[k/a]人,当然取一个最小值。按n的约数从小到大DP即可,。代码如下: 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algor 阅读全文
posted @ 2013-01-21 18:39 混沌DM 阅读(335) 评论(0) 推荐(0) 编辑

摘要: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3685这道题刚开始想了其他很多思路,包括DP什么都没有头绪。当时还有40多分钟,就想要专心过这题了。然后就写了复杂度为O(2^n)的程序,算出了前25个之后,发现从第15个开始,答案不是0就是1。分析一下可以发现,改变正负号不改变结果奇偶性,当1 ~ n中奇数为奇数个时,答案就为奇数,不然就是偶数。可以计算得到1^3 + 2^3 + ... + n^3 = n^2 * (n+1)^2 / 4如果n>=15时,假如答案不是0就是1这点成立,等价于从1^3, 2^3 , 阅读全文
posted @ 2013-01-21 17:54 混沌DM 阅读(464) 评论(0) 推荐(0) 编辑