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
西月弦 阅读(379)
评论(0) 编辑 收藏 引用 所属分类:
解题报告