https://www.luogu.org/problemnew/show/P5280 省选的时候后一半时间开这题,想了接近两个小时的各种假做法,之后想的做法已经接近正解了,但是有一些细节问题理不清楚(事实证明出来后再给我2个小时也还是没理清楚,只能说自己naive),而且也码不完,打了个20分暴力 参考资料:题解 首先,可以分开考虑各个点 对于每个点,考虑对于t次修改,每一次标记为启用或不启用(共有$2^t$种标记方案),其中有多少种标记方案使得这个点最后有tag 询问的答案就是每个点的答…
题面传送门 神仙 ZJOI,不会做啊不会做/kk Sooke:"这八成是考场上最可做的题",由此可见 ZJOI 之毒瘤. 首先有一个非常显然的转化,就是题目中的"将线段树分裂成两棵线段树",我们事实上大可不必真的把线段树一分为二,可以看作对于操作集合 \(S\) 的所有子集 \(S'\subseteq S\) 计算出执行 \(S'\) 中的操作后线段树上有多少个节点 tag 为 \(1\). 其次建好线段树,我们考虑一次操作 \([l,r]\) 会对哪些节点产生影响…
传送门 无限Orz \(\color{black}S\color{red}{ooke}\)-- 思路 显然我们不能按照题意来每次复制一遍,而多半是在一棵线段树上瞎搞. 然后我们可以从\(modify\)函数入手,寻找一些性质. (盗一张Sooke的图) 可以发现每次\(modify\)之中,所有节点都可以被分成5类: 白色:经过而且标记全都被下传的点. 黑色:打上标记的点. 灰色:在修改区域内但不会被经过的点. 橙色:可以享受到来自上方标记的滋润的点. 黄色:半毛钱关系都没有的点-- 分类之后,…
题面 传送门 题解 考场上就这么一道会做的其它连暴力都没打--活该爆炸-- 首先我们得看出问题的本质:有\(m\)个操作,总共\(2^m\)种情况分别对应每个操作是否执行,求这\(2^m\)棵线段树上\(tag\)为\(1\)的节点个数 那么很明显得转化为每个节点在多少种情况里\(tag\)为\(1\) 对于一个操作\([ql,qr]\),我们把线段树上所有节点分成四类考虑 1.如果\(ql\leq l\&\&qr\geq r\),且该节点被访问到,那么不管之前操作序列怎么样,只要执行了当…
洛谷 P3373 [模板]线段树 2 洛谷传送门 题目描述 如题,已知一个数列,你需要进行下面三种操作: 将某区间每一个数乘上 xx 将某区间每一个数加上 xx 求出某区间每一个数的和 输入格式 第一行包含三个整数 n,m,pn,m,p,分别表示该数列数字的个数.操作的总个数和模数. 第二行包含 nn 个用空格分隔的整数,其中第 ii 个数字表示数列第 ii 项的初始值. 接下来 mm 行每行包含若干个整数,表示一个操作,具体如下: 操作 11: 格式:1 x y k 含义:将区间 [x,y][…
P3372 [模板]线段树 1 153通过 525提交 题目提供者HansBug 标签 难度普及+/提高 提交  讨论  题解 最新讨论 [模板]线段树1(AAAAAAAAA- [模板]线段树1 洛谷评测机出问题了吗? 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个数. 第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值. 接…
洛谷题目传送门 闲话 考场上一眼看出这是个毒瘤线段树准备杠题,发现实在太难调了,被各路神犇虐哭qwq 考后看到各种优雅的暴力AC......宝宝心里苦qwq 思路分析 题面里面是一堆乱七八糟的限制和性质,这时候需要冷静想想有没有可利用的地方.蒟蒻一开始往势能线段树上面想了想. 定义一个全局势能函数,为所有\(C_i<B_i\)的位置个数.注意两个操作的修改都不会小于原来的数. 一个是改\(A\),相当于对\(C\)进行区间设置,此时我们每暴力找到一个原来\(C_i<B_i\)但是现在\(C_i…
To 洛谷.2574 XOR的艺术 题目描述 AKN觉得第一题太水了,不屑于写第一题,所以他又玩起了新的游戏.在游戏中,他发现,这个游戏的伤害计算有一个规律,规律如下 1. 拥有一个伤害串为长度为n的01串. 2. 给定一个范围[l,r],伤害为伤害串的这个范围内中1的个数 3. 会被随机修改伤害串中的数值,修改的方法是把[l,r]中的所有数xor上1 AKN想知道一些时刻的伤害,请你帮助他求出这个伤害 输入输出格式 输入格式: 第一行两个数n,m,表示长度为n的01串,有m个时刻 第二行一个长…
!!!一道巨恶心的数据结构题,做完当场爆炸:) 首先,如果你用位运算的时候不小心<<打成>>了,你就可以像我一样陷入疯狂的死循环改半个小时 然后,如果你改出来之后忘记把陷入死循环后为了防止不能停下来而进行的读入操作删了,你就可以像我一样改半个小时最后发现是这个傻逼错误 并且,如果你按照样例输出,你就可以像我一样成功地获得0分的好成绩因为它其实是要每个输出一行 最后,就算你都改完了,你还可以像我一样莫名其妙得了65分的并且下不了测试点最后无可奈何跑过来写题解 再再继续,如果你不信邪以…
题面 Bzoj 洛谷 题解 考虑一个什么样的区间满足重组之后可以变成\(3\)的倍数.不妨设\(tot\)为一个区间内\(1\)的个数.如果\(tot\)是个偶数,则这个区间一定是\(3\)的倍数,接着考虑奇数的情况. 如果只有\(1\)个\(1\),那么无论如何都不行,只需考虑\(3\)个\(1\)的情况,因为其他的\(1\)可以看做偶数个\(1\)的情况.不难发现,当只有\(3\)个\(1\)的时候,我们需要有至少\(2\)个\(0\),接着就可以用线段树来维护了. 我们考虑记录三个数组,\…