![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
码力提高题
Freopen
这个作者很懒,什么都没留下…
展开
-
「WC2020」有根树(轻重链剖分)
题目容易发现题目中那个包含111的连通块是提示你的,并不是来限制你的。那么答案一定是SSS中选择最大的若干个www,剩下的www的最大值≤∣S∣\leq |S|≤∣S∣。设剩下的 www为集合XXX考虑一个调整的过程:如果∣S∣<maxw∈Xw|S| \lt \max_{w \in X} w∣S∣<maxw∈Xw,则选出maxw∈Xw\max_{w \in X} wmaxw∈Xw从XXX删去后加入SSS。如果∣S∣>maxw∈Xw|S| \gt \max_{w\in原创 2020-08-08 20:03:38 · 802 阅读 · 0 评论 -
20200726模拟赛 C.树高
待填。人生第一次在ACACAC前有90次提交记录的题。人生第一次写了10K10K10K代码的题(写完6KTreap6KTreap6KTreap发现TLETLETLE的死死的然后开始写7KSplay7KSplay7KSplay然后卡了一个世纪。)AC Code\mathcal AC \ CodeAC Code#include<bits/stdc++.h>#define maxn 200005#define rep(i,j,k) for(int i=(j),LIM=.原创 2020-07-27 09:37:18 · 378 阅读 · 0 评论 -
sort(区间异或,区间排序,区间或,区间与,Trie树合并,Treap)
看标题就知道是大工业题四种操作(标题前四个短语)求最后的序列。n≤1e5,v≤232n \leq 1e5 , v \leq 2^{32}n≤1e5,v≤232考虑只有排序:发现有序的一段可以直接用一个01trie01trie01trie树来存储,trietrietrie树上字典序从小到大的值就是这一段从左到右的值。那么区间排序[l,r][l,r][l,r]时就相当于把这个区间[l,r][l,r][l,r]的所有数字放到一个trietrietrie树T1T_1T1里面,用一个三元组[l,r,T1原创 2020-07-25 17:58:57 · 660 阅读 · 0 评论 -
二维恶心强制在线卡空间数点(主席树+KD树)
为啥要主席树加KD树?因为这个恶心出题人强制在线卡空间卡时间。主席树处理询问333KD树处理=1,2=1,2=1,2勉强卡过时限。#include<bits/stdc++.h>#define maxn 800005#define Ct const#define rep(i,j,k) for(int i=(j),LIM=(k);i<=LIM;i++)using n...原创 2020-01-02 20:26:34 · 504 阅读 · 1 评论 -
CSP模拟赛20191111 密码(数位DP)
n<=1e1000,p<=1e9,k<=1e9n<=1e1000,p<=1e9,k<=1e9n<=1e1000,p<=1e9,k<=1e9请注意p is primep \ is \ primep is prime对于一个(ls)=l!s!(l−s)!\binom ls = \frac {l!}{s!...原创 2019-11-11 13:52:07 · 195 阅读 · 0 评论 -
LOJ #2252. 「ZJOI2017」多项式(倍增)
题目思路简单代码毒瘤的经典简单OI题,真的只需要会倍增题解主要就是一句话:一个(mod2)\pmod 2(mod2)意义下的多项式的平方就是每一项的指数×=2\times =2×=2,那么可以考虑使用递归形式的快速幂来利用可快速平方和乘一个原多项式的性质,又因为需求串长度<=18<=18<=18,所以我们可以考虑存长度为需求串长的所有串的个数,并在倍增时简单转移所有串的个数,...原创 2019-10-26 17:27:01 · 424 阅读 · 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 · 174 阅读 · 0 评论 -
LG P1501 [国家集训队]Tree II(LCT,多重标记)
题目我数据结构果然还是太菜了。有多重标记的时候可以定义群(其实就是满足结合律结构体)来简化代码。设(a,b)(a,b)(a,b)可以使(val[x],sum[x])(val[x],sum[x])(val[x],sum[x])变为(val[x]∗a+b,sum[x]∗a+b∗siz[x])(val[x]*a+b,sum[x]*a+b*siz[x])(val[x]∗a+b,sum[x]∗a+b∗...原创 2019-03-19 11:27:30 · 110 阅读 · 0 评论 -
LG P3920 [WC2014]紫荆花之恋(Treap+动态点分治+替罪羊树式重构)
题面时代在进步啊,连我这种高一蒟蒻都可以一下午切紫荆花之恋其实这个题的思路对于刷了几道动态点分治的选手来说还是比较裸的。就是一个支持插入点的动态点分治,点分树上需要用平衡树来维护答案而已。嗯。浓厚的OI气息。平衡树在不求奇怪操作的情况下都首选有旋转treap,好写好调速度快。在插入时直接插入,点分树可能会在多次插入后变形,这时用替罪羊树的思想重构点分树。平均重构O(nlogn)O...原创 2019-03-22 20:04:23 · 216 阅读 · 0 评论 -
BZOJ 4231 回忆树(AC自动机+BIT+KMP)
回忆树是树。具体来说,是n个点n-1条边的无向连通图,点标号为1~n,每条边上有一个字符(出于简化目的,我们认为只有小写字母)。对一棵回忆树来说,回忆当然是少不了的。一次回忆是这样的:你想起过往,触及心底…唔,不对,我们要说题目。这题中我们认为回忆是这样的:给定2个点u,v(u可能等于v)和一个非空字符串s,问从u到v的简单路径上的所有边按照到u的距离从小到大的顺序排列后,边上的字符依次...原创 2019-04-02 14:33:57 · 383 阅读 · 0 评论 -
BZOJ 3205: [Apio2013]机器人(类斯坦纳树DP)
题目to(x,y,k)\rm to(x,y,k)to(x,y,k)代表在(x,y)(x,y)(x,y)按kkk方向推可以到达哪里(如果会循环的话就不存在)dp(i,j,x,y)\rm {dp(i,j,x,y)}dp(i,j,x,y)代表在(x,y)(x,y)(x,y)处得到i,i+1...ji ,i+1... ji,i+1...j等机器人的合体的代价。那么可以有:dp(i,j,x,y)=m...原创 2019-04-02 16:15:16 · 5606 阅读 · 0 评论 -
Codeforces Educational Codeforces Round 64 G Optimizer(造计算机题?)
题目给出一系列的计算机简单语句,求无论每个变量的值怎么变,答案仍为原程序答案的最少行数程序(你可以自己增加新变量但是这个新变量也要满足条件)。题解:首先可以感受到这个题很强大,一定有高超的技巧无数的细节。首先我们对于直接===的语句显然是需要简化的。其次我们对于计算的表达式相同的变量也是可以简化的。(注意不满足结合律,所以a#b#c#d!=(a#b)#(c#d))然后我们发现每个值可...原创 2019-05-04 17:24:37 · 139 阅读 · 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 · 231 阅读 · 0 评论 -
UOJ#57./bzoj3051 【WC2013】(平面图转对偶图)
我极度推荐去Luogu交,完全不要管什么UOJ平面图转对偶图这个实现。。。太恶心了。1:其实从每条边开始走最左转线,是不会走到别的平面的边上的,第一次走到走过的边一定是开始的那条边。2:找最左转线的时候可以把每个点出发的边按极角排序,找下一条边就是找当前边的反向边的同出发点的极角更小的第一条边。3:因为平面图的边不会在中途相交,在中途我们可以用set维护斜率和截距(斜率为无限大的不需要考...原创 2019-03-13 16:52:03 · 241 阅读 · 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 · 302 阅读 · 0 评论 -
CF 1106 F. Lunar New Year and a Recursive Sequence
给出一个k阶递推式(mod998244353)\pmod{998244353}(mod998244353),f[1...k−1]=1,f[n]=mf[1...k-1] = 1,f[n] =mf[1...k−1]=1,f[n]=m求f[k]f[k]f[k]这个递推式显然让人想两边同时求一个对数。令g[i]=logf[i]g[i] = \log f[i]g[i]=logf[i]有g[i]=∑...原创 2019-02-01 13:27:18 · 244 阅读 · 0 评论 -
[NOI2007]生成树计数 (基于连通性的状态压缩动态规划+矩阵快速幂优化)
题意:n个点排成一排,每个点往它前k个点连边,求生成树个数。n&lt;=1e15,k&lt;=5n&lt;=1e15,k&lt;=5n<=1e15,k<=5其实这个题很OI的。考虑从左到右把点加入然后维护生成树个数,可以发现需要区分的状态只有前k的点的联通情况(快速判断成环或不连通),然后最小表示法基于连通性的状态压缩dp一发,然后就是喜闻乐见的发...原创 2019-02-22 17:55:47 · 273 阅读 · 0 评论 -
FZU 2199 Patchmania I
原题中文题面说的很清楚,这里就不转述了1.选一个萝卜i做起点,求最小距离Ai和最小距离方案数Bi。2.求覆盖所有萝卜,以洞为终点的路径条数Ci。答案方案数就是∑i=1nBi∗Ci∗[Ai==minA]\sum_{i=1}^nB_i*C_i*[Ai == minA]∑i=1nBi∗Ci∗[Ai==minA]注意Ai,BiA_i,B_iAi,Bi在统计路径时路径不能跨过#和O另外没...原创 2019-02-21 10:43:10 · 162 阅读 · 2 评论 -
BZOJ 2594: [Wc2006]水管局长数据加强版(LCT + 克鲁斯卡尔算法)
题目LCT是不可能常数小的,永远都不可能常数小的。离线倒序加边动态维护最小生成树不用讲了。有谁知道,多少像我一样的OIER打了代码一直TLE后,几度质疑自己的无言的选择,有谁知道,在这个梦想如钻石一般珍贵的年华,人机对峙,侧身西望的孤寂,曾经的LCT之梦,也化作“这数据结构也就跑跑小数据”“以后还是打树剖吧”间那一抹苦笑。然而,LCT并不是TLE的原因。。。。。。数据加强?It′s&n...原创 2019-03-19 16:32:57 · 122 阅读 · 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 · 191 阅读 · 0 评论 -
LG P3345 [ZJOI2015]幻想乡战略游戏(树的带权重心 + 树链剖分+ 动态点分治)
题目首先这个题看起来这个最小值不好在动态点分治时维护。(居然)可以转化。最小值于树的带权重心处取到。带权带的是点权。树的带权重心是子树权∗2>=总树权子树权*2>=总树权子树权∗2>=总树权的点中最深的。不可能会有多个因为子树权∗2>=总树权子树权*2>=总树权子树权∗2>=总树权的点一定形成一条由根出发的链。那么就...原创 2019-03-20 12:34:30 · 361 阅读 · 0 评论 -
BZOJ 2759 一个动态树好题(不换根LCT+exgcd~疑似ddp起源?~)
题目看到这个题目,你想得到LCT,但是你会对这个构图十分陌生。其实我们无向图LCT做惯了之后对于有向图反而束手无策。人也该归于乡土。言归正传。首先这个图应该是个有向图。因为每个xxx依赖于xpx_pxp,当然你硬要从xxx反解xpx_pxp我也没啥意见。然后n个点n条边,每个点入度为1。我们应该意识到这是一个基环森林。不一定联通。然后对于每个联通块,都一定有一个环。如果这个...原创 2019-03-20 20:18:59 · 288 阅读 · 0 评论 -
BZOJ 3295: Cqoi2011动态逆序对
题目凭吊我以前没过的3KB代码和现在的1.2KB代码,哎。题解:首先我们比起删除更喜欢插入,所以我们可以把m次删除操作倒过来看作m次插入操作。然后显然我们就需要求每次插入一个数,求出插入这个数增加了多少逆序对即可。(思路清晰)那么这就是一个动态二维数点问题直接上树状数组套主席树就结束了。可是这怎么1.2KB呢?考虑用CDQ分治。假设每个数的位置为aia_iai,数的大小为bib_...原创 2019-03-08 11:48:41 · 182 阅读 · 0 评论 -
BZOJ 4009: [HNOI2015]接水果(整体二分套二维偏序)
题目表示这种题好套路啊。原题如果注意到一条路径包含另一条路径,那么在dfs序上第一条路径的端点与第二条路径的端点是有一个偏序关系的。然后就变成了二分答案+三维偏序。因为可以离线,将二分答案和一维整合起来变成整体二分O(nlogn)O(n\log n)O(nlogn)。剩下两维就是一个二维偏序,排序后树状数组维护O(logn)O(\log n)O(logn)。一共O(nlog2n...原创 2019-03-20 22:25:01 · 152 阅读 · 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 · 183 阅读 · 0 评论 -
Codeforces 780 H Intranet of Buses
毒瘤出题人A了一道毒瘤题然后搬。。。。。。思路很简单,二分答案后two-pointers把每对边,相邻的鸽子会各自在其上的情况求距离小于二分的答案的时间区间,这是个二次函数直接求。然后发现判定答案就是找交集。转化为非法区间取并就可以排序贪心判定合法。这题让我深刻的理解到计算几何题好像是过了样例就能A,在打完后完全不相信自己能A的蒟蒻如是说。#include<bits/stdc++.h&...原创 2019-01-09 20:22:56 · 379 阅读 · 0 评论