算法学社
記錄難忘的征途
posts - 141,comments - 220,trackbacks - 0
A题
一个01矩阵支持对某行操作循环左/右移,问最少操作多少次可以让某一列都是1。

算法分析:
   枚举每一列,然后对每一行二分求出该行所需操作数。

http://codeforces.com/contest/229/submission/2277260


B题
求一个图(V<100,000)的单源最短路,其中某些点在某些时段不能走。时段总数不超过100,000。

算法分析:
   对于时段要用map之类的东西预处理一下,然后直接求最短路即可。
   (本沙茶居然NC到用并查集在线处理 = =,根本就没有更新什么的,在线个P啊)

http://codeforces.com/contest/229/submission/2283323


C题
一个点数为1,000,000的完全图,其中有m条边是红色的,剩下的全是蓝色的。问由完全红色或蓝色组成的三元环有多少个。

算法分析:
   一开始的思路是在bfs树上统计,但是没有弄出来,其实就是对每个点的红/蓝边度数进行乘法就可以了.... 弱死....

http://codeforces.com/contest/229/submission/2289768


D题

将n(n<5,000)个数字按连续区间分组,前一个区间必须小于等于后一个区间,问最大的分组数。

算法分析:
   之前想了好几个方法(包括四边形不等式什么的),都需要数据结构维护,爆空间。。。
   今天想到利用决策单调性就可以直接搞成O(n^2)的。
   dp[i][j]表示前i个数字分成j组,最后一个区间的最小值。那么对于某个i,dp值一定随着j的变化单调变化。
   所以记录一下上一次的决策就可以了...

http://codeforces.com/contest/229/submission/2294687

E题

题意。。。。额。。。。。

做法就是。。。 把有“争议”的组拿出来DP(相当于n个组,选k个争议商品),DP[i][j]就是前i个,选择j个争议商品的拿到最大值的概率。
对于第i个,只有选争议商品和不选两种选择。和背包一样。

http://codeforces.com/contest/229/submission/2299791
posted on 2012-10-03 14:47 西月弦 阅读(370) 评论(0)  编辑 收藏 引用 所属分类: 解题报告

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理