A

特判全是 \(2\),对于有 \(1\) 的情况把 \(1\) 放到第二个和最后。
时间复杂度 \(O(n)\).
代码: 76492031

B

考虑只有一次询问的情况,有一个 \(O(n^3)\) 的 DP,设 \(f[i][j][k]\) 表示三个串分别匹配到 \(i,j,k\),大串最短匹配到哪。转移形如 \((i,j,k)\rightarrow (i+1,j,k),(i,j+1,k),(i,j,k+1)\).
有修改相当于给某一维 \(+1\) 或 \(-1\),显然影响到的 \((i,j,k)\) 只有 \(O(L^2)\) 个,直接改即可。(\(L\) 为 \(A,B,C\) 串长度)
时间复杂度 \(O(n|\Sigma|+qL^2)\).
代码: 76579067

C

显然问题就相当于选择三个数 \(i,j,k\) 满足 \(0\le i\le j\le k\le n\),最大化 \(s_i-2s_j+s_k\) (\(s\) 为前缀和),修改的形式为区间加或减 \(2\).
线段树经典题。直接线段树维护 \(s_i\), \(-s_j\), \(s_i-2s_j\), \(-2s_j+s_k\), \(s_i-2s_j+s_k\) 的 \(\max\) 即可。
时间复杂度 \(O(n+q\log n)\).
代码: 76672305

D

由于边权只有两种,我们需要考察的状态显然是仅加入 \(a\) 边之后的连通状态。
考虑一条从 \(1\) 到 \(p\) 的路径,为了满足最小生成树的限制,我们仅仅需要满足路径上不出现“从某个连通块出来又重新进去”这种事情。
有一个显然的状压 DP,设 \(f[s][u]\) 表示经过的连通块集合为 \(s\),现在处于点 \(u\). 其实严格来讲这是一张图,需要在上面跑最短路(因为需要处理 \(s\) 相同 \(u\) 在同一连通块内的转移)。
问题是连通块个数太多了。一个很自然的想法是大小为 \(1\) 的连通块可以用一些手段缩去,但这还不够。事实上,大小不超过 \(3\) 的连通块都是不需要记录进 \(s\) 中的。因为如果从这个连通块里出去再回来至少要花费 \(2b\) 的代价,而这个连通块内任何两点的距离不超过 \(2a\).
因此 \(s\) 只需要记录大小 \(\ge 4\) 的连通块是否经过过的状态。这样的连通块最多只有 \(\frac{n}{4}\) 个。
时间复杂度 \(O(2^{\frac{n}{4}}m)\).
代码: 76698798

E

结论:设 \(f(u)=\text{mex}_{v\in out[u]}f(v)\),则可以把每个点表示为 \(a_k\omega^{f_k}\),就相当于一个只有第 \(f_k\) 个位置为 \(a_i\) 其余都为 \(0\) 的数组(这里的 \(\omega\) 在博弈论里还有一些其他的神奇意义),则先手胜当且仅当对于每个位置,所有的点的异或和均为 \(0\) (即 \(\forall i,\bigoplus_{f[u]=i}=0\)).
证明详见官方题解。
代码: 76707873

Codeforces 1149 题解相关推荐

  1. Dominated Subarray[codeforces 1257C]题解

    Dominated Subarray[codeforces 1257C] CF-1257C(Dominated Subarray) 题目 输入 输出 题目大意 样例输入 样例输出 CF-1257C(D ...

  2. Codeforces 833B 题解(DP+线段树)

    题面 传送门:http://codeforces.com/problemset/problem/833/B B. The Bakery time limit per test2.5 seconds m ...

  3. Codeforces 1344 题解

    A 假设所有的 \((i+a_i)\) 模 \(n\) 意义下构成排列则答案为 YES,否则为 NO. 时间复杂度 \(O(n)\) 或 \(O(n\log n)\). 代码: 79150268 B ...

  4. Codeforces 1314 题解

    这场整体质量感觉可以算 2020 年度(目前为止)最垃圾. A 按数值从小到大扫描,维护一个优先队列,每遇到一个数加入队列,每次数值发生 \(+1\) 时弹掉队列中价值最大元素,然后把此时队列中所有元 ...

  5. Codeforces 1338 题解

    A 对于每个 \(i\) 我们求出 \(b_i\) 表示 \(i\) 这个数最少要增加多少(\(\max^i_{j=1}a_j-a_i\)),答案等于最小的 \(k\) 使得 \(2^k-1\ge \ ...

  6. Codeforces 1025 题解

    A 若 \(n=1\) 则答案为 YES,否则答案为 YES 当且仅当存在两个相同的字符. 时间复杂度 \(O(n)\). 代码: 76484733 B 求出所有 \(\text{lcm}(a_i,b ...

  7. Codeforces 1188 题解

    A 首先对于 A1 题,可以加减任意实数,结论是答案为 YES 当且仅当没有度数为 \(2\) 的点.必要性显然,充分性通过下面的构造来证明. A2 题的构造:考虑随便找一个叶子节点为根,记为 \(r ...

  8. codeforces #1 题解

    codeforces1A 题目链接:http://codeforces.com/problemset/problem/1/A 题意:给定一个n*m的矩形,然后给一个a*a的地板,求最少需要多少地板可以 ...

  9. Codeforces #635题解

    Codeforces round 635赛后解题报告 A. Ichihime and Triangle 首先这是一道几何题 那么我们知道,在此题中, x , y , z x,y,z x,y,z 满足 ...

最新文章

  1. Android 优秀UI控件 ---- FlowingDrawer
  2. php怎么把文字改成黑色,微信如何调成黑色模式?
  3. 使用flink Table Sql api来构建批量和流式应用(3)Flink Sql 使用
  4. Qt QObject::connect: Parentheses expected错误原因
  5. 正则表达式的非捕获性分组
  6. 如何定制Activity的标题栏
  7. nanopc t3开发板系统烧录_基础教程18 定制 Arduino 系统
  8. Atitit golang开发环境搭建 目录 1. 编辑helo.go 1 1.1. 调试编译 1 2. Ide选择liteide 2 3. 问题解决 2 4. 附录 2 4.1. Go语言标准库常
  9. 在大多数人转向.NET和JAVA阵营的时候,我正在悄悄地向古老的COBOL招手
  10. 含本土测量软件的Q-Vision+Kvaser CAN/CAN FD/LIN总线解决方案
  11. Oracle简单SQL语句(详细!!!)
  12. 分形理论中的分维解析
  13. 电脑版微信防撤回大全
  14. 基于php+mysql的 医院病房管理系统
  15. Linux目录一个点.和两个点..的区别
  16. 贝壳网webpack案例
  17. js验证固定电话(座机)、手机号码
  18. 台式计算机内存是什么问题,如何解决台式机上内存不足的问题
  19. 4个字母的排列组合c语言,1,2,3,4四个数字有多少种排列组合,是怎样的
  20. SEE 中的数据结构及之间的关系

热门文章

  1. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170407
  2. html video 设置进度条不可拖动_PHP大文件切割上传并带上进度条功能,不妨一试...
  3. Delphi的笔记整理(一)
  4. 【转】C# 中文URL编码
  5. Delphi中的Rtti函数
  6. wireshark 与 tcpdump抓包
  7. python中 .sort()、 sorted()和 .reverse() 、reversed()的区别
  8. BugkuCTF-Misc:Linux2
  9. 为什么百度网盘显示2055G下载时却显示容量不足
  10. 使用u-boot的tftp下载功能烧写程序到Nand Flash ——韦东山嵌入式Linux学习笔记09