摘要:
"A Aragorn's Story" 直接套 "线段树+树剖" 板子 代码: cpp // Created by CAD on 2019/8/12. include define lson (p 1; build(l,m,lson),build(m+1,r,rson); d[p]=d[lson]+ 阅读全文
摘要:
其实树状数组和线段树写树剖都差不多,只是换了一种储存数据的方式,一种占用空间小,但是相对耗时,一种占用空间大,但是很快。 模板题: "树链剖分" 用树状数组会 tle 但是这也是一种思路 cpp // Created by CAD on 2019/8/11. include using namesp 阅读全文
摘要:
模板题: "树链剖分" 参考博客: "树链剖分详解(洛谷模板 P3384)" 前置技能: "线段树" cpp void build(int s,int t,int p) { if(s==t) { d[p]=wt[s]%mod; / 此处wt[]是排序好之后的序号对应的权重 / return; } i 阅读全文
摘要:
"E. Compress Words" 直接套 KMP 即可(那为什么打 cf 的时候没有想到...),求出后一个单词(word)的前缀数组,然后从前面已得的字符串的末尾 word. length () 开始查询利用 "前缀数组" 进行优化即可 代码: cpp // Created by CAD o 阅读全文
摘要:
"D. White Lines" 主要思路就是利用差分 对于行:如果在某一个点上,向右下角涂掉 k k 的矩形能够使得新出现一行 “B” 那么就在这个点上 +1(这里的加 +1 需要利用差分来完成) 列同理,如果有现成的空白行,记录一下即可,最后直接加上 代码: cpp // Created by 阅读全文
摘要:
差分的还原操作千万不能 记错,是 ch[i][j]+= ch[i 1][j 1]+ch[i 1][j]+ch[i][j 1] 模板: cpp / 还原为正常数组 / for (int i=1; i 阅读全文