
思维题
文章平均质量分 61
小衣同学
No Saturday , no Sunday , no holiday .
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
The 2024 ICPC Kunming Invitational Contest K. Permutation(交互 期望)
维护两个vector L、R,代表下一步要在[l,mid]和[mid+1,r]分治的vector。这样del里的元素,在并查集上找到其祖先时,可以用to数组确定其应该被放进L还是R。每次将x random_shuffle后,取出vector尾部的两个u、v,和已经被询问出来的元素再一起询问一次,就能确定出这个元素该放进L还是R。分治,假设当前解决到[l,r],要递归的vector是x,期望次数是6000的,实际跑得飞快,也没被卡掉。只剩一个元素时,L或R一定已经有元素,首先特判n=1的情况,其实也不用问。原创 2024-10-07 23:52:54 · 806 阅读 · 2 评论 -
Codeforces Round 975 (Div. 1) D. Max Plus Min Plus Size(思维题 并查集/动态dp 线段树维护状态合并)
f[x][i][j][k]表示线段树的x节点,最大值有没有取到,左端点有没有选,右端点有没有选,如果最大值被包含在1 3 5里显然取1 3 5,否则换成2 4一定能取到最大值,是不劣的,对于最小值固定的话,对于1 2 3 4 5的连续段,要么贪心地取1 3 5,要么取2 4。如果存在一个连续段,使得选这个连续段中较多的那一半(奇数唯一,偶数均可)能取到最大值。则答案不需要减1,否则为了取到最大值需要反选,将答案减1。hhoppitree代码 + 官方题解。注意到最大值一定会被取到,原创 2024-09-28 19:48:44 · 940 阅读 · 0 评论 -
2013-2014 Northeastern European Regional Contest (NEERC 13) I. Interactive Interception(思维题 二分好题 交互)
那么下一个位置区间,就是由当前位置区间l、r分别加上最慢速度lv、最快速度rv去生成,而历史每次询问出来的lp、rp,可以对lv、rv形成一个新的约束,最终收敛到lp=rp。询问的次数变多时,用限制条件去卡,速度实际是收敛的很快的。所以考虑二分位置p,用一个区间[lp,rp]去控制,100次,很容易想到是二分,但是check很难想。同样地,速度也用一个区间[lv,rv]去控制。两个未知量p、v,因为最后要求最终位置p,不是很能直观地证明,只是能大概感觉,原创 2024-09-23 02:43:57 · 458 阅读 · 0 评论 -
AtCoder Regular Contest 156 C. Tree and LCS(思维题 构造 数学归纳法)
求该路径上的点(x1,...,xk)和对应排列上的点(Px1,...,Pxk)的最长公共子序列都得到一个值,线性序列的话,1 2 3 4 5和5 4 3 2 1就可以了,也就是取逆序序列,此时最长公共子序列值为1。只有同时包含(u,v)的路径里能同时有u值和v值,并且这俩是满足线性序列两端的条件的。树上的话,考虑两个叶子u和v,令ans[u]=v,ans[v]=u,并且,去除掉两端的1和5之后,剩下的子段仍然满足要求。每次剥掉两个叶子,把产生的新叶子再塞进队列里,其实就是想想,线性序列怎么拓展成树上序列。原创 2024-09-23 00:20:30 · 332 阅读 · 0 评论 -
Codeforces Round 973 (Div. 2) F1. Game in Tree (Easy Version)(思维题 博弈)
如果能走旁边的链(也就是当前点,刨去标记链以外的子树中最长的链),使得对面走剩余的连通块无法比你大,就走旁边的链,并宣告获胜。维护实际是一个区间最值,可以用set或者st表。两个人的策略是一样的,把1到u的路径标记,否则沿着标记链,朝对面的方向走一步。原创 2024-09-21 03:18:53 · 883 阅读 · 0 评论 -
Denso Create Programming Contest 2024(AtCoder Beginner Contest 361)G. Go Territory(思维妙妙题 并查集)
记最底下一行的线段点号是1(y=-1所在的行的线段,与(-1,-1)联通)最后答案就是和点号1不在同一个并查集内的线段长度之和。只有没合到的部分才是在多边形内的。相邻行线段相交的话就合并一下。合在一起的都是在多边形外的,给每行的一段创建一条线段。原创 2024-07-07 02:10:40 · 401 阅读 · 0 评论 -
Codeforces Round 955 (Div. 2, with prizes from NEAR!) F. Sorting Problem Again(multiset二分/线段树二分)
前面那段的最大值只能小于等于这一段最小值,后面那段的最小值只能大于等于这段最大值。对于存在逆序的部分,记录下来这一段最左最右的位置,求出这一段最小值和最大值。感觉pyy这个代码写的还是挺巧妙的,也避免了使用线段树求区间最值。分别二分即可,可以线段树二分,也可以在multiset上二分。一段增序(非严格),一段存在逆序的部分,一段增序(非严格)线段树+set或者multiset均可。注意到序列由最多三段拼接而成,灵茶群、propane代码。贴一下灵茶群群友的图,原创 2024-06-27 02:08:58 · 427 阅读 · 0 评论 -
Codeforces Round 951 (Div. 2) F. Kostyanych‘s Theorem(思维题 交互好题)
而一直问n-1显然肯定不行,这样会导致剩下的删边越来越多,最后剩下一堆小于n-2的。还会输出一个和这个点v当前没有连边的点x,如果x有多个,也输出点号最小的x。2. 如果问出来的是n-1,n-1可以和子图内的点任意连,插入到任何地方,1. 如果问出来的是n-2,显然删掉这个点的子图还满足这个条件,递归子图。交互题,n(n原创 2024-06-07 12:52:14 · 713 阅读 · 0 评论 -
2024年广东省大学生程序设计竞赛暨广东省邀请赛-个人线上赛 D. 马(构造)
中国象棋规则,n*m的地图放k个马,使得任意两个马互相不能攻击。原题的spj好像有点问题,自己搬了一下造了个交洛谷过了。三个三角形数之和一定能表示所有数(打表发现的)输出一个矩形抠掉三个等腰直角三角形即可。原创 2024-06-03 13:34:21 · 405 阅读 · 0 评论 -
Codeforces Round 948 (Div. 2) E. Tensor(思维题-交互)
(6)否则,记las的两个父亲为f1、f2(也就是上图的点6、点7),如果能往f1后面续,就往f1后面续,否则往f2后面续。新来的点3,可以接在点4后,也可以接在点5后,也可以接在点6后,也可以接在点7后,因为在链中间的点后面续新的点,都可以看成是在交点后面续新的点,不影响两条链的性质。而此时应该是10->9->6->3->2,另一条链8->7->5->4->1。而这种情况的出现,说明前面有一个只询问了1次的点,也就是在点5下面的点4,可以发现,在点5形成Y字型,后接点4之后,新来的点3并没有续到点4上,原创 2024-05-29 20:10:39 · 1113 阅读 · 0 评论 -
2024湖南理工学院程序设计竞赛(同步赛) G. 区间递减(思维题 分类讨论 ST表)
也就是,[l,p-1]区间内只保留最小值w,[p,r]区间内只保留不超过w的值,此时只有两种数字。此时[l,p-1]还有最小值w,对[l,p-1]的最小值w用(1),对[p,r]用(2)(3) 如果最小值出现在末尾,[l,r]从左往右一直递减,那么操作次数为0。(1) 考察区间最小值,如果最小值后如果有增的,那么最小值前也都得删完。(4) 如果(1)-(3)都不满足,那么一定是最小值出现在末尾,并且存在p(l<p<r)使得区间[p,r]满足(3),第二种情况,6 5 10 9 4 4,保留5 4 4。原创 2024-05-13 02:03:15 · 316 阅读 · 0 评论 -
AtCoder Regular Contest 176 C. Max Permutation(计数 分类讨论)
否则有两个点等于w,说明都可以,把其中一个填w,剩下一个当自由点。4. 从大到小考虑权值w,类似拓扑排序,把度为0的点加到队列里,初始没有被边覆盖的点是度为0的点,后续删掉max边之后且没有填值的点是度为0的点,当前度为0的点是自由点。3. 如果同一个权值w对应的边不少于2条,这些边应该有一个公共点i,否则无解,如果up[i]<w也无解,否则给这个点i赋初值w。从大到小考虑权值w的过程中,对于没有限制的,乘上当前自由点的个数,并令当前自由点数减1。检查所有权值w的边,对于当前边两个端点u,v。原创 2024-04-28 05:34:52 · 388 阅读 · 0 评论 -
Toyota Programming Contest 2024#4(AtCoder Beginner Contest 348)F. Oddly Similar(bitset暴力)
n(n原创 2024-04-15 01:50:01 · 678 阅读 · 0 评论 -
CodeTON Round 8 (Div. 1 + Div. 2, Rated, Prizes!) D. Learning to Paint(思维题/优先队列)
此外,还有一个n*n的数组a,第i行第j列为a[i][j](-1e6原创 2024-04-08 10:15:29 · 619 阅读 · 0 评论 -
AtCoder Grand Contest 066 A. Adjacent Difference(构造 思维题)
n*n(n<=500)的矩阵,第i行第j列的数a[i][j](-1e3<=a[i][j]<=1e3)相邻:a[i][j]和a[i][j+1]认为相邻,a[i][j]和a[i+1][j]认为相邻。不难发现,由于每个数向左向右构成了一个长为d的区间,所以两次操作的代价和是d*n*n。第一次,将黑色的数改成最近的d的奇数倍,将白色的数改成最近的d的偶数倍。第二次,将黑色的数改成最近的d的偶数倍,将白色的数改成最近的d的奇数倍。所以较小代价的那次就是不超过n*n*d/2的,输出即可。jiangly B站讲解。原创 2024-04-01 23:51:22 · 412 阅读 · 0 评论 -
XXII Open Cup, Grand Prix of Daejeon C. AND PLUS OR(思维 结论)
给定n(n<=20),再输入2^n个数,分别代表a[0]到a[2^n-1],第i个数ai(0<=ai<=1e7)可以发现,不管f(v2)多大,要么f(v1)<f(v2),要么f(v2)<f(v3)成立,其中v3比v1多了一个集合z,就是多了若干位的时候,有f(v1)<f(v3)考虑令左式为f(v1),右式为f(v3),有f(v1)<f(v3)成立,然后z是一个集合,是多出的若干位,如果有解,说明最后这个式子成立,所以,枚举公共集合x,枚举i的变化位y,枚举j的变化位z,复杂度。那么,考虑这个渐变的过程,原创 2024-03-30 11:13:45 · 419 阅读 · 0 评论 -
Codeforces Round 905 (Div. 1) C. Minimum Array(在线+贪心map / 离线+扫描线思想+区间删除)
q(q<=5e5)次操作,每次选择一个区间[l,r],对这个区间加x(-1e9<=x<=1e9)如果若干次操作后,差分的第一个位置是一个单点减,说明是可以替换成更优的答案。去判断第一个差分非0的最左项是正还是负的,是负的说明可以保留,更新答案。每个修改是有时间后效性的,也就是第i时刻的修改,会改[i,q]时间的值。求序列操作前及第[1,q]次操作后,这q+1次对应的序列中,n个位置,q个时刻,扫描线,增序扫n个位置,l加,r+1减。在某个时间区间对应+x,另一个时间区间对应-y,...,原创 2024-01-22 03:54:01 · 526 阅读 · 0 评论 -
Toyota Programming Contest 2024#1(AtCoder Beginner Contest 337)F. Usual Color Ball Problems(思维题 双指针)
长为n(n<=2e5)的球序列,第i个球颜色ci,有m(m<=n)个空盒子,编号1-m。首先执行r次,意味着,循环询问,对于每个开头的长为n的序列都询问一次,所以序列扩成二倍。记颜色w的球在盒子里的球为now[w]个,则占了now[w]/k(向上取整)个盒子。位置在p位置之后,但因为和p位置之前放入盒子里的球同色,而能被继续放入的球,一旦确定了不在盒子内的球的位置p,前面在盒子里的同色的球的个数也能确定,然后考虑双指针,双指针维护第一个不在盒子内的球的位置,注意到它是单增的。原创 2024-01-22 01:31:00 · 712 阅读 · 0 评论 -
Codeforces Round 803 (Div. 2) E. PermutationForces II(思维题 位置序列)
类似地,posb[6]和posb[7]都可以用到[1,7]里的可用位置,分别对应ans*=2和ans*=1。posb[3]可以用到[1,7]里的可用位置,即[1 4 2 6 7 3 5]里的[4 7 3 5],posb[1]只能用到[1,5]里的可用位置,即[1 4 2 6 7]里的[4 7],ans*=2。所以,合法的条件是,对于b[i]不为-1的位置,要求a[i]的值不能超过b[i]+s。比如,在为posb[1]=-1这个未确定的位置赋值的时候,posb[1]的值,原创 2024-01-20 18:41:33 · 940 阅读 · 0 评论 -
Codeforces Round 114 (Div. 1) C. Wizards and Numbers(思维题 辗转相除+博弈 巴什博弈)
打表可知,当(b/a)%(a+1)为偶数时,先手必胜,(b/a)%(a+1)为奇数时,先手必败。这样若干轮后,(b/a)起到了对(a+1)取模的效果,即当前剩余石子数不超过a,t(t<=1e4)组询问,每次询问(a,b)(0<=a,b<=1e18),(b/a)%(a+1)为奇数总可以转移到(b/a)%(a+1)为偶数,(b/a)%(a+1)为偶数总可以转移到(b/a)%(a+1)为奇数,先手和后手可以取1(1个a)枚,a枚(a个a),a^2,...当(b/a)%(a+1)为偶数时,先手可以先取1个。原创 2024-01-16 01:11:29 · 463 阅读 · 0 评论 -
Codeforces Round 768 (Div. 1) D. Flipping Range(思维题 等价类性质 dp)
而dp做法,则是注意到性质一后dp即可,dp[i][j]表示i的等价类的数总共被翻了奇/偶次。此外,可以一开始翻一次[1,g],改变每个等价类内负数个数的奇偶性,所以两种情况都考虑。枚举当前数翻还是不翻,翻的话加1次翻,算-a[i],否则加0次翻,算a[i],等价类内翻两个相邻的,可以类似地叠加成两个不相邻的,推广为(i,i+x*g)性质二:此外,翻1-g和翻2-g+1可以起到翻(1,g+1)效果。考虑g个等价类,每个等价类i,i+g,i+2*g,...对每个等价类内dp值求和,取翻奇/偶次二者的max。原创 2024-01-15 03:09:56 · 562 阅读 · 0 评论 -
Codeforces Round 779 (Div. 2) D2. 388535(思维题 二进制性质/trie树上最大最小异或)
若存在一个bi,min(bi^trie)=l,max(bi^trie)=r,则bi即为x所求。如果l是偶数,r是奇数,那么x的末尾是0或1均可,因为总可以将ai和ai^1两两配对。遍历这r-l+1个数,找到无法配对的那一个ai,ans^ai=x成立,输出x即可。l%2==0时,r无法配对,否则l无法配对,记原来无法配对的数为ans。r-l+1个数中,肯定有一个ai是l^x得到的,那么令每个数再异或l,注意到,若a^b=1,则(a^x)^(b^x)=1恒成立。即令bi=ai^l,必有一个bi是等于x的,原创 2024-01-15 02:37:37 · 625 阅读 · 0 评论 -
Codeforces Round 916 (Div. 3) G2. Light Bulbs (Hard Version)(思维题 随机化哈希)
2. 选择三个不同位置的灯泡i,j,k(i<j<k),如果i和k都亮了,但是j不亮,就把j点亮。飞到异或值相同的最后一个位置,j=las[sum[j]],再令j++,到下一个区间相交的位置。1. 选择两个同色的灯泡i、j,如果一个亮,但是另一个不亮,就把另一个点亮。即区间包含内层区间无需点亮,区间相交时,点亮两个区间任意一个都可以。如果完整包含另一个区间,1 2 2 1,则内层灯泡无需初始点亮。考虑第二问,对于形如1 2 3 3 5 1 2 5这样的区间,希望先1跳到2,2再跳到5,5跳到1跳到2跳到5,原创 2024-01-08 00:48:48 · 566 阅读 · 0 评论 -
Codeforces Round 761 (Div. 2) E. Christmas Chocolates(思维题 树的直径 二进制性质 lca)
初始时,选择两个位置x,y(x≠y),代表需要对这两个位置进行操作,要把其中一个值变成另一个。也就是说,对于每个i来说,比i小的数中,只有一个数j,能和i之和凑成2的幂次,反证法显然。输出你选择的位置(x,y),使得a[x]变到a[y]的最小步数最大,并且输出最大的步数。求树的直径即可, 即从任意点出发(不妨0),搜到带标记的最远一侧点x,问题等价于在这棵树上,标记n个点,求n个点两两距离的最大值和点号,当前值是v,你可以选择一个值k(k>=0,满足。,并且j原创 2024-01-08 00:32:08 · 432 阅读 · 0 评论 -
Pinely Round 3 (Div. 1 + Div. 2) E. Multiple Lamps(思维题 暴力 补写法)
m(m<=2e5)个限制,第j条限制形如uj,vj,表示uj这个开关按下之后,vj必须也按下,限制是单向的。n个开关,第i个控制着所有i的倍数,按下i的时候,i、2i、...这些灯的状态会被翻转,leg[n](n<=20)表示最终亮灯盏数不超过n/5时所有可能的按开关的方式。而当n>=20时,sqrt(n)<=n/5成立,所以只需要关注n<20的情况。观察性质可知,如果[1,n]的所有开关都按下,则最终亮灯的,n(n<=2e5)盏灯,编号1到n,一开始全是熄灭的。所以,实际合法的状态不会超过。原创 2023-12-24 16:52:07 · 486 阅读 · 0 评论 -
蓝桥杯周赛 第 1 场 强者挑战赛 6. 小球碰撞【算法赛】(思维题/最长上升子序列LIS)
二分时间t,第i个小球对应一个起点pi、终点pi+t*vi的区间,问题转化为,选最多的区间,使得不存在区间包含(即li<lj<rj<ri)的情况,排完序后,考虑右端点的LIS,如果>=n-k,即合法,否则不合法。如果可以选这样的区间>=n-k个,则t是合法的时间。由于左端点均不同,所以先按左端点排序,原创 2023-12-11 03:10:47 · 917 阅读 · 0 评论 -
Codeforces Round 910 (Div. 2) D. Absolute Beauty(思维题 补写法 abs(ai-bi)求和 最多一次交换bi和bj使得和最大)
变大的情况只有[min(ai,bi),max(ai,bi)]与[min(aj,bj),max(aj,bj)]不相交时的情况,bonus说要加上a和b的单点修改,那么就维护两个multiset就可以,一个mx的,一个mn的。这种是官方题解,注意到只有变大的情况一定是2*(右边区间的左端点-左边区间的右端点)这种也是基于性质,注意到变大的情况,交换后的终态一定是ai-aj+bi-bj。而交换端点只有4种情况,两两是等价的,所以只有本质两种情况,右边的区间是ai+bi,左边的区间是-aj-bj,原创 2023-11-20 03:07:25 · 210 阅读 · 0 评论 -
Educational Codeforces Round 157 (Rated for Div. 2) D. XOR Construction (思维题)
给定长为n-1(n原创 2023-11-05 20:33:15 · 291 阅读 · 0 评论 -
COMPFEST 15 - Preliminary Online Mirror I. Imagination Castle(dp递推+sg函数思想)
②如果仅右侧有棋子,说明当前位置必胜态,同行左侧都是必胜态,同行不可能再出现必败态了,但同列下方都是必胜态,还有可能在上方出现必败态,接着考虑(x-1,y)1. (x,y)在右下角,必败,sg(x,y)=0,同时第x行左侧和第y列上侧所有sg值为1,接着考虑(x-1,y-1)当你在(x,y)位置时,下一步可以走到同一行靠右的位置(x'=x,y'>y)或同一列靠下的位置(x'>x,y'=y)2. 间接获胜的情形也是不存在的,是因为上一个必败态(x',y')产生后,接下来考虑的是(x'-1,y'-1)原创 2023-10-16 03:18:17 · 390 阅读 · 0 评论 -
Codeforces Round 901 (Div. 1) B. Jellyfish and Math(思维题/bfs)
所以,如果相同的(x>>i&1,y>>i&1,w>>&1)对应的(c>>i&1,d>>i&1)不同时,直接无解。t(t原创 2023-10-02 22:50:04 · 869 阅读 · 0 评论 -
Codeforces Round 899 (Div. 2) E1. Two Permutations (Easy Version) (思维题/交换序列)
2. 操作后a和bc的逆序对数=操作前a和bc的顺序对数=|b|+|c|减去操作前a和bc中的逆序对数,由于|b|+|c|=n-1为奇数,则|b|*|c|一定为偶数,则b、c之间的逆序对数操作前后奇偶性不变。1. 操作后b和c之间的逆序对数=操作前b和c的顺序对数=|b|*|c|-操作前b和c的逆序对数。不妨称[1,i-1],i,[i+1,n]三段为b,a,c,交换前,[1,i-1]、[i,i]、[i+1,n]交换后,[i+1,n]、[i,i]、[1,i-1]原创 2023-09-30 15:46:59 · 189 阅读 · 0 评论 -
Educational Codeforces Round 155 (Rated for Div. 2) E. Interactive Game with Coloring(思维题+分类讨论)
所以,对于所有度为2的点,尝试去用相同的方式染(比如连接父亲的染成颜色1,另一端染成颜色2),类似二分图判定的过程。按照交互机的读入方式,无法区分这两个点,也就无法决定,收到这个读入后该走颜色1还是颜色2。首先,原则肯定是,我们只要能对于深度不同的点能有所区分即可,深度相同的点染一样的无所谓。不妨第一层染1、2,第二层2、3,第三层3、1,以此类推,就可以循环下去了。如果点2的染色方案是1、2,点3的染色方案是2、1的话,颜色为1,为2,...,为k的边的条数各有多少个。原创 2023-09-30 15:17:36 · 324 阅读 · 0 评论 -
Educational Codeforces Round 155 (Rated for Div. 2) F. Last Man Standing(ST表/dp的松弛思想)
区间求最大值,st表O(nlogn)预处理一下,然后O(1)求,总复杂度O(nlogn)当对人造成x点伤害时,如果x<当前血量,血量减少x,否则,扣掉一条命,令血量回满。最后阵亡的玩家,假设在第a轮阵亡,而倒数第二个阵亡的玩家,假设在第b轮阵亡,则最后阵亡的玩家的分数为a-b(a=b时,得分为0),其他玩家的分数为0。对于每个玩家i,独立地求,正整数x任意设置时,玩家i能获得的最大得分。而在ai的地方被枚举到的时候,等于答案的值可以取到,所以,可以枚举每个x,对于x倍数枚举y,对于[1,y]内的值v来说,原创 2023-09-30 14:58:32 · 235 阅读 · 0 评论 -
Codeforces Round 890 (Div. 2) D. More Wrong(交互题 贪心/启发式 补写法)
交互题,每次你可以询问一个区间[l,r]的逆序对数,代价是。t(t<=100)组样例,长为n(n<=2000)的序列。感觉有点哈夫曼树贪心的意思,也有点启发式NTT的合并方式。先把n和n-1放两边,n-2放中间,然后递归左右。每次遍历链表,找到位置最接近的两个数询问。于是,想到的最接近3n方次数的构造方法是。的代价内问出最大元素的位置,输出其位置。根据这个尝试去构造对应的hack方法,找到左区间和右区间的极大值的位置,的搞过去了,也就是分治左右区间,把他们按位置增序维护在链表里,原创 2023-08-06 22:58:28 · 584 阅读 · 0 评论 -
Codeforces Round 887 (Div. 1) C. Ina of the Mountain(思维题/反悔贪心 值模k意义下区间减1使所有值为0的最小操作次数)
还有一个值k(1原创 2023-07-24 03:48:24 · 629 阅读 · 0 评论 -
Daimayuan Online Judge #613. 好序列(思维题 暴力/启发式分裂)
比较直白的想法是找到第一个只出现一次的数的位置x,然后分治[1,x-1]和[x+1,n]删掉一个值时,更新线段树也二分更新,均摊下来每个位置只会被更新一次,但是这样很麻烦。2. 如果遍历的区间长度较短,则通过线性次有效减少了区间长度,类似线性遍历。比如,可以线段树i处维护和a[i]值相同的下一个位置,不存在置INF,1. 如果遍历的区间较长,则区间近似占区间总长度一半,类似归并;考虑合并的过程,是两边的小区间被挂到中间的大区间上。启发式分裂,可以认为是启发式合并的逆过程。启发式分裂,是启发式合并的逆过程,原创 2023-05-08 05:33:59 · 498 阅读 · 0 评论 -
华中农业大学2023年十二届程序设计竞赛(同步赛)G. 简单的开关(思维 括号匹配+差分+前缀和 set/珂朵莉树)
表示将第l个(含l)到第r个(含r)开关的状态设置为开或者关(k=0表示关、k=1表示开)设出现次数为x,则C(x,2)就能找到两个合法端点L-1和R,确定题目所求区间[L,R]2. assign将[l,r]内的每个区间删掉,合并为同一个[l,r],赋值为k。1. split将包含x的区间[l,r)拆成两个区间[l,x)和[x,r)每一段区间[l,r),记录区间开始的前缀和值和区间终止时的前缀和值,可以把1看成(,遇到(就+1,把0看成是),遇到)就-1,后面的逻辑相同,前面的区间覆盖用珂朵莉树维护。原创 2023-05-08 04:24:33 · 912 阅读 · 0 评论 -
AtCoder Beginner Contest 290 G. Edge Elimination(思维题 枚举+贪心)
AtCoder Beginner Contest 290 G. Edge Elimination(思维题 枚举+贪心)原创 2023-02-26 17:00:48 · 537 阅读 · 0 评论 -
Codeforces Round #850 (Div. 1, based on VK Cup 2022 - Final Round) B.Letter Exchange(思维题 置换三元环 补写法)
Codeforces Round #850 (Div. 1, based on VK Cup 2022 - Final Round) B.Letter Exchange(思维题 置换三元环 补写法)原创 2023-02-06 03:21:44 · 596 阅读 · 0 评论 -
AtCoder Regular Contest 154 D. A + B > C ?(交互 思维+排序)
AtCoder Regular Contest 154 D. A + B > C ?(思维题/排序)原创 2023-01-25 18:55:48 · 353 阅读 · 0 评论