Codeforces
文章平均质量分 55
MintGreenTZ
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #362 (Div. 1) B Puzzles
原题网址:http://codeforces.com/contest/696/problem/B 除了根节点,每个节点i的期望由三部分构成,1为该节点父亲的期望exp[fa[i]],2为访问节点i前等待其他节点的期望,由于其他兄弟和节点i被访问是等概率的,所以父亲的后代中除了i所在子树其他节点都有1/2的可能在i之前被访问,所以是(sum[fa[i]]-sum[i]-1)/2(其中sum[原创 2016-07-16 16:08:02 · 356 阅读 · 0 评论 -
Codeforces #377 (Div.2) E. Sockets
原题网址:http://codeforces.com/contest/732/problem/E 从小到大枚举每个插座,将插座不断/2在hash表中找是否有与之匹配的(贪心思想)。这里hash表里相同元素还有不同标号,我将这些标号再拉一次链,复杂度上就有保证了(一开始相同元素直接丢一块没拉链就T了)。(拉链套拉链WA了好几发。。)type rec=record v,i,ne原创 2016-10-20 18:28:47 · 373 阅读 · 0 评论 -
Codeforces Round #376 (Div. 2) D. 80-th Level Archeology
原题网址:http://codeforces.com/contest/731/problem/D 对于相邻的两行,我们可以求出合法的答案区间,然后对所有的区间取一下区间并。因为只有最后一次询问,所以对于区间并,可以用差分维护,那么区间并的总复杂度只要O(C)了。var a:array[0..1,0..1000050] of longint; cf:array[-1..1000050原创 2016-10-22 13:21:51 · 630 阅读 · 0 评论 -
Codeforces Round #376 (Div. 2) E. Funny Game
原题网址:http://codeforces.com/contest/731/problem/E 先求一遍前缀和,问题就变成了:一排数,两个人轮流取数,保证取的位置递增(且从第二个数开始取),每个人要使自己取的数的和尽量大,求在最优策略下取的max(先手和-后手和)。 用f[i]记先手取第i位先手的最优答案,g[i]记先手取第i位后手的最优答案,从后往前推,对于一个i,后手最大能取的肯定原创 2016-10-22 08:35:59 · 712 阅读 · 0 评论 -
Codeforces Intel Code Challenge Final Round C.Ray Tracing
原题网址:http://codeforces.com/contest/724/problem/C 如同做光学题时把物像翻折,这道题把点不断翻折,可得到一系列的点,就拿横坐标来说,翻折到得点横坐标依次为x,2na-x,2na+x,4na-x,4na+x,纵坐标对应的为y,2ma-y,2ma+y,4ma-y,4ma+y…… 现在我们要找的是原来的点和翻折的“像”中横纵坐标相等的点,就得到了一个二原创 2016-10-09 11:50:08 · 391 阅读 · 0 评论 -
Codeforces Round #367 (Div. 2) E. Working routine
原题网址:http://codeforces.com/contest/706/problem/E 用四向链表维护每个点上下左右分别是哪些点,每次修改只要修改矩形周围一圈,复杂度O(q(n+m))。 然而Pascal四向链表强行被卡T,改成双向链表(向右和向下)才卡过(估计下来此题Pascal有C++4倍常数左右)。 里面有好几处精妙细节,所以我不得不标记出来以免我以后注意不到。//四向原创 2016-08-14 16:04:15 · 367 阅读 · 0 评论 -
Codeforces Round #360 (Div.1) C.The Values You Can Make
原题网址:http://codeforces.com/contest/687/problem/C 用f[i][j][k]=0/1表示用前i种货币,付出j圆,j圆中又有k圆是否可行。 方程:f[i][j][k]=f[i-1][j][k] or f[i-1][j-c[i]][k] or f[i-1][j-c[i]][k-c[i]] 注意不要MLEvar f,g:array[-501..50原创 2016-08-10 22:42:27 · 350 阅读 · 0 评论 -
Codeforces Round #363 (Div. 1) C LRU
原题网址:http://codeforces.com/contest/698/problem/C 法一(cf上的题解):把问题倒过来想。假设从最晚访问的元素开始向前加元素,加到k个为止。求第i个出现的概率。这样就不同考虑从缓存区有文件出来了。 将20个元素压位,dp[mask]记录mask状态(由 0/1 表示的状态)出现的可能性。当1<< i在mask中为0,也就是第i个元素没有出现过时,原创 2016-07-20 20:40:11 · 542 阅读 · 0 评论 -
Codeforces Round #361 (Div. 2) D Friends and Subsequences
原题网址:http://codeforces.com/contest/689/problem/D对于每一个确定的l,随着r的增大,max ai 单调增,min bi 单调减,对于每一个l可以二分,对于区间最值可以RMQ,总复杂度nlogn。(一开始区间最值用线段树平添log)var pr1,pr2:array[0..200050,0..18] of longint; n,i,j,l,r,m:原创 2016-07-07 21:13:03 · 336 阅读 · 0 评论 -
Codeforces Round #362 (Div. 2) C Lorenzo Von Matterhorn
原题网址:http://codeforces.com/contest/697/problem/C 对于一个修改(u,v),值为w的路径,可以拆成3部分,u到根+w,v到根+w,lca(u,v)到根-w*2。每次求值也拆成3部分,将u到根,v到根,lca(u,v)到根的三条路径分别和前面记下来的付费路径扫一遍,答案就是calc(u)+calc(v)-calc(lca(u,v))*2。 这样做的原创 2016-07-16 15:16:08 · 364 阅读 · 0 评论 -
Codeforces Round #364 (Div. 1) B Connecting Universities
原题网址:http://codeforces.com/contest/700/problem/B 这道题有一个补集思想,对于一棵有根树,两点x,y之间的路径长可以看作两点之间的到根距离减去lca(x,y)到根的距离。假设根已经确定,要使两两的lca到根路径和最小,最小的情况是lca都是根节点,假如根节点的含特殊点最多的一棵子树所含特殊点<=k,那么肯定存在一种配对方案,使得每组点对之间的l原创 2016-07-26 22:18:13 · 328 阅读 · 0 评论 -
Codeforces Round #362 (Div. 1) C PLEASE
原题网址:http://codeforces.com/contest/697/problem/E 假设交换i次后key在中间的概率为f(i),在左边的概率为g(i),因为左右两边等价,在右边的概率也为g(i)。所以g(i)=(1-f(i))/2。 f(i)=1/2g(i-1)+1/2g(i-1)=g(i-1)=(1-f(i-1))/2=-1/2f(i-1)+1/2 有了递推公式f(i)原创 2016-07-16 17:44:37 · 317 阅读 · 0 评论 -
Codeforces Round #390 (Div. 2) D. Fedor and coupons
原题网址:http://codeforces.com/contest/754/problem/D 大意是n个区间选k个,使得所有区间交集最大。 显然区间交的开始点肯定为一个左端点,按照左端点排序,维护两个堆,堆里记区间右端点,一开始先塞到大根堆里,若小根堆不满k个,就把大根堆里的压到小根堆里去。当小根堆满k个就可以统计答案。途中注意删除过期的点。换元素换位置写错了,还有标号标错了,比赛时WA原创 2017-01-07 14:43:47 · 327 阅读 · 0 评论