Codeforces-157
又跪了。rank 37 去了。
Solution
A
找到第一个 0 删掉即可。
如果全部都是 1 肿么办呢?随便删个都可以啊。
B
首先肯定是要数位 dp 预处理的。这个还好做吧,一遍 dfs ,枚举这一位上是啥就可以了。
接下来可以直接搜,也可以跑一遍背包。限制很强的嘛,搜不会 T 的。
叫你写搜不写 dp,写挂了吧?写挂了吧?
我居然脑残地没有算组合数。都说了要 先组合再排列
的啊,你肿么就忘了啊?
C
先排序。然后枚举 LCM
是多少,枚举 LCM
的因数,可以利用 lower_bound
快速知道有多种选择的元素有多少个。再去去重就好了。
D
不会做。T_T
后来 orz 了 jzp 的神代码,差不多看懂了。
令 p(w,x,y)
表示 w
次操作后, x
这个位置的数比 y
这个位置的数大的概率。每次交换 s
和 t
,就先令 p(w+1,s,t) = p(w+1,t,s) = 0.5
,然后枚举其余每个位置 i
,令 p(w+1,i,s) = p(w+1,i,t) = 0.5(p(w,i,s) + p(w,i,t))
,令 p(w+1,s,i) = p(w+1,t,i) = 0.5(p(w,s,i) + p(w,t,i))
。然后 p
大部分是相同的,直接滚动更新就可以了。
E
这个脑残的每个点的链表直接转化为到根的路径嘛。
考虑 dfs 整棵树。和当前节点有共同数的点必定是若干棵子树上的,用 dfs 序维护。那么要维护 2 个操作:
- 添加/删除一条线段
- 求所有线段的总覆盖长度
这是一个很经典的线段树练手题。标记都不要下放的。
situation
看完 A 觉得水翻了,秒之。
B 一看要写数位 dp ,但感觉不难写,于是写去了。写了半天发现过不了 = = ,这样例真是精心手构啊。
感觉不能在一棵树上吊死啊,于是写 C 去。发现 C 好好写的,过掉。
然后看 E 有这么多人过,还是可写的啊,于是把 E 写掉。
这时还差 8min ,想把 B 过掉,但就是过不了,找不出哪里错了 T_T 。和主席二分发现超过 50 就要跪。
于是到最后调试发现 44 就会挂,原因是我没有考虑人与人之间的组合,每次要先选择若干个人,再令这若干人的幸运数码个数为多少,再算排列的,结果没有乘选择这若干个人的方案数了。
感觉 dp 就不会犯这种 SB 错误了嘛。
由于初始 rating 低,所以 rating 还是微涨到 2343(+19) 。
others
qmd 小号 sandytea
AK 虐场。
xhm 和 xlk 半开黑,lydshy 大开黑。看 lydshy B 的 code 你就知道了。两人每道题提交时间相差不超过 5min。
主席脑残 E 没想出来。
cwx 的 rating 居然没变化!
liouzhou_101
和 zcwwzdjn
(我真心怀疑这个 ID 是随手打的) 两人 C 都 FST 了,目测溢出了。
化悲痛为食欲!慢慢啃板栗中。