![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
奇巧淫技
Freopen
这个作者很懒,什么都没留下…
展开
-
Luogu P3830 SHOI2012 随机树
1原创 2019-03-11 15:07:49 · 106 阅读 · 0 评论 -
51nod 1850 抽卡大赛(动态DP?雾)
51Nod为了活跃比赛前的气氛,组织了场抽卡比赛。这场比赛共 n个人参加,主办方根据非欧血统鉴定器,得到了一些数据。每个人抽卡有 Mi 种可能,得到的卡能力值为 Aij 代价为 Gij 的可能性为 Pij ,所谓代价指的是玩家需要将一轮比赛后所得的点头盾的 Gij% 交给主办方。每轮比赛每个人都随机抽取卡片,待全部人抽取完毕后进行排名(按照A从大到小排),排在第 i 位的人有 Vi 的点头盾收入。...原创 2019-03-24 19:06:08 · 343 阅读 · 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 评论 -
Kth MIN-MAX反演
占坑(https://www.cnblogs.com/zjp-shadow/p/10252459.html)原创 2019-03-25 10:52:11 · 288 阅读 · 0 评论 -
LG P4278 带插入区间K小值(块状链表+值域分块)
题目这个博客是关于LG P4278的题解。这一点别有深意。原来BZOJ3065的替罪羊树套函数式线段树在LG被卡了。O(nn)O(n\sqrt n)O(nn)踩爆了O(nlog2n)O(n\log^2 n)O(nlog2n)风水轮流转,博主学分块。首先据说这个题是带插入的YNOI2018未来日记的弱化版。根据历史的进程。应该说YNOI2018未来日记是这个题不带插入的加强版。...原创 2019-03-21 22:51:25 · 287 阅读 · 0 评论 -
UOJ#57./bzoj3051 【WC2013】(平面图转对偶图)
我极度推荐去Luogu交,完全不要管什么UOJ平面图转对偶图这个实现。。。太恶心了。1:其实从每条边开始走最左转线,是不会走到别的平面的边上的,第一次走到走过的边一定是开始的那条边。2:找最左转线的时候可以把每个点出发的边按极角排序,找下一条边就是找当前边的反向边的同出发点的极角更小的第一条边。3:因为平面图的边不会在中途相交,在中途我们可以用set维护斜率和截距(斜率为无限大的不需要考...原创 2019-03-13 16:52:03 · 233 阅读 · 0 评论 -
BZOJ 1758: [Wc2010]重建计划(点分治+迭代)
题目不敢挂LG。点分治常数太大洛谷上过不了。。。。1.直接求边数为lll的路径的最大路径长度,这个点分治做不了。因为合并答案的时候是O(n2)O(n^2)O(n2)跑不掉的。唯一的特例是你写FFT。和和和卷积?不存在的。2.二分答案判定有无[L,U][L,U][L,U]的路径长度大于边数*二分的答案。在子树合并时相当于从小到大枚举一个子树深度,另一个子树深度的上限和下限都下降,求最大...原创 2019-03-25 16:27:06 · 169 阅读 · 0 评论 -
51nod 1989 竞赛表格(信仰题)
定义rev(i)rev(i)rev(i)为i十进制下各位翻转所得的数,例如rev(2345)=5432,rev(3210)=123rev(2345)=5432,rev(3210)=123rev(2345)=5432,rev(3210)=123。l0nl1f3比较无聊,他打算用revrevrev函数进行一个游戏。他找了一个无穷大的表格,设第i行第j列的格子上的数为f(i,j),那么f满足f(x...原创 2019-03-18 19:26:09 · 203 阅读 · 0 评论 -
BZOJ 1107: [POI2007]驾驶考试egz(树状数组LIS)
题目大佬的讲解其实就是发现能够作为起点的道路一定形成一段区间。这段区间的左端点能到达n,右端点能到达1,那么这段区间内的所有道路都能到任何一条路。那么只需要对左端点和右端点做文章即可。注意two-pointers的运用来代替二分。AC Code(BZOJ 的小常数O(nlogn)O(n\log n)O(nlogn)都要跑700ms。。。无语了):#include<bits/stdc...原创 2019-03-25 17:44:52 · 150 阅读 · 0 评论 -
BZOJ 3217: ALOEXT(块状链表+Trie树)
题目又是一道分块踩爆 log2\log^2log2的经典题目。因为有插入,用块状链表就行了。对于每个块维护一个Trie树维护01串,一个SET维护次大值(其实是我懒得自己用分块写)。Trie树这个东西其实对分块很不友好的,他修改查询都是log\loglog,无法通过平衡分块复杂度来得到更好的结果。修改直接插入块内的TrieO(logn)O(\log n)O(logn),询问暴力询...原创 2019-03-22 12:03:05 · 222 阅读 · 0 评论 -
【bzoj2400】Spoj 839 Optimal Marks 最小割
定义无向图中的一条边的值为:这条边连接的两个点的值的异或值。定义一个无向图的值为:这个无向图所有边的值的和。给你一个有n个结点m条边的无向图。其中的一些点的值是给定的,而其余的点的值由你决定(但要求均为非负数),使得这个无向图的值最小。在无向图的值最小的前提下,使得无向图中所有点的值的和最小。麻烦的是第二问,其实也不烦,把第一问的权值乘10000再在%10000的意义下找点最小值。也可以从...原创 2019-03-12 21:27:11 · 116 阅读 · 0 评论 -
BZOJ 2244: [SDOI2011]拦截导弹(三维偏序+BIT)
题目显然可以对时间CDQ分治,然后按高度排序,对速度用BIT维护前缀最大值。这样就可以算第一问。对于第二问。思维不要僵化。BIT可以在维护前缀最大值的同时维护方案数的。额。。。AC Code:#include<bits/stdc++.h>#define maxn 100005using namespace std;int n,h[maxn],v[maxn],sh...原创 2019-03-21 09:57:44 · 165 阅读 · 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 评论 -
[HAOI2011]problem a
题目:一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低。”问最少有几个人没有说真话(可能有相同的分数)n<=100000按ai从小到大排序,设f[i]f[i]f[i]为第i个人为真时最多的真话。那么f[i]=max(f[i],f[j]+1),j&lt;if[i] = max(f[i] , f[j] + 1) , j &lt; if[i]=m...原创 2019-03-11 10:29:18 · 182 阅读 · 0 评论 -
BZOJ 4026: dC Loves Number Theory(套路主席树)
题目发现就是区间乘积/∑pr出现在[l,r]的质因数中(pr−1)/pr\sum_{pr出现在[l,r]的质因数中}(pr-1)/pr∑pr出现在[l,r]的质因数中(pr−1)/pr关于出现过就加入这一条件。有一个套路:把每一个数yyy与他前面第一个和他相等的数xxx形成一个二元组(loc[x],loc[y])(loc[x],loc[y])(loc[x],loc[y]),第1个往0连。...原创 2019-03-19 21:51:14 · 179 阅读 · 0 评论 -
LOJ #2116. 「HNOI2015」开店(树链剖分+标记永久化主席树 || 动态点分治)
题目解法一:∑i∈[1,n] and x[i]∈[l,r]dis(u,i)=∑idep[u]+dep[i]−2∗dep[lca(u,i)]\sum_{i\in [1,n] \ and \ x[i]\in[l,r]} dis(u,i) = \sum_{i}dep[u]+dep[i]-2*dep[lca(u,i)]i∈[1,n] and x[i]∈[l,r]...原创 2019-03-20 08:48:10 · 185 阅读 · 0 评论 -
LG P3235 [HNOI2014]江南乐(SG函数)
题目首先这个题SG函数很明显。枚举分为多少堆然后对子状态的SG函数求mex就行。但是直接枚举是O(n2)O(n^2)O(n2)可以用整除分块:n个石子分成m堆:有nnn%mmm个大小为⌊nm⌋+1\lfloor\frac nm\rfloor+1⌊mn⌋+1的石堆。m−nm-nm−n%mmm个大小为⌊nm⌋\lfloor\frac nm\rfloor⌊mn⌋的石堆。现在只有r=n...原创 2019-03-15 21:44:46 · 137 阅读 · 0 评论 -
LG P3345 [ZJOI2015]幻想乡战略游戏(树的带权重心 + 树链剖分+ 动态点分治)
题目首先这个题看起来这个最小值不好在动态点分治时维护。(居然)可以转化。最小值于树的带权重心处取到。带权带的是点权。树的带权重心是子树权∗2>=总树权子树权*2>=总树权子树权∗2>=总树权的点中最深的。不可能会有多个因为子树权∗2>=总树权子树权*2>=总树权子树权∗2>=总树权的点一定形成一条由根出发的链。那么就...原创 2019-03-20 12:34:30 · 342 阅读 · 0 评论 -
BZOJ3774 最优选择(网络流最小割二元关系)
对于两个01变量,如果我们把图造成这个样子:a为x为0的代价,c为x为1的代价。b,d同理于y那么x,y之间好像没有关系。那么如果最小花费为最小割,可以列出4个关于abcdef的方程使得图中最小割为最小花费。然后我们就可以用最大流(最小割)初步处理二元关系了。这时2e=v1+v2-v3-v4=-K这里说的是如果K = v3 + v4 - v1 - v2(相异减相同)小于0,那...原创 2019-03-11 22:13:15 · 360 阅读 · 0 评论 -
BZOJ 3514: Codechef MARCH14 GERALD07加强版(LCT+主席树)
题目一个直观的想法:如果题目保证随时是一颗树就好了。那么答案就 = n - (R - L + 1)一个合理的联想:我可不可以通过对边的统计得到答案?如果我们把[L,R][L,R][L,R]中的边拿出来做克鲁斯卡尔,边权为边编号。那么一条边联通两个联通块,使联通块数量减小,当且仅当它是第一条连接这两个联通块的。像:区间查询颜色种类,每个颜色第一次出现才会有贡献。那么我们求出来每条边uu...原创 2019-03-20 15:54:59 · 105 阅读 · 0 评论 -
BZOJ 3901 棋盘游戏(可能是网络流但我只会暴力)
题面:在一个游戏中,给定一个 n n 的正方形棋盘,每个格子内有一个整数。保证 n 为奇数。令x = (n+1)/2 。你可以进行下述操作任意次:每次选择一个 x * x 的子棋盘,将其中所有数乘上-1。求经过一系列操作后棋盘上所有数之和的最大值。从x突破。首先发现对于(x,x)每一个操作都要改它,它的正负性为操作次数的奇偶性。然后发现对于(x,a)和 (x,a+x) (a&l...原创 2019-03-12 10:30:41 · 151 阅读 · 0 评论 -
BZOJ 3658 Jabberwocky(树状数组+双向链表)
平面上有n个点,每个点有k种颜色中的一个。你可以选择一条水平的线段获得在其上方或其下方的所有点。请求出你最多能够得到多少点,使得获得的点并不包含所有的颜色。我好弱啊。发现我们如果枚举上边界。那么我们的答案区间一定在上边界下的两个相邻的同色点(或左边界和某色点,或某色点和右边界)之间。发现上边界从上往下的过程中只会删除。那么使用双向链表O(1)O(1)O(1)维护相邻的同色点。树状数...原创 2019-03-20 17:23:28 · 200 阅读 · 0 评论 -
BZOJ 3881: [Coci2015]Divljak(AC自动机+树链的并+BIT)
Alice有n个字符串S1,S2...SnS_1,S_2...S_nS1,S2...Sn,Bob有一个字符串集合TTT,一开始集合是空的。接下来会发生qqq个操作,操作有两种形式:“1 P”,Bob往自己的集合里添加了一个字符串PPP。“2 x”,Alice询问Bob,集合T中有多少个字符串包含串SxS_xSx。(我们称串AAA包含串BBB,当且仅当BBB是AAA的子串)Bob遇到...原创 2019-03-25 20:43:01 · 158 阅读 · 0 评论 -
LG P3920 [WC2014]紫荆花之恋(Treap+动态点分治+替罪羊树式重构)
题面时代在进步啊,连我这种高一蒟蒻都可以一下午切紫荆花之恋其实这个题的思路对于刷了几道动态点分治的选手来说还是比较裸的。就是一个支持插入点的动态点分治,点分树上需要用平衡树来维护答案而已。嗯。浓厚的OI气息。平衡树在不求奇怪操作的情况下都首选有旋转treap,好写好调速度快。在插入时直接插入,点分树可能会在多次插入后变形,这时用替罪羊树的思想重构点分树。平均重构O(nlogn)O...原创 2019-03-22 20:04:23 · 212 阅读 · 0 评论 -
BZOJ 4657 tower(最小割棋盘覆盖模型)
题目考场上打了一发上下界最小费用流,55pts尚可。这个题是最小割的模型。因为炮塔不能瞄准炮塔,所以两个炮塔的攻击区域只会垂直相交。将炮塔横向覆盖的格子作为X部,纵向覆盖的格子作为Y部。横向覆盖的格子,相邻之间连无穷大的边,方向指向炮塔。纵向覆盖的格子,相邻之间连无穷大的边,方向指向炮塔的反方向。源点向横向覆盖的格子连边,容量为该格子的前缀最大值与它前一个格子的前缀最大值的增量。前...原创 2019-04-20 15:53:48 · 269 阅读 · 0 评论 -
LOJ #2462. 「2018 集训队互测 Day 1」完美的集合(组合数取(奇怪模数的)模 + DFS序DP+容斥)
题目part1\texttt{part1}part1DP求出完美集合的价值之和,这种树上联通块的DP一般可以用DFS序DP,把DFS序拿出来从右到左,如果当前dfs序为i的点选,则可以选择dfs序为i+1的点,否则跳过整颗子树,即f[i]=max(f[i+1],f[i+siz[pos[i]]])f[i] = max(f[i+1] , f[i + siz[pos[i]]])f[i]=max(f[...原创 2019-05-20 22:19:47 · 856 阅读 · 0 评论 -
LOJ #2563. 「SDOI2018」反回文串(Pollard-Rho , Mobius反演)
题目发现题目就是求循环某位数后是回文串的长度为n的串的数量。考虑长度为n的串,最小循环节出现了kkk次,串被分为了kkk块。那么循环nk\frac nkkn次后又会得到一个回文串。有没有可能比nk\frac nkkn更小呢?发现这个等价于求无循环节(循环节为字符串长度)的回文串循环多少次后还是回文串。发现循环u次后,串会变成一个长度为2u2u2u的回文串+一个长度为n−2un-2u...原创 2019-05-23 08:17:49 · 310 阅读 · 0 评论 -
BZOJ 2999 inint
从起点1开始,每次选择当前数的任意一位上加上去,问得到n的最小步数以及方案数。多组数据。例如,从1开始得到100,有很多方法,其中有下面两种方式:A. 1-2-4-8-16-17-18-19-20-22-24-28-36-39-48-56-62-68-76-83-91-100B. 1-2-4-8-16-17-24-28-36-39-48-56-62-68-76-83-91-100显然,B只...原创 2019-07-25 21:44:35 · 159 阅读 · 0 评论 -
51nod 1843 排列合并机(组合DP)
小C有一个合并排列机,它可以合并两个长度为n的排列A,B。合并一共有2*n步,一开始答案的数列为空,每一步有两个选项:(1).若A不为空,则你可以删掉A开头的元素,放到答案数列的末尾。(2).若B不为空,则你可以删掉B开头的元素,放到答案数列的末尾。以上两个选项每一步只能选一个小C不喜欢重复的东西,定义两个排列的价值f(A,B)f(A,B)f(A,B)为他们合并可以生成的答案数列的种数...原创 2019-07-26 16:48:57 · 284 阅读 · 0 评论 -
0816模拟赛
序列给定 n 个正整数的序列 a1,a2,a3…ana_1,a_2,a_3…a_na1,a2,a3…an, 对该序列可执行下面的操作:选择一个大于 k 的正整数 ai, 将 ai 的值减去 1; 选择 ai-1 或 ai+1 中的一个值加上 1。共给出 m 个正整数 k, 对于每次给定的正整数 k, 经过以上操作一定次数后,求出最长的一个连续子序列, 使得这个子序列的每个数都不小...原创 2019-08-16 17:21:35 · 134 阅读 · 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 评论 -
Luogu P3943 星空
题目差分后变成同时改变两个点的0/1状态。目标为把全部的1变为0(没有两个点的状态不同)如果两边都是0就不可能改。如果一边是1,一边是0就相当于1移动到0的位置。如果两边都是1就相当于抵消了。那么就相当于每次选两个1然后一直移动直到他们两个抵消。任意两个1的距离可以BFS预处理出来。然后就是完全图最大权匹配。作为一道NOIP题可以用状压DP。作为一道毒瘤题可以写带花树。AC ...原创 2019-09-07 16:45:23 · 116 阅读 · 0 评论 -
BZOJ 2457 BeiJing2011 双端队列(思维)
题目题解:发现对于双端队列中的数,位置最靠前的那一个数的左边所有的数是递减的,并且左边所有的数的位置是递增的,对于右边:数递增而位置递增。又发现每个队列中的数字都是连续的一段。那么这一段中的每个数的位置大小一定是先递减后递增的。从小到大贪心加入,不能加入就换一个队列就行了。重复的一定可以放在同一个队列并且是答案不劣。AC Code:#include<bits/stdc++.h&...原创 2019-09-14 15:54:59 · 142 阅读 · 0 评论 -
Codeforces Educational Codeforces Round 64 G Optimizer(造计算机题?)
题目给出一系列的计算机简单语句,求无论每个变量的值怎么变,答案仍为原程序答案的最少行数程序(你可以自己增加新变量但是这个新变量也要满足条件)。题解:首先可以感受到这个题很强大,一定有高超的技巧无数的细节。首先我们对于直接===的语句显然是需要简化的。其次我们对于计算的表达式相同的变量也是可以简化的。(注意不满足结合律,所以a#b#c#d!=(a#b)#(c#d))然后我们发现每个值可...原创 2019-05-04 17:24:37 · 132 阅读 · 0 评论 -
LG P3747 [六省联考2017]相逢是问候(欧拉定理+(暴力)线段树+光速幂)
题目这题怎么出的这么好啊。发现这个操作很不常规,那么就一定会有一些很不常规的性质。ci≡cimod  φ(p)(modp)c^i \equiv c^{i\mod \varphi(p)} \pmod pci≡cimodφ(p)(modp)cci≡c(cimod  φ(p))≡cim...原创 2019-04-03 20:34:57 · 273 阅读 · 0 评论 -
LG P4548 [CTSC2006]歌唱王国(概率生成函数+KMP求border)
题目设F(x)=∑i=0∞P(长度为i时结束)xiF(x)=\sum_{i=0}^{\infty} P(长度为i时结束)x^iF(x)=∑i=0∞P(长度为i时结束)xiG(x)=∑i=0∞P(长度为i时未结束)xiG(x)=\sum_{i=0}^{\infty} P(长度为i时未结束)x^iG(x)=∑i=0∞P(长度为i时未结束)xi∵P(长度为i时结束)+P(长度为i时未结束)=P...原创 2019-04-03 16:33:50 · 170 阅读 · 0 评论 -
BZOJ 4127 Abs(树链剖分+线段树)
给定一棵树,设计数据结构支持以下操作1 u v d 表示将路径 (u,v) 加d2 u v 表示询问路径 (u,v) 上点权绝对值的和对于100%的数据,n,m <= 10^5 且 0<= d,|a_i|<= 10^8感觉就最后一句有用。d为正数。那么我们可以直接上树剖加线段树。当区间加的区间内有变正负号的元素就下去暴力。只会下去O(n)O(n)O(n)次...原创 2019-03-22 21:19:10 · 141 阅读 · 0 评论 -
LG P3261 [JLOI2015]城池攻占(左偏树)
题目在dfs的过程中把所有能到达这个城池的骑士用可并堆存储。然后把不能通过该城池的弹走。堆上打标记真是666.加个快读快了10倍。。。。#include<bits/stdc++.h>#define maxn 300005#define LL long longusing namespace std;char cb[1<<15],*cs=cb,*ct=cb...原创 2019-03-23 17:04:05 · 123 阅读 · 0 评论 -
JZOJ 5988. 【WC2019模拟2019.1.4】珂学计树题
【问题描述】liu_runda曾经是个喜欢切数数题的OIer,往往看到数数题他就开始刚数数题.于是liu_runda出了一个数树题.听说OI圈子珂学盛行,他就在题目名字里加了珂学二字.一开始liu_runda想让选手数n个节点的不同构的二叉树的数目.但是liu_runda虽然退役已久,也知道答案就是Catalan(n),这太裸了,出出来一定会被挂起来裱.因此他把题目加强.我们从二叉树的根节点出...原创 2019-03-26 19:03:56 · 190 阅读 · 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 评论