A

B

如果 11 后出现了 00 就不行。

C

枚举走几段。

横竖可以分开算。

一定是:除了费用最小的都是走长度 \(1\),费用最小的包揽剩下的。

D

\(c\cdot lcm(a,b)-d\cdot gcd(a,b)=x\)

\(c\cdot \dfrac{a}{gcd(a,b)}\cdot \dfrac{b}{gcd(a,b)}=\dfrac{x}{gcd(a,b)}+d\)

\(gcd(a,b)\) 一定为 \(x\) 的因数,枚举 \(x\) 的因数。

把 \(\dfrac{\dfrac{x}{gcd(a,b)}+d}{c}\) 分解成两个互质的数的方案数累加进答案里去。

而分解成两个互质的数,就是对每一个质因子都选择去两边中的一边,有 \(2^{cnt}\) 中,\(cnt\) 是质因子个数。

而这个 \(2^{cnt}\) 可以用筛法的方式预处理。

E

给出俩字符串 \(a,b\),\(x\) 是 \(a\) 的子串,\(y\) 是 \(b\) 的子串;

\(x,y\) 可以用类似归并排序的方法把 \(x,y\) 的字符排到一个字符串里,使得 \(x,y\) 各自的字符相对顺序不变。

求和:对于所有 \((x,y)\) 的所有归并方法排得的字符串,有多少个相邻字符不同的字符串?(不同 \((x,y)\) 得相同结果只算一次)

定义 \(dp[i][j]\) 为对 \(a[1\sim i],b[1\sim j]\) 的后缀组合的求和。

意思就是 \(a[1\sim i]\) 的所有后缀和 \(b[1\sim j]\) 的所有后缀组合起来的答案的和。

最终输出 \(\sum\sum dp[i][j]\).

发现还不够,升一维:\(dp[i][j][0]\) 是在归并中以 \(a[i]\) 结尾的,\(dp[i][j][1]\) 是以 \(b[j]\) 结尾的。

若 \(a[i]\ne a[i - 1],dp[i][j][0]+=dp[i-1][j][0]\),但这种情况要注意:可能我们 \(a\) 的后缀选的是 \(a[i\sim i]\),所以我们要加上这种只选了 \(a[i]\) 的情况。

这种情况又分两种:① 如果 \(a[i]=b[j]\),这种情况不存在,因为 \(a[i]\) 接不了;② 否则就是查询 \(b[1\sim j]\) 中有多少个后缀相邻的不相等,这个也可以预处理。

若 \(a[i]\ne a[i - 1],dp[i][j][0]+=dp[i-1][j][1]\).

\(dp[][][1]\) 的计算同理:

若 \(b[j] \ne a[i],dp[i][j][1]+=dp[i][j-1][0],dp[i][j][1]+=a[1\sim i]\) 有多少个后缀相邻不相等。

若 \(b[j]\ne b[j - 1],dp[i][j][1]+=dp[i][j-1][1]\)

F

有多少种方式删掉一些边,使得树分成的连通分支的直径都 \(\le k\)?

随机推荐

  1. P4913【黄】

    这题好像可以用线段树什么的高级做法来做,但我感觉我这个简单做法不管是时间还是空间都和那些复杂的做法差不了太多.重点是很优雅,思路非常简单,而且代码很短,用OOP思想写成的代码可读性极高,不用注释估计都 ...

  2. spring启动流程 (1) 流程概览

    本文将通过阅读AnnotationConfigApplicationContext源码,分析Spring启动流程. 创建AnnotationConfigApplicationContext Annot ...

  3. 在Windows 版的Chrome中切换标签页

    按住Ctrl+tab键之后使用page up/ page down键左右移动!

  4. bootstrap : 解决使图片全屏显示有空白边距的问题

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="utf-8 ...

  5. Python学习之十五_不同类型数据库表内容比较

    Python学习只十五_不同类型数据库表内容比较 前言 最近学习力总结了很多Python相关的内容 本次想继续学习一下不同数据库之间的数据比较. 这样理论上可以极大的缩减不同数据库测试成本. 感谢Py ...

  6. [转帖]perf学习-linux自带性能分析工具

    目前在做性能分析的事情,之前没怎么接触perf,找了几篇文章梳理了一下,按照问题的形式记录在这里. 方便自己查看.   什么是perf? linux性能调优工具,32内核以上自带的工具,软件性能分析. ...

  7. [转帖]《Linux性能优化实战》笔记(六)—— Linux 软中断与对应故障分析方法

    中断是系统用来响应硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理程序来响应设备的请求. 一. 为什么要有中断 举个生活中的例子,让你感受一下中断的魅力.比如说你订了一份 ...

  8. ARM下KVM虚拟化的损耗验证--redis

    ARM下KVM虚拟化的损耗验证 摘要 看Windows 上面的 Workstation的虚拟机的 网络层的延迟特别高. 突然想之前统计都是直接在本地验证的, 只考虑了虚拟化CPU的性能损耗 没有考虑虚 ...

  9. [转帖]陈巍谈芯:NLP里比BERT更优秀的XLNet长什么样?

    https://zhuanlan.zhihu.com/p/447836322 ​ 目录 收起 一.XLNet的优势 1)独得AR与AE两大绝学 2)集成了Tansformer-XL 二.XLNet的结 ...

  10. 万能shell 简单查看已存在日志所有的启动记录

    程序将日志 自动打包成了 gz 文件,  今天突然想查查所有的日志有没有相关关键字. 第一步解压缩所有的日志 cd 到相关目录 for i in `ls` ; do gzip -d $i ; done ...