![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分治
gjghfd
这个作者很懒,什么都没留下…
展开
-
codeforces813F Bipartite Checking -- LCT+分治
传送门题目大意:给你一个有nn个顶点的无向图,初始时没有边,有qq个操作,每个操作加入或删除一条边,要求每次操作后输出这个图是否是二分图。显然一个图是二分图的充要条件是不存在长度为奇数的环。 对于图中可能出现的每条边,记录它出现的某些区间,然后考虑分治。 Solve(l,r,U)Solve(l,r,U)表示处理[l,r][l,r]的答案,其中UU表示出现区间在[l,r][l,r]内的边的集合。原创 2017-07-24 16:37:03 · 647 阅读 · 0 评论 -
[ 分治FFT ] HDU5730
分治FFT裸题#include<bits/stdc++.h>using namespace std;typedef double db;const int P=313;const int N=100010;const db Pi=acos(-1);struct E { db a,b; E(db a=0,db b=0):a(a),b(b){} ...原创 2018-05-11 17:31:38 · 338 阅读 · 0 评论 -
[ 分治 决策单调性优化DP ] LOJ#6039. 「雅礼集训 2017 Day5」珠宝
设 fi,jfi,jf_{i,j} 表示售价 ≤i≤i\le i 的珠宝,使用 jjj 万元的最大吸引力。转移方程很容易写出。 因为售价相同的珠宝肯定是从最大吸引力开始取的,所以转移的函数是上凸的。 将 jjj 按 j mod ij mod ij~mod~i 分类,每一类的转移满足决策单调性,然后就可以用分治做了。 时间复杂度 O(maxciklogk...原创 2018-03-14 09:46:05 · 821 阅读 · 0 评论 -
[ 分治 复杂度分析 ] [ NWERC2017 ] BZOJ5200 Factor-Free Tree
和bzoj4059一样的套路。#include<bits/stdc++.h>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p...原创 2018-03-07 16:12:04 · 302 阅读 · 0 评论 -
[ 分治 复杂度分析 ] [ Cerc2012 ] BZOJ4059 Non-boring sequences
对于区间 [l,r][l,r][l,r] ,如果 aiaia_i 在区间内只出现了一次,那么跨过 aiaia_i 的区间一定是合法的,只需要判断 [l,i−1][l,i−1][l,i-1] 和 [i+1,r][i+1,r][i+1,r] 就好了。 这样就得到了一个分治的做法:每次枚举区间中一个点,如果在区间中只出现过一次就分治下去。 有一个优化:把枚举顺序变成每次左边枚举一个点、右边枚举一个点...原创 2018-03-07 15:38:54 · 294 阅读 · 0 评论 -
[ 分治 ] BZOJ4936
先考虑怎么判断无解。 开一个栈,从左往右扫一遍字符串,如果当前字符和栈顶字符相同就将栈顶弹出,否则将当前字符加入栈。最终如果栈不为空则无解。 令 sis_i 表示扫到位置 ii 时栈的 HashHash 值,那么可知区间 [l,r][l,r] 有解等价于经过 [l,r][l,r] 后栈不变,即 sl−1=srs_{l-1}=s_{r} 。 然后考虑分治。分治到区间 [l,r][l,r] 时,我原创 2018-01-02 20:49:21 · 707 阅读 · 0 评论 -
[ 分治 ] [ COCI2015 ] BZOJ3745
分治到一个区间时枚举左端点,然后分类讨论一下就好了。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2原创 2017-12-21 14:37:44 · 242 阅读 · 0 评论 -
Codeforces868F Yet Another Minimization Problem -- 决策单调性优化DP
令 fi,jf_{i,j} 表示前 ii 个数分成 jj 个区间的最小值,这样很容易列出DP方程。 然后发现可以用决策单调性优化。 注意分治的时候要将 [L,l−1][L,l-1] 的值预处理出来,其中[l,r][l,r]表示当前区间,[L,R][L,R]表示转移的区间。 时间复杂度O(knlogn)O(kn\log n)#include<cstdio>#include<cstring>#原创 2017-10-06 16:48:18 · 898 阅读 · 0 评论 -
bzoj2369 && 2687 -- 决策单调性优化DP
显然只选 22 个区间是最优的,因为取一个集合中所有区间一定没有只取最左和最右两个区间优。 对于那些有包含关系的区间,更新一下答案,只留下最大的区间就可以了。 将区间按左端点排序。 设第 ii 个区间为 [li,ri][l_i,r_i] 。可以发现若 p<k<i<jp<k<i<j ,且对于 ii 来说 kk 比 pp 优,那么对于 jj 来说 kk 也比 pp 优。 证明如下: (ri−l原创 2017-10-07 13:27:44 · 589 阅读 · 0 评论 -
[ Xor最小生成树 分治 字典树 ] Codeforces888G Xor-MST
裸的 xorxorxor 最小生成树。 枚举每一位,把这一位为 000 的放在一起形成一个连通块,为 111 的放在一起形成一个连通块,之间用字典树求一条最小边,然后分治做。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int M=6200000;int k,n,m;vec...原创 2018-05-21 09:38:45 · 588 阅读 · 0 评论