codeforces
拔光祖国小草
存放一下做的题。
展开
-
Codeforces Round #413 (Div.1 + Div. 2) B. T-shirt buying
是一个模拟水题,但是写的时候WA了无数次最后改了还是TLE,而且很麻烦。。需要锻炼啊。先给上我TLE的版本。留着以后思考为什么TLE我原来的大体思路是:开三个数组分别代表1 、2 、3的三种衣服,排序。顾客来了从左往右扫。然后用t1 t2 t3分别代表之前顾客已经扫到的位置。是否卖给顾客这条衣服时,用一个used数组记录之前是否卖过,没有则可以,卖了继续往下扫直到没有。下一个顾客来了从原创 2017-05-12 14:29:32 · 322 阅读 · 0 评论 -
codeforces 602 E. Kleofáš and the n-thlon (概率dp)
题意:有nnn个人进行了mmm场比赛,告诉你了自己的每场排名,并且一场比赛中不会有并列,问最后自己的期望排名 题解:很明显期望dpdpdp,dp[i][j]表示进行了i场比赛得分为j的期望人数dp[i][j]表示进行了i场比赛得分为j的期望人数dp[i][j]表示进行了i场比赛得分为j的期望人数那么转移就是dp[i][j]=(∑j−1k=j−mdp[i][k]−dp[i][j−a[i]])/(m...原创 2018-05-03 07:45:08 · 210 阅读 · 0 评论 -
codeforces 908E(概率dp)
题意:初始一个空串,有Pa/Pa+Pb的概率在后加a,有Pb/Pa+Pb的概率在后加b,问最后的期望的ab子串个数(ab可以不连续)我是个概率dp弱智,该题证明出自这位句句 所以我补的解法就是他的解法了 希望有朝一日我也能这么强啊#include <iostream>#include <algorithm>#include <queue>...原创 2018-02-25 23:15:55 · 273 阅读 · 0 评论 -
codeforces 940E(单调队列+dp)
题意:给你n个数字,要求将连续的数字划分成x组,每组的和为Sumi,每组长度即数字个数为Li,但每组前 Li/c(向下取整)小的数不计入总和,求最小的和 ∑sumi 明显的dp,dp[i]表示前i个数取最优分组的结果 最容易想到的是n2的,也必然是TLE的解法(因为n是1e5) dp[i] = min(dp[j] + sum[i]-sum[j] - sum(Minsum((i-j)/c...原创 2018-02-25 21:49:46 · 734 阅读 · 0 评论 -
codeforces 939E (三分)
题意:1 、往集合里面加一个数,这个数比集合里所有元素都大 2、取一个子集使得 (子集中最大数MAX - 子集所有数的平均值) 最大题解:emm不太会,看题解才发现是个凹性函数,可以用三分求解。 因为加入的数一定是最大数,贪心的想一定取这个数+一些较小的数 而三分的特点是尽量取较小的数,写一写可以发现是个三分还有看到一个坑是(当三分查找的元素只剩两个时,不管大小,他只会默认左...原创 2018-02-19 20:42:13 · 333 阅读 · 1 评论 -
codeforces 617E(莫队)
看了UESTC b站的算法小课堂学习的算法(其实是拖了很久每次看都学不进去)但是自己对于莫队算法的理解还是很浅吖。#include <iostream>#include <algorithm>#include <queue>#include <stack>#include <cstdio>#include <...原创 2018-02-11 21:21:40 · 290 阅读 · 0 评论 -
codeforces 918C(思维)
题意:一个包含()?三种字符的字符串,()符合 ,若s符合,则(s)也符合,若t符合,st也符合,问有多少对 (i,j)满足条件贼菜啊。。 题解:这题和893D很像,都是预留一个上下界,判断是否满足条件,见代码。#include <iostream>#include <algorithm>#include <queue>#include ...原创 2018-02-13 20:18:48 · 178 阅读 · 0 评论 -
codeforces 918D(组合游戏+记忆化搜索)
题意:在给定的一个有向无环图上,两个人分别从一个点出发,两人轮流从当前点沿某条边移动,要求经过的边的权值不小于上一轮对方经过的权值直到某一方不能移动。求一个n*n的胜负表可能是我没学过组合游戏的关系?当时dfs不知道怎么转移 题解: dp[x][y][c],表示先手在x,后手在y,上一次经过边权为c的胜负状态(1胜0负),此时从x往后走,假设从x->u,边权为v,要求v>=...原创 2018-02-13 21:16:35 · 283 阅读 · 0 评论 -
codeforces 899 E - Segments Removal(链表模拟)
题意:给你n个数,每次删除一段相同的数量最多的数,若有多个,则删除最左边。题解:看了一下别人的代码发现可以用链表模拟一下,然后放进优先队列里跑一跑。 对于每一个删除了的就vis[true],有一种删除以后需要合并的情况,在队列里不是很好找左右两个区间,那么我们把右边的加到左边上去,右边的加一个使用过的标记,然后再扔进去新合成的左边,这样可以保证此时左边的一定是覆盖之前的(因为有一个vis标记)#i原创 2017-12-24 21:55:39 · 463 阅读 · 0 评论 -
Codefores 460C-Present(二分+贪心)
在打哈尔滨理工大学个人训练赛做到的题目。觉得挺不错的,挺锻炼思维的。题目大意:给定n朵花,每朵花的高度不一样,还有m天,有一种神奇的水可以使相邻的w朵花每天长高1,每天只能浇一次,问最矮的花最后最高能多少。遇到这种最矮的最高问题,应该很快想到二分才对,但是又没想到。然后想到二分应该怎么继续呢。那肯定是判断每朵花能不能达到x,这时就应该从左往右扫了。因为是每一朵,而根据这个相邻w,前原创 2017-06-26 21:59:06 · 455 阅读 · 0 评论 -
Codefores Round #419 (Div.2) - C. Karen and Game(暴力模拟)
一定要记录一下这道题,因为这是我第一次一点没看题解把一个题AC了。虽然中间WA了一次,看了下错误样例才知道自己错哪(不过确实挺坑的),很兴奋,老泪纵横。题目大意,给你一个n*m的矩阵,上面有很多数字,这些数字是每次在矩阵某一行或者某一列同时加上1得出的和,必须是一整行或者一整列加1,问你能不能推出这个过程,如果可以输出一共需要的次数以及任意一种方法,不行则输出-1。依我看来这道题是暴力模拟原创 2017-06-26 19:35:25 · 367 阅读 · 0 评论 -
Codeforces 767C Garland (dfs)
题意:有一棵树,每个节点都有一个权值,需要分成相等的三部分,能则输出剪下的结点否则输出-1(有一个坑是不能剪下根节点)题解:算是看了大佬的解法,首先判断是否sum为3的倍数。 dfs子节点的权值累加,如果找到一个sum/3,记录该结点然后将这个结点清0,因为有一种情况是某一个父节点和子节点都可能是sum/3,否则会出错。 找到2个则输出否则输出-1。代码:#include #i原创 2017-05-18 21:23:02 · 333 阅读 · 0 评论 -
CodeForces - 557D Vitaly and Cycle (二分图染色判定)
题意:给定一个无向图,问最少添加多少条边可以得到一个奇圈以及其方案数。 题解:是个简单的二分图染色判定 1:一条边没有的时候1:一条边没有的时候1:一条边没有的时候 2:每个联通分量至多只有2个点时binomn+12k2:每个联通分量至多只有2个点时binomn+12k2: 每个联通分量至多只有2个点时 binom {n+1}{2k} ...原创 2018-05-10 21:04:04 · 251 阅读 · 0 评论