2020.5.3

NOI2016 优秀的拆分

[链接]
想写SAM结果自闭了。

BZOJ3064 CPU监控

线段树历史最大值模板题。
注意到其实带维护历史最大值最大的问题时维护tag。
这里我们将tag维护成(a,b)(a,b)(a,b)表示当前这个tag会把max⁡(v+a,b)\max(v+a,b)max(v+a,b)。
那么加法就是(v,−inf)(v,-inf)(v,−inf),赋值就是(−inf,v)(-inf,v)(−inf,v)。
可以发现max⁡(v+a,b)\max(v+a,b)max(v+a,b)是一段常函数+一段一次函数,对于每个历史上的每个函数的最大值的函数就是max⁡(v+max⁡ai,max⁡bi)\max(v+\max a_i,\max b_i)max(v+maxai​,maxbi​)。
因此我们再维护一个历史最大tagtagtag为mtagmtagmtag,每次从父节点下传的时候将当前节点的tagtagtag与父节点mtagmtagmtag合并之后的tag对该节点的mtagmtagmtag更新即可。
考虑合并两个tag(a,b),(x,y)(a,b),(x,y)(a,b),(x,y)就是(a+x,max(b+x,y))(a+x,max(b+x,y))(a+x,max(b+x,y))。

BZOJ5028 小Z的加油站

根据辗转相除法gcd⁡(al,al+1,...,ar)=gcd⁡(al,al+1−al,..,ar−ar−1)\gcd(a_l,a_{l+1},...,a_r)=\gcd(a_l,a_{l+1}-a_l,..,a_r-a_{r-1})gcd(al​,al+1​,...,ar​)=gcd(al​,al+1​−al​,..,ar​−ar−1​)。
这样我们就可以维护带区间修改的区间gcd查询了。

HDU1963 Eat the tree

插头dp入门题。
学习链接

P5056 插头dp

插头dp——从入门到出门
这种超级大分类讨论简直是魔鬼。

[HNOI2007]神奇游乐园

这也是一道很模板的题目。
注意题目不要求每个格子都要走,因此要加一种情况。(害我调了半天)

2020.5.4

POJ 3133 Manhattan Wiring

比模板题简单一些。
因为是要求找两条不相交的路径,我们没必要用括号序列来描述。因此我们用一个3进制数0/1/2保存没有插头/A类插头/B类插头然后暴力分类讨论转移即可。
细节:注意转移到下一行的时候要判最高位的01状态…否则会RE…
于是我又调了半天

UVA10572 Black & White

这道题目让我领悟到了:插头dp≌超级无脑大暴力。
不得不说为什么ACMer多的地方题解都很短很短啊qwq。
最后找到了cdq的论文,写的很清楚,这里存一下:



P4537 [CQOI2007]矩形

一道挺好的题目,但是因为可以打表被玩坏了…
考虑贴着矩形的边框画一条轮廓线,那么在轮廓线内的就是黑色,在轮廓线外的就是白色。
考虑如何将轮廓线限制在边框上。注意到可以转化为从左上角的边框开始画,离开矩形边框的次数严格为2。因此我们让dp再加一维表示当前离开矩形边框的次数为多少即可。注意要减去全黑的情况。
实测跑起来极快,但是还是没打表快。

当然,你可以选择直接dfs在轮廓线上搜索。这样代码会好写很多。

按理来说我应该用上一道题的最小表示法改的…但是…
很抱歉,调不出来。
于是就找了网上唯一一份括号序列代码借鉴了一下。

P4158 [SCOI2009]粉刷匠

一眼题,不说了。
突然想起CSP day2T1我就是被这种东西给带偏的。

BZOJ3864 Hero meet devil

其实我之前做过这题。差点自己没做出来
这题算是dp套dp的经典入门题目吧。
如何将一个dp套在另外一个dp上面?我们通过一些特殊的hash技巧,将内层dp的结果压缩成一个状态作为外层dp的一维。
例如本题我们考虑设定内层为LCS dp数组,考虑将其结果压缩成一个状态进行dp。
注意到LCS dp中对于固定的iii,此时jjj与j+1j+1j+1相差最多为1且不下降。因此我们直接用二进制存储这个dp相邻位置的差值。
那么外层dp就定义为f[i][S]f[i][S]f[i][S],表示在ttt串中已经加入iii个字符使得内层dp结果为SSS的方案数。每次转移就在末尾加一个字符即可,变为f[i+1][trans[S][k]]f[i+1][trans[S][k]]f[i+1][trans[S][k]]。
trans[S][k]trans[S][k]trans[S][k]表示当前dp数组在ttt串加一个kkk字符变成的状态。显然这个可以预处理得到答案。
复杂度:O(T(∣S∣2∣S∣+m2∣S∣))O(T(|S|2^{|S|}+m2^{|S|}))O(T(∣S∣2∣S∣+m2∣S∣))。

BZOJ3591 最长上升子序列

感觉独立想出来还是有些困难。

回忆一下O(nlog⁡n)O(n\log n)O(nlogn)单调栈求最长上升子序列的过程,我们在栈中增加一个数,将它的lower_boundlower\_boundlower_bound的数替换掉。
考虑将这个dp当作内层dp

2020.5.5

「JOI 2016 Final」集邮比赛 2

为什么JOI Final会有这种签到题啊qwq。

「JOI 2016 Final」铁路票价

仔细想想,你会发现是一道拓补排序模板题。

hihocoder 1280 Rikka with Sequence II

感觉画风突变…
正解感觉很神仙,但是被初三的同学用O(2n/2∗n3log⁡n)O(2^{n/2}*n^3\log n)O(2n/2∗n3logn)过了。

首先很抱歉我dp学傻了想了半天O(n5)O(n^5)O(n5)dp发现状态始终与权值大小有关。
后来才开始想meet in meddle,很容易就能够想到O(2n/2∗n3log⁡n)O(2^{n/2}*n^3\log n)O(2n/2∗n3logn)的做法。但是我太不相信wls的电脑速度了,认为这种做法会T掉。
然后就偏到分治上面去了。感觉可以分治,但是怎么做都有点问题。

然而正解就是分治…

2020.5.8

摸底考试6科全炸,我太快乐了…

[Code+#3]白金元首与莫斯科

插头dp好题。
显然先考虑原地图答案该怎么求。我们可以将一个1×21\times 21×2的骨牌看作是一个向下/右的插头。
那么我们设f[i][j][S]f[i][j][S]f[i][j][S]为已经确定了前(i−1)×m+j(i-1)\times m+j(i−1)×m+j格子的插头状态,当前轮廓线状态为SSS的合法方案数。
dp即可。
现在考虑修改一个格子。根据套路显然我们会再设一个数组g[i][j][S]g[i][j][S]g[i][j][S]为已经确定了除了前(i−1)×m+j(i-1)\times m+j(i−1)×m+j格子的插头状态,当前轮廓线状态为SSS的合法方案数。(也就是说再倒过来跑一遍)
假设我们在(i,j)(i,j)(i,j)上将答案合并起来。考虑枚举SSS,显然jjj和j−1j-1j−1位不能够为111。注意到如果fff的SSS中一个位置有插头,那么ggg的SSS中一个位置也必须有插头。因此答案就是∑Sf[i][j−1][S]×g[i][j+1][S]\sum_{S}f[i][j-1][S]\times g[i][j+1][S]∑S​f[i][j−1][S]×g[i][j+1][S]。
复杂度:O(nm2n)O(nm2^{n})O(nm2n)

2020.5.10

[IOI2016]按数目填色(paint)

IOI2016签到题/
正着/倒着dp一遍合并起来即可。

[IOI2016]检测分子(molecules)

看成求方案数自闭了半天…
注意到题目满足u−l≥wmax−wminu−l≥w_{max}−w_{min}u−l≥wmax​−wmin​
显然大胆猜测一定存在一个解使得在排序后的数列编号连续。
没了。
证明看书。

[UER #1]DZY Loves Graph

在考虑下轮互测用:)

2020.05.11

[UR#1]外星人

2020.05.12

BZOJ3942 [USACO2015] Censoring S

KMP板题。考虑前缀函数只与前面的串的内容有关,因此删去末尾mmm个字符不用考虑前面的字符。
仍然按经典的KMP来做,唯一不同的就是SSS串需要我们用栈动态维护。
复杂度:O(n)O(n)O(n)

BZOJ2384 [CEOI2011]Match

还是以KMP算法本身入手。注意到一个数组的逆序对数组是唯一的,因此我们用这个来进行hash匹配。
于是我们在SSS串中用树状数组动态维护逆序对,因为KMP算法本质上是一个单调递增的双指针,因此修改/增加的均摊复杂度是O(n)O(n)O(n)。
复杂度:O(nlog⁡n)O(n\log n)O(nlogn)。

[UER #3]开学前的作文

刷水题愉悦身心:)
n,m≤3n,m\leq 3n,m≤3的情况特判,其余的找规律。

2020.05.13

[ARC060F] Best Representation

非常经典的Atcoder风格的题目。
首先显然这题和字符串循环节有关系,于是我们考虑讨论SSS的循环节对答案的影响。

  • 如果原串就为最佳表现串,那么答案显然为1,11,11,1。
  • 如果原串不是最佳表现串,考虑将字符串在非循环节的断点处划分开,显然我们只需且一次就可以满足题意。因此组数为222,方案数我们枚举位置判断这个点是否可以为切点即可。特殊情况:如果原串没有切点的话我们只能将其分为nnn组,此时显然原串的所有字符相同。

判断切点我们可以前后各做一遍KMP。
复杂度:O(n)O(n)O(n)

[ARC077F] SS

这是一道找规律题。
显然最终的结果可以由原串和原串长度最小的循环节拼接而成,接下来考虑找规律。
[自己手玩一会后发现]

设一个串为SSS,它的最短周期为TTT
S=aba,T=abS=aba,T=abS=aba,T=ab
aba∣aba−>abaab∣abaab−>abaababa∣abaababa−>abaababaabaab∣abaababaabaababa|aba->abaab|abaab->abaababa|abaababa->abaababaabaab|abaababaabaababa∣aba−>abaab∣abaab−>abaababa∣abaababa−>abaababaabaab∣abaababaabaab
即S∣S−>ST∣ST−>STS∣STS−>STSTS∣STSTSS|S->ST|ST->STS|STS->STSTS|STSTSS∣S−>ST∣ST−>STS∣STS−>STSTS∣STSTS。
由于要迭代无限次,我们只需要保留这个字符串的前一半。

注意到这个字符串类似斐波拉契排列,而斐波拉契增长极快,因此直接递推求解即可。

[Goodbye Jihai] 新年的促销

下轮互测题。

2020.05.14

[cg 14]「CCC 2016」合并饭团

随便区间dp

[cg 14]「JOISC 2014 Day3」电压

有点反感AT/JOI比赛的这一类题目,因为我智商不够(雾)。
通过各种找规律发现合法的边肯定是所有奇环的交,并且不再任何偶环上。
然后我们考虑建一颗dfs树

[cg 14] [SCOI2016]背单词

考虑用trie树辅助建树后贪心即可。

2020.05.15-16

AC自动机复习

P3808 【模板】AC自动机(简单版)
[POI2000]病毒
P3121 [USACO15FEB]Censoring G
P2292 [HNOI2004]L语言
P4045 [JSOI2009]密码
[AGC022E] Median Replace
P2414 [NOI2011]阿狸的打字机
CF86C Genetic engineering
P3082 [USACO13MAR]Necklace G
CF696D Legen…
CF163E e-Government
咕了的题:BZOJ4231 回忆树

2020.05.17

模拟考试

[cg 16]三千世界

首先很容易得到原式的递推方程。
容易得到一个矩阵快速幂的做法,这样是O(k3)O(k^3)O(k3)。
然后我们写成多项式的形式,多项式快速幂暴力卷积O(k2)O(k^2)O(k2)。

2020.05.18

前天晚上失眠,中午一事无成…

2020.05.19

复习一下午的SAM,仿佛SAM的奇怪的知识又增加减少了。

2020.05.20

[cg 16]Plain Asia

首先显然是一道状压dp的题目。
定义f[S]f[S]f[S]为当前已加入的点集为SSS,这些选中的点之间的边互相连通的方案数。
直接做显然很麻烦,一个熟练的OI选手肯定会想到使用容斥/反演。
那么我们再定义g[S]g[S]g[S]为使选中的点不一定连通的方案数。
有:
f[S]=g[S]−∑T⊂S且lowbit(S)=lowbit(T)f[T]g[S−T]f[S]=g[S]-\sum_{T⊂S且lowbit(S)=lowbit(T)} f[T]g[S-T]f[S]=g[S]−T⊂S且lowbit(S)=lowbit(T)∑​f[T]g[S−T]
注意lowbit(S)=lowbit(T)lowbit(S)=lowbit(T)lowbit(S)=lowbit(T)是为了防止算重复。
这样复杂度是O(3n)O(3^n)O(3n)的。
接下来我们考虑用FST优化,这里需要求逆。
详见这里我懒得写了。
复杂度:O(2nn2)O(2^nn^2)O(2nn2)

2020.05.21

[cg 16]芥川龙之介的河童

2-SAT被我忘得一干二净…
首先我们只知道我们确定了一行一列的方案数,我们一定能够得到原矩阵的一个解。
由于我们只能够填0/1两个数字,我们很容易想到2-SAT。
如何建立这些位置之间的限制关系呢?
通过打表我们可以发现一个位置(x,y)(x<n,y<m)(x,y)(x<n,y<m)(x,y)(x<n,y<m)的形式会是(−1)aAn,m+(−1)bAx,m+(−1)cAn,y+d(-1)^aA_{n,m}+(-1)^bA_{x,m}+(-1)^cA_{n,y}+d(−1)aAn,m​+(−1)bAx,m​+(−1)cAn,y​+d(a,b,c,da,b,c,da,b,c,d均为常数)。
因此我们枚举An,mA_{n,m}An,m​的取值,Ax,m,An,yA_{x,m},A_{n,y}Ax,m​,An,y​之间一定会有某些限制关系,连边即可。
tip:注意复习一下2-SAT的方案输出。

「NOI2017」游戏

其实是一道很模板的2-SAT问题。
首先d=0d=0d=0的情况就是模板。
接下来考虑d>0d>0d>0的情况,由于ddd很小,我们可以直接通过枚举这几个特殊位置选不选这个格子的第三种选择来使得原问题变为2-SAT问题。
具体来说我们可以通过类似i−>i+ni->i+ni−>i+n这样的连边来满足枚举的子集的要求,这样我们跑2d2^d2d次2-SAT即可。
复杂度:O(2dm)O(2^dm)O(2dm)

2020.05.23

codeplus7体验日。
上午彩蛋题跟同学开黑得了满分。
下午就自闭了。

「CodePlus #7」最小路径串

一直往BFS方向想结果花了半个小时,自闭了。

「CodePlus #7」蚂蚁

这其实是一道物理题目…
根据碰撞原理我们知道碰撞后两物体速度会交换,那么,如果我们希望两物体速度不交换,我们可以将其看成两物体速度不交换,路程交换。
根据动量守恒,我们知道最后从左边出去的物体的个数一定等于最开始向左的物体个数,右边同理,因此我们得到了所有蚂蚁的路程值,但现在来看不一定与蚂蚁初始编号一一对应。
但是我们知道蚂蚁的相对位置是不变的,因此我们依次按向左(小到大)向右(大到小)的顺序输出即可。

「CodePlus #7」神秘序列

「CodePlus #7」教科书般的亵渎

2020.05.24

NOI Online 3爆炸日
总结在此

2020.05.25

[UER #3]开学前的日历

首先你要弄清楚题目中的操作在在做些什么,通过打表等方式分析可以知道你每次可以在一个(x,y)−(n,m)(x,y)-(n,m)(x,y)−(n,m)的矩形内加一个斜着的杨辉三角,但是须要去掉顶部的大小为kkk的三角的值。
注意到所有的操作递推公式一样,因此可以一开始赋好初值之后最后一起递推。
但是对于一开始的初值须要修改O(qn)O(qn)O(qn)次,会T。
注意到kkk与k+1k+1k+1之间也有递推关系,因此我们这样做:

对于(u,v,k)(u,v,k)(u,v,k)操作,dp[u][v][k]++dp[u][v][k]++dp[u][v][k]++。进行完所有操作后,dp[u][v][k]+=dp[u−1][v][k+1]+dp[u][v−1][k+1]dp[u][v][k]+=dp[u−1][v][k+1]+dp[u][v−1][k+1]dp[u][v][k]+=dp[u−1][v][k+1]+dp[u][v−1][k+1]。进行完这一步后,dp[u][v][0]+=dp[u−1][v][0]+dp[u][v−1][0]dp[u][v][0]+=dp[u−1][v][0]+dp[u][v−1][0]dp[u][v][0]+=dp[u−1][v][0]+dp[u][v−1][0]。

复杂度:O(n3)O(n^3)O(n3)

2020.05.26

[BOI 2017] Plus Minus

跟某道AGC的题目比较类似。

2020.05.27-29

半期考试啊啊啊啊啊啊啊啊啊口阿口阿口阿口阿口阝可口阝可口阝可口阝可口阝可。


END

2020.5月做题记录相关推荐

  1. 2020.7月做题记录

    转眼就到了2020的下半年了-前方仍是一片茫然. 长期计划 prufer 序列 2020.07.02-2020.07.04 Problem Finished P2624 [HNOI2008]明明的烦恼 ...

  2. 2020.9月做题记录

    八月的做题记录因为是暑假所以鸽掉了. 离联赛真的不远了,要继续努力啊qwq- week -1 2020.08.30 2020.08.30 今天考试,修了20+次锅,修的我都没有心情做题了- 然后开始消 ...

  3. 2020.10月做题记录

    PS:本博客仅选择了一些作者认为有必要记录的题目进行记录. week -1 2020.09.28-2020.10.4 军训+国庆放假-就这样又废了一周- 2020.10.04 回来第一天完全没有状态- ...

  4. 2020.6月做题记录

    长期计划 SAM专题 date:2020.05.21-2020.06.01 基础类: Problem Finished P3804 [模板]后缀自动机 (SAM) √√√ SP1811 LCS - L ...

  5. BUUCTF:8月做题记录

    目录 [*CTF2019]otaku 真的很杂 greatescape [INSHack2019]INSAnity [INSHack2019]Sanity 很好的色彩呃? [DDCTF2018]流量分 ...

  6. BUUCTF:7月做题记录

    目录 [UTCTF2020]fileheader [BSidesSF2019]zippy [UTCTF2020]basic-forensics [MRCTF2020]Hello_ misc [WUST ...

  7. ctfshow 网络迷踪做题记录(1)

    ctfshow 网络迷踪做题记录(1) -- 新手上路 找桥的名字. 附件为一张海边图片. 百度识图为蜈支洲岛,得到地点名,但还需要具体桥的名字. 再用搜索引擎搜索关键字,就可以看到结果中的" ...

  8. 概率期望题(期望 DP)做题记录

    概率期望题(期望 DP)做题记录 P3830 [SHOI2012]随机树 难点在于第二问:生成树的期望深度. 不 wei zhuo 捏,设 \(dp_{i,j}\) 表示已经有了 \(i\) 个叶子结 ...

  9. 数数题(计数类 DP)做题记录

    数数题(计数类 DP)做题记录 CF1657E Star MST 我们称张无向完全图是美丽的当且仅当:所有和 \(1\) 相连的边的边权之和等于这张完全图的最小生成树的边权之和. 完全图点数为 \(n ...

最新文章

  1. FFmpeg被声明为已否决的解决方案
  2. 在Python中执行JavaScript代码并进行数据交换
  3. Oracle中各个命中率的总结及调优笔记整理
  4. java 全排列非递归算法_我的字典序全排列java程序,怎么改成非递归算法
  5. 基于python爬虫的加盟品牌数据挖掘研究与实现_基于Python 语言的Web 数据挖掘与分析研究...
  6. 【电路设计】1N系列二极管型号总结
  7. JNI引用溢出导致的重启问题分析
  8. 系统架构设计-企业信息化战略与实施 知识点
  9. HowTo 激活非常规方式安装的正版OEM Vista
  10. 大学计算机课要怎么学,大学计算机课学结
  11. 多台电脑共用一根网线如何设置宽带共享
  12. Inferior 1 (process 663) exited with code 0177
  13. css安卓手机位置偏差,完美解决移动端使用rem单位时CSSSprites错位问题_html/css_WEB-ITnose...
  14. 利用ARP的攻击与欺骗实现网络监控和管理(长角牛监控机)
  15. 月结6 - AR和AP重分类(Regroup)[FAGLF101/OBBU/OBBV]
  16. C语言 剧情版小游戏
  17. 基因大数据的集成分析
  18. 浅析安全启动(Secure Boot) —写得很好
  19. 5步搭建免费图床(CDN图床)再也不用担心网站网速与内存了
  20. 如何解决PS“不能完成请求,因为意外的遇到文件尾”?

热门文章

  1. 苹果屏幕上的悬浮的home键(小圆点)在哪里设置出来
  2. cp是什么意思?网络语言cp解释
  3. 我的世界服务器指令修复耐久,我的世界修复武器耐久度指令 | 手游网游页游攻略大全...
  4. 洲际酒店集团选出一批国内度假胜地智选假日酒店
  5. 【php】 PHP数据库实例
  6. [流畅的Python][4][文本和字节序列]
  7. C# winform动态画条形统计图
  8. inotify事件监控
  9. 教育培训行业软文营销,网络软文推广营销成教
  10. Transformer一统江湖:自然语言处理三大特征抽取器比较