分治
Freopen
这个作者很懒,什么都没留下…
展开
-
模拟赛 我的朋友们(分治NTT)
题意:有一个长度为nnn的序列,序列上每个位置有一个物品,每个物品在每次被询问到的时候有pip_ipi的概率被拒绝,考虑这样一个过程:先取前LLL个物品,然后每次对这LLL个物品都询问,如果有xxx个物品被拒绝,则将前xxx个物品丢弃,然后从未被选取的物品中选取最靠前的xxx个物品重复这个过程,当总物品数<L\lt L<L时停止,问期望询问多少组次。n,L≤1e5n , L \leq 1e5n,L≤1e5, mod 998244353\bmod 998244353mod998244353原创 2020-08-03 19:57:37 · 478 阅读 · 0 评论 -
CF1179E Alesya and Discrete Math(分治,随机化)
题目边界调到死,输入输出交互对调试端及其不友好题意:有n(≤1e3)n(\leq1e3)n(≤1e3)个值域在[0,L][0,L][0,L]的函数满足∀i∈[1,n],x∈[1,1e18],fi(0)=0,fi(1e18)=L,fi(x)−fi(x−1)∈[0,1]\forall i\in [1,n],x\in[1,1e18] ,f_i(0)=0,f_i(1e18)=L,f_i(x)-f_i(x-1) \in[0,1]∀i∈[1,n],x∈[1,1e18],fi(0)=0,fi(1e18)=L,f原创 2020-06-02 22:00:04 · 302 阅读 · 0 评论 -
God knows(李超线段树\CDQ分治)
n<=2e5n<=2e5n<=2e5设fif_ifi为删除(i,pi)(i,p_i)(i,pi)的线段并使得不存在线段(a,b),a<i,b<pi(a,b),a<i,b<p_i(a,b),a<i,b<pi的最少花费。那么容易发现可以转移到fif_ifi的fjf_jfj一定满足pjp_jpj是k=i−1,i−2....jk=i-1...原创 2019-10-31 16:20:40 · 275 阅读 · 0 评论 -
CF364E Empty Rectangles(二维分治)
题目时间限制14s\rm 14s14s…分治然后根据单调性更新就行了。AC Code\rm \color{silver} AC \ CodeAC Code#include<bits/stdc++.h>#define maxn 2505using namespace std;int n,m,k;char s[maxn][maxn];int sm[m...原创 2019-10-27 22:04:42 · 320 阅读 · 0 评论 -
LG P3920 [WC2014]紫荆花之恋(Treap+动态点分治+替罪羊树式重构)
题面时代在进步啊,连我这种高一蒟蒻都可以一下午切紫荆花之恋其实这个题的思路对于刷了几道动态点分治的选手来说还是比较裸的。就是一个支持插入点的动态点分治,点分树上需要用平衡树来维护答案而已。嗯。浓厚的OI气息。平衡树在不求奇怪操作的情况下都首选有旋转treap,好写好调速度快。在插入时直接插入,点分树可能会在多次插入后变形,这时用替罪羊树的思想重构点分树。平均重构O(nlogn)O...原创 2019-03-22 20:04:23 · 212 阅读 · 0 评论 -
BZOJ 3489: A simple rmq problem(主席树+二维线段树)
题目三维偏序。主席树套二维线段树。namespace真舒服。比KD树慢3倍。AC Code:#include<bits/stdc++.h>#define maxn 100005using namespace std;int n,m,a[maxn],pre[maxn],loc[maxn];vector<pair<int,int> >G[max...原创 2019-03-21 15:03:36 · 162 阅读 · 0 评论 -
BZOJ 2527: [Poi2011]Meteors
题目首先卡我主席树内存就不说了。老早就看见讨论版说会炸long long我就想着把每一次加减都和1e9取个min.。。。。。。。木大木大木大木大木大!!!!!!!!!!!没有减是可以的。但是用树状数组就有减。所以不行。#include<bits/stdc++.h>#define maxn 1000005#define inf 0x3f3f3f3f#define ...原创 2019-03-21 11:56:37 · 103 阅读 · 0 评论 -
BZOJ 3295: Cqoi2011动态逆序对
题目凭吊我以前没过的3KB代码和现在的1.2KB代码,哎。题解:首先我们比起删除更喜欢插入,所以我们可以把m次删除操作倒过来看作m次插入操作。然后显然我们就需要求每次插入一个数,求出插入这个数增加了多少逆序对即可。(思路清晰)那么这就是一个动态二维数点问题直接上树状数组套主席树就结束了。可是这怎么1.2KB呢?考虑用CDQ分治。假设每个数的位置为aia_iai,数的大小为bib_...原创 2019-03-08 11:48:41 · 167 阅读 · 0 评论 -
BZOJ 2759 一个动态树好题(不换根LCT+exgcd~疑似ddp起源?~)
题目看到这个题目,你想得到LCT,但是你会对这个构图十分陌生。其实我们无向图LCT做惯了之后对于有向图反而束手无策。人也该归于乡土。言归正传。首先这个图应该是个有向图。因为每个xxx依赖于xpx_pxp,当然你硬要从xxx反解xpx_pxp我也没啥意见。然后n个点n条边,每个点入度为1。我们应该意识到这是一个基环森林。不一定联通。然后对于每个联通块,都一定有一个环。如果这个...原创 2019-03-20 20:18:59 · 270 阅读 · 0 评论 -
LOJ #2340. 「WC2018」州区划分(FMT子集卷积)
题目设fsf_sfs为集合sss的(∑w)p∗[s合法](\sum w)^p * [s合法](∑w)p∗[s合法]那么可以得到dpS=1fS∑T⊂SdpTfS−Tdp_S = \frac 1{f_S}\sum_{T\subset S} dp_T f_{S-T}dpS=fS1∑T⊂SdpTfS−T因为子集和卷积是按照1的个数逐层转移的,所以这个转移可以和子集和卷积一起转移,使...原创 2019-04-05 21:58:40 · 195 阅读 · 0 评论 -
BZOJ 2458: [BeiJing2011]最小三角形(分治)
题目像平面最近点对那样分治,枚举点的时候大胆枚举,小心剪枝即可ACAC Code:#include<bits/stdc++.h>#define maxn 200005using namespace std;int n;int x[maxn],y[maxn],c[maxn];double sqr(double a){ return a*a; }double dist(...原创 2019-04-01 15:04:39 · 479 阅读 · 0 评论 -
BZOJ 4140: 共点圆加强版(圆的反演+二进制分组+半平面交)
题目首先圆不好处理,可以用一些骚操作:反演。几何上的(圆)反演是指确定一个反演中心OOO和反演半径rrr,那么对于一条以反演中心为端点的射线上的两点P1,P2P_1,P_2P1,P2并且OP1×OP2=r2OP_1 \times OP_2 = r^2OP1×OP2=r2,P1P_1P1是P2P_2P2的反演后的点,P2P_2P2是P1P_1P1的反演后的点。那么过反演中心的圆...原创 2019-04-01 17:26:20 · 205 阅读 · 0 评论 -
QuickSelection以及其median of medians版本
QuickSelection\texttt{QuickSelection}QuickSelection是NOIP算法,用于求第k大的元素,原理就是快排的快速划分。每次随机选一个值,把比这个值小的放在左边,比这个值大的放在右边,如果我们要求的元素比左边的大,那么就递归右边,反之为左边或答案就是当前点。这个过程如果随机就是期望O(n)O(n)O(n)的,实际运行很快。而Median ...原创 2019-08-16 17:44:09 · 1166 阅读 · 0 评论 -
陌上花开(三维偏序)
模板题:三维偏序。一维CDQ一维离线排序解决一维树状数组。细节问题。这个题的偏序可以相等就很恶心。注意离线排序和CDQ还有树状数组都不能完美的解决有相等元素互相贡献的问题,只会由小标号贡献到大标号(视实现方式而定),这个可以事后用一个mapmapmap把相等的贡献加回去。但是不相等,因为是一层层剥开的偏序,所以在外层相等时,一定要让内层小的放外面。AC CodeAC\ Code...原创 2019-10-02 14:28:46 · 227 阅读 · 0 评论 -
Query on a tree IV SPOJ - QTREE4(动态点分治)
对于每一个子树存一个set,每一个点存一个set,然后你就可以以OJ最短的代码长度换来OJ上最长的运行时间。。。#include<bits/stdc++.h>#define maxn 100005#define lim 19using namespace std;char cb[1<<15],*cs=cb,*ct=cb;#define getc() (cs==...原创 2019-03-10 10:24:52 · 222 阅读 · 0 评论 -
BZOJ 1492: [NOI2007]货币兑换Cash
CDQ分治使在线凸包变成离线凸包。好卡精度啊啊啊啊啊啊啊啊啊啊啊啊啊祖传的dcmp都过不了,疯狂三点近似共线#include<bits/stdc++.h>#define maxn 100005#define double long double #define eps 1e-10using namespace std;int n,s;double A[maxn],B...原创 2019-03-07 10:23:12 · 111 阅读 · 0 评论 -
一种按点划分,对于随机数据表现良好的非常规二维数据结构(二维KD树)
二维KD-Tree是一种将平面用一种玄学的方式分割成多份的数据结构其操作功能强大1:找最近||最远点,利用矩形区域计算最大最小可能值来剪枝,随机数据期望复杂度O(logn) ,构造数据。。。。。。不过可以用来优化求min/max之类的DP,DP式中数据应该近乎随机。2.覆盖关键点的二维线段树问题:如 BZOJ4154——IPSC2015 Generating Synergy当问题可以转化为二维平面...原创 2018-03-15 16:13:27 · 214 阅读 · 0 评论 -
省选模拟Day6T2 开开车
开开车 ---------------- 从三角剖分的性质(不会有任意两条边在中间相交)入手,如果一条对角线将起点和终点分割开,那么起点到终点的路径中一定经过这对角线的一个端点。如果起点和终点在这条对角线的同一面,那么路径一定不会到对角线的另外一面上!那么我们可以找对角线,起点和终点在两侧则可以BFS出答案,否则递归,用分治的思想两边分均匀点可以做到O(nlogn)ACcode:#incl...原创 2018-03-09 22:59:35 · 200 阅读 · 0 评论 -
省选模拟赛Day7 T3 随便乱走
题意:一个n个点的环,当你在i号点时有Pi/2的概率走向(i%n+1)号点,有Pi/2的概率走向((i-2+n)%n+1)号点,有(1-pi)的概率永远停下,动态修改Pi,多次询问从i号点出发走的距离的期望值F(i)。范围n<=100000这个题就是诱导人去想高斯消元的,然后复杂度爆炸。。。。。。电脑高斯消元会爆炸,那么我们就用我们的人脑帮电脑消一些元。不难发现,可以由Fi和F(i-1)得到...原创 2018-03-10 20:13:39 · 227 阅读 · 0 评论 -
比后一场比赛水的比赛 Bilibili Summer Camp
Bilibili Summer Camp(summer.c/cpp/pas) 时间限制:1s【题目描述】夏天到了,Bilibili的夏日活动又开始了,但是JeremyGuo忘记了自己的bilibili账号和密码,他对自己的密码做了简单的处理然后存储在了自己的电脑上。现在她有一个数的集合{S},里面的数是[2, n]范围内的正整数,由于他的密码经过了他自己的加密,所以他现在需要找找到他定义的那个唯一...原创 2018-03-17 16:42:58 · 221 阅读 · 0 评论 -
替罪羊树SCT
照着指针版的打了个数组版的,发现自己上了一节C++语法课。重构什么的,最难在于找出深度最小的需要重构的节点,毕竟多写一个函数不太优雅,数组又不像指针那么方便直接修改。如果你要传回一个变量的地址(因为你直接修改这个地址ch等等就直接跟着改了,十分方便)函数不能写 int&得写int *...............删除还是不要重构,太浪费了。。。。。。#include<cstdio&g...原创 2018-03-12 19:57:50 · 205 阅读 · 0 评论 -
状态分块优化转移
如题:题目描述白兔有一颗n个点以1为根的树。树上每个结点有一个权值val。 如果两个点a,b满足a是b的祖先且val[b]|val[a],则白兔可以直接从a跳到b。 现在白云想知道,对于每一个点k,白兔从1号点跳若干步到达k号点的方案数是多少? 两个方案不同为它们经过的点数不同或者某一步到达了不同的点。n<=100000 , val <= 10^18很容易想到n^2的做法,但是数据范围...原创 2018-06-24 17:14:46 · 288 阅读 · 1 评论 -
HDU 6331 Walking Plan
题意:n个点的图,求s到t经过至少k条边的最短路。1<=n<=50 , 1<= k <=10000设恰好经过k条边的最短路为dis[k][i][j]预处理很容易,但是TLE发现dis[a+b][i][j] = min(dis[a][i][k] + dis[b][k][j])总是成立发现预处理时间复杂度过大,处理询问复杂度过小(O(1))考虑把复杂度移...原创 2018-07-31 13:19:46 · 171 阅读 · 0 评论 -
AtCoder Regular Contest 066 F Contest with Drinks Hard
题意:一个长度为n的数组,选出其中几项,要最大化sigma( 1 , 1 <= L <= R <= n 且 对于L<=i<=R的i都被选中 ) - sigma( val[i] , i被选中) , 并回答q次询问 : 只有val[i]改变为k时的最大值。不考虑改变时,可以斜率优化。 改变时,分别计算选和不选i的最大值再处理选的值就行。 不选i的最大值就是正反...原创 2018-08-09 19:53:17 · 249 阅读 · 0 评论 -
ARC 063 F
在w * h 的方格中 求不含指定格点的边与方格平行的长方形的最大周长 考虑内部没有任何格点(不管是否指定)的长方形 发现周长最大为min(w , h) * 2 + 2 所以长方形一定穿过横着的中线和竖着的中线的其中一条。 考虑穿过一条线的长方形如何计算? dp[i][j]代表以横坐标为i为右边界,横坐标j为左边界的最大周长, 会发现dp值和i,j,还有i与j之间纵坐标最靠近这条线的...原创 2018-08-03 09:17:00 · 302 阅读 · 0 评论 -
XXX speed
题目描述比特山是比特镇的飙车圣地。在比特山上一共有n 个广场,编号依次为1 到n,这些广场之间通过n-1 条双向车道直接或间接地连接在一起,形成了一棵树的结构。因为每条车道的修建时间以及建筑材料都不尽相同,所以可以用两个数字li、 ri 量化地表示一条车道的承受区间,只有当汽车以不小于li 且不大于ri 的速度经过这条车道时,才不会对路面造成伤害。Byteasar 最近新买了一辆跑车,他想在比...原创 2018-10-02 15:48:22 · 352 阅读 · 0 评论 -
BZOJ 2395: [Balkan 2011]Timeismoney
最小乘积生成树。sigma(Ai) * sigma(Bi) 最小。我们把每个生成树描述为一个点(sigma(Ai),sigma(Bi)),那么显然最小的sigma(Ai) * sigma(Bi)一定出现在凸包上又由于一些反比例函数的基本知识发现最小的乘积一定出现在凸包的顶点上,如果在边上,那么一定有一边在反比例函数的另一端。然后用Quickhall这个清新的算法求凸包,主要是因为点数太多才...原创 2018-10-19 16:55:09 · 153 阅读 · 0 评论 -
树上dsu
现在有一棵二叉树,所有非叶子节点都有两个孩子。在每个叶子节点上有一个权值(有n个叶子节点,满足这些权值为1…n的一个排列)。可以任意交换每个非叶子节点的左右孩子。 要求进行一系列交换,使得最终所有叶子节点的权值按照遍历序写出来,逆序对个数最少。n&lt;=200000这个题其实就是要求出每个非叶子节点的,左儿子中的一个叶子上的值大于右儿子中一个叶子的值,的对数。树上dsu就是一种启发式合并,...原创 2018-10-27 16:53:25 · 437 阅读 · 0 评论 -
网络流的各种加边优化
1.最显然的前缀优化。2.线段树优化【CF 793G】Oleg and Chessdalao博客3.倍增优化 CF786E ALT 最小割+倍增lca这个dalao讲的好原创 2018-12-23 11:20:01 · 543 阅读 · 0 评论 -
「CodePlus 2018 3 月赛」寻找车位
access_globe 有一个巨大的停车场,这个停车场有 nn 行,每行有 mm 个车位。为了美观,access_globe 在建立这个停车场时,规定这个停车场必须是长条形的,即 n\ge mn≥m。每个车位都是一个正方形的区域。最近,access_globe 正在为抽不到 Missing Poster 而苦恼,因此他请你帮他维护这个停车场。你需要支持两个个事件:一辆车停到某一个车位中,或...原创 2019-01-03 19:40:46 · 373 阅读 · 0 评论 -
K-D Tree
就是用一些的方法把平面按点分成若干块,方便你剪枝(这思路真暴力)因为是剪枝暴力,复杂度是O(能过),可以拿来干超级多的事情CQOI2016 : K远点对#include<cstdio>#include<cstring>#include<cctype>#include<algorithm>#include<queue>#incl...原创 2018-03-15 14:35:42 · 249 阅读 · 0 评论