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

有三个字符串\(s_1,s_2,s_3\)和一个主串\(s\),每次操作改变一个\(s_i\)(插入或删除字符),每次操作完之后问\(s\)是否可以分成\(3\)个子序列正好是\(s_1,s_2,s_3\)。任意时候\(|s_i|\leq 250\)。

设\(nxt[x][i]\)表示主串上字符\(i\)在\(>x\)上第一个出现的位置。

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

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

插入最多改变\(251^2\)个\(f\)值,每次插入dp一遍多出来的\(f\)就行了。

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

Div.1 C Tree Generator™

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

Orz zsy碾标算

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

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

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

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

一段的\(d\)值就是将这一段分成两段后-前权值最大值

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

Div.1 D Abandoning Roads

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

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

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

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

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

Div.1 E Election Promises

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

先摆结论:\(SG(x)=\mathbb{mex}_{x\rightarrow i}SG[i]\),\(sum(x)=\oplus_{SG(i)=x}h_i\)。如果有一个\(sum(x)\neq 0\),先手必胜;否则必败。

感性证明:设第\(x\)层表示满足\(SG(i)=x\)的所有\(i\)。显然对第\(x\)个点进行降低权值操作时不会影响到\(>x\)的层,但会影响所有\(\leq x\)的层。

操作的时候可以将所有\(<x\)层的\(sum\)都变成\(0\),所以双方每次都会操作最大的层,因为小的层没有意义。而每一层是一个取石子游戏。

如果所有\(sum\)为\(0\),先手操作了第\(i\)层,那么操作后一定有\(sum(i)>0\)。后手就再次操作使得\(sum(i)=0\)。因为先手还可能影响了\(j<i\)的层,所以把这些层也变为\(0\)。这也是第一步的方案求法。

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

Codeforces Round #556 题解的更多相关文章

  1. Codeforces Round #556 (Div. 2) - C. Prefix Sum Primes(思维)

    Problem  Codeforces Round #556 (Div. 2) - D. Three Religions Time Limit: 1000 mSec Problem Descripti ...

  2. Codeforces Round #556 (Div. 2) - D. Three Religions(动态规划)

    Problem  Codeforces Round #556 (Div. 2) - D. Three Religions Time Limit: 3000 mSec Problem Descripti ...

  3. Codeforces Round #569 题解

    Codeforces Round #569 题解 CF1179A Valeriy and Deque 有一个双端队列,每次取队首两个值,将较小值移动到队尾,较大值位置不变.多组询问求第\(m\)次操作 ...

  4. Codeforces Round #556 (Div. 1)

    Codeforces Round #556 (Div. 1) A. Prefix Sum Primes 给你一堆1,2,你可以任意排序,要求你输出的数列的前缀和中质数个数最大. 发现只有\(2\)是偶 ...

  5. Codeforces Round #557 题解【更完了】

    Codeforces Round #557 题解 掉分快乐 CF1161A Hide and Seek Alice和Bob在玩捉♂迷♂藏,有\(n\)个格子,Bob会检查\(k\)次,第\(i\)次检 ...

  6. CFEducational Codeforces Round 66题解报告

    CFEducational Codeforces Round 66题解报告 感觉丧失了唯一一次能在CF上超过wqy的机会QAQ A 不管 B 不能直接累计乘法打\(tag\),要直接跳 C 考虑二分第 ...

  7. Codeforces Round #542 题解

    Codeforces Round #542 abstract I决策中的独立性, II联通块染色板子 IIIVoronoi diagram O(N^2 logN) VI环上距离分类讨论加取模,最值中的 ...

  8. Codeforces Round #556 (Div. 2) D. Three Religions 题解 动态规划

    题目链接:http://codeforces.com/contest/1150/problem/D 题目大意: 你有一个参考串 s 和三个装载字符串的容器 vec[0..2] ,然后还有 q 次操作, ...

  9. Educational Codeforces Round 19 题解【ABCDE】

    A. k-Factorization 题意:给你一个n,问你这个数能否分割成k个大于1的数的乘积. 题解:因为n的取值范围很小,所以感觉dfs应该不会有很多种可能-- #include<bits ...

随机推荐

  1. IIS7日志中时间与系统时间不一致的原因

    最近在分析web日志,发现IIS7日志中时间与系统时间不一致,即本该上班时间才产生的产并发访问日志,全部发生在凌晨至上班前. 本以为是系统时间设置错误,检查后一切正常.后查询资料,原来是这个原因: 日 ...

  2. MYSQl修改临时文件目录

    MSYQL在执行查询语句时报出以下错误: ERROR 3(HY000):Error writing file 'tmp/MY1yjZEI'(Errcode:28) 看了下/tmp所在目录的磁盘情况,发 ...

  3. catkin地址

    Source: git https://github.com/ros/catkin.git (branch: kinetic-devel)

  4. 如何将.crt的ssl证书文件转换成.pem格式

    如何将.crt的ssl证书文件转换成.pem格式 摘自:https://www.landui.com/help/show-8127 2018-07-04 14:55:41 2158次 准备:有一台安装 ...

  5. hdu 折线分割平面(递推)

    题解: 首先我们考虑直线的情况: 当n=1时原来的1个平面被分割成了2个: 当n=2时原来的2个平面被分割成了4个: 当n=3时原来的4个平面被分割成了7个: 也就是说F(n)=F(n-1)+n且n= ...

  6. ubuntu 14.04 下配置 Go 1.51

    1.最简单的直接的方式(不用设置GOROOT) - 下载 归档文件 并解压到  /usr/local/go/  - 设置环境变量 - 设置系统级的 gedit /etc/profile # 在最末尾加 ...

  7. java中jar打包的方法

    jar 应用 先打开命令提示符(win2000或在运行筐里执行cmd命令,win98为DOS提示符),输入jar -help,然后回车(如果你盘上已经有了jdk1.1或以上版本),看到什么:用法:ja ...

  8. 学习python3

    定义一个函数 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 (). 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定 ...

  9. Servlet 学习总结-1

    JavaWeb应用程序中所有的请求-响应都是由Servlet来完成的.Servlet是Java Web的核心程序,所有的网址(请求-响应)都交给Servlet来处理. Servlet在Web应用中被映 ...

  10. redis整理の持久化机制

    redis是一个支持持久化的内存数据库,也就是说 redis 需要经常将内存中的数据同步到磁盘 来保证持久化.redis 支持两种持久化方式,一种是 Snapshotting(快照)也是默认方式,另 ...