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