07 2019 档案
摘要:max(a,b,c)min(a,b,c)=|ab|+|bc|+|ca|2,两个也适用,n个也适用
阅读全文
摘要:出处 对一个01矩阵进行拓展,比如原矩阵是1: 对称翻倍 10 01 翻倍 1001 0110 0110 1001 翻倍…… 以0为下标,第(a, b)个矩阵是原矩阵还是反转的矩阵想接近O1知道,可以求__builtin_popcount(a)+__builtin_popcount(b),如果是奇数
阅读全文
摘要:平面内某某期望之类的,在里面随机一些点然后均摊即可得结论。
阅读全文
摘要:1ab=(1a1b)(1ba) 根据需求也可以改成加法形式。
阅读全文
摘要:反思 写一写可以发现上限不断更新 一直在想怎么判断NO,刻板拘泥于错误的模型,想要像往常一样贪心地、读入当前值就能判断会不会NO,实际上只要构造完以后,最后把所有操作重新跑一遍看会不会冲突即可判断NO C++ include include include include using namespa
阅读全文
摘要:要点 不难发现问题转化成:n堆石子,每次最多选k堆最少选1堆然后拿走一个石子,谁先没子可拿谁败。本题中撤退不必考虑。 就是记笔记吧,类似nim的博弈,举例:k=3,n=44堆石子分别是1、2、3、3全化为二进制01101111然后每一位纵向加和,两位都
阅读全文
摘要:要点 会发现本质上棋盘分成了若干个独立集,本集合内的点放不放棋子并不影响其他集合内的 集合的划分方式就是满棋盘跳马步直到全跳过了,然后每个集合就分成两队,我们选人多的那队放棋子,人少那队当禁区 C++ const int maxn = 1e3 + 5; const int nx[] = { 2, 2
阅读全文
摘要:要点 做法是删去连续的k个0或k个1,连消、消消乐的那种,网上博主用个栈O(n)就很优秀地操作了这个过程 原因是有性质:比如k=3,101000贪心地翻就能翻成000101,所以连续的k个可以都挪到后面去 C++ / GYM 101981 E / include include using na
阅读全文
摘要:要点 括号序列平衡度即树深度 的性质 相当于中序遍历,则两点间最浅的地方即是LCA 的性质 线段树维护d(a)+d(c)2d(lca(a,c)),一层层剥,思考维护这个量需要什么,结果维护一大堆。 C++ include include include using namespace s
阅读全文
摘要:反思 三维的dp压根没看出来,看题解以后思路又很直观,找几道字符串dp练练才行 序列自动机和优化一维略 C++ / __ __ ____| |_____| |____ | | | __ | | | | include include include include include include i
阅读全文