Loading [MathJax]/jax/output/CommonHTML/fonts/TeX/AMS-Regular.js

Codeforces Round #556 题解

Codeforces Round #556 题解


Div.2 A Stock Arbitraging

傻逼题

Div.2 B Tiling Challenge

傻逼题

Div.1 A Prefix Sum Primes

傻逼题,先放2,1然后放完2然后放完1

Div.1 B Three Religions

有三个字符串s1,s2,s3s1,s2,s3和一个主串ss,每次操作改变一个sisi(插入或删除字符),每次操作完之后问ss是否可以分成33个子序列正好是s1,s2,s3s1,s2,s3。任意时候|si|250|si|250

nxt[x][i]nxt[x][i]表示主串上字符ii>x>x上第一个出现的位置。

f[x][y][z]f[x][y][z]表示三个串分别匹配到x,y,zx,y,z需要主串的最短长度。

那么这个可以O(1)O(1)转移,只要枚举拼起来的最后一个字符就行了。

插入最多改变25122512ff值,每次插入dp一遍多出来的ff就行了。

https://codeforces.com/contest/1149/submission/53513066

Div.1 C Tree Generator™

有一个合法的括号序列,每次交换两个括号(保证还是合法)求这个括号序列对应的树的直径

Orz zsy碾标算

直径相当于选一段,匹配完括号以后剩下最多的括号数

然后(因为zsy太强了)等于这一段分成两段后面的权值和-前面的权值和最大值,其中左括号权值为1,右括号为-1,证明显然

所以在线段树上维护一堆东西。。。就行了

要维护的:最大/最小前/后缀和,最大前/后缀的dd值,序列整体dd值,权值和,答案

一段的dd值就是将这一段分成两段后-前权值最大值

https://codeforces.com/problemset/submission/1149/53591504

Div.1 D Abandoning Roads

我是sb。。考场上读错题了。。。

有一张图只包含边权为a,b(a<b)a,b(a<b)的边。对于每个点pp求一个最小生成树满足11pp距离最小。

显然最小生成树会先取完aa,那么先预处理出aa边组成的联通块。11pp的最短路边权为bb的边一定连接两个不同的联通块,而且都会走到一个之前没走过的联通块。那么可以状压所有联通块,最短路的同时记一下走过哪些联通块了,走bb边时判一下新的联通块有没有走过。点数是O(2nn)O(2nn)级别的。

可以发现如果一个联通块点数33,那么在这个联通块先走bb边出去再走bb边回来是没有意义的,因为这样至少走2b2b,而这个联通块内部最长也就最多2a2a。所以不需要记这些联通块,点数降到O(2n/4n)O(2n/4n)就可以直接做了。

https://codeforces.com/contest/1149/submission/53592086

Div.1 E Election Promises

有一张有向无环图,每个点有权值。双方轮流操作,每次操作降低一个点的权值然后任意修改这个点所有后继的权值。不能操作者输。判断先手胜负,如果先手胜输出第一步走的一个可行方案。

先摆结论:SG(x)=mexxiSG(i)sum(x)=SG(i)=xhi。如果有一个sum(x)0,先手必胜;否则必败。

如果所有sum0,先手操作了点i,那么操作后一定有sum(SG(i))>0。后手就再次操作使得sum(i)=0。操作方法就是找到最大的i满足sum(i)>0,然后可以将所有sum修改为0

https://codeforces.com/contest/1149/submission/53593317

posted @   菜狗xzz  阅读(1000)  评论(0编辑  收藏  举报
























































点击右上角即可分享
微信分享提示