- 博客(699)
- 收藏
- 关注
原创 【联合省选 2020 A】题解
冰火战士线段树上二分即可具体实现可以参见代码#include<bits/stdc++.h>using namespace std;#define cs const#define pb push_back#define pii pair<int,int>#define fi first#define se second#define ll long long#define bg beginnamespace IO{cs int rlen=1<<2
2020-06-24 17:30:44 790
原创 【2020省选模拟】题解
T1:把前序遍历左右看做括号序列,就是0≤s≤m−20\le s\le m-20≤s≤m−2,折线容斥即可#include<bits/stdc++.h>using namespace std;#define cs const#define pb push_back#define pii pair<int,int>#define fi first#define se second#define ll long longnamespace IO{cs int r
2020-06-18 10:33:23 2170 2
原创 【2020省选模拟】题解
T1:直接求≤k\le k≤k的答案就是n![xn](∑i=0kxii!)mn![x^n](\sum_{i=0}^k\frac{x^i}{i!})^mn![xn](∑i=0ki!xi)m暴力ln,exp\ln,\expln,exp即可O(n3)O(n^3)O(n3)#include<bits/stdc++.h>using namespace std;#define cs const#define pb push_back#define pii pair<int,in
2020-06-16 19:15:12 457 1
原创 【2020省选模拟】题解
T1:直接开每个颜色开一个线段树维护直径,再对颜色开颗线段树即可T2:首先可以发现sgsgsg就是maxdepmaxdepmaxdep首先我的垃圾做法是考虑提出直径,然后大力分类讨论在这里插入代码片stdstdstd是考虑直径中点为根维护两个方向的mxdepmxdepmxdep这样就只是把一条链的权值换一下,树剖即可仲爺教育我的神仙方法直接把1作为根不同的只是1到当前根的路径只需要重剖时链权值变成重儿子为根的depdepdep跳轻链的时候另外算一下即可T3:考虑设f[i][
2020-06-16 08:47:46 371
原创 【2020省选模拟】题解
T1:考虑提出所有合法三角形发现旋转关系可以传递(a,b,c),(c,d,e)(a,b,c),(c,d,e)(a,b,c),(c,d,e),可以通过(c,d,e),(a,b,c),(e,d,c)(c,d,e),(a,b,c),(e,d,c)(c,d,e),(a,b,c),(e,d,c)构造(a,b,e)(a,b,e)(a,b,e)然后考虑先确定两个A,BA,BA,B然后可以构造出交换任意的x,yx,yx,y的方法:(A,B,x),(A,B,y),(A,B,y),(A,B,x)(A,B,x),(A,
2020-06-16 08:46:11 294
原创 【2020省选模拟】题解
T1:对树分层dpdpdp即可f[i][j][k]f[i][j][k]f[i][j][k]从大到小第iii个,jjj个当前层的点,kkk个下一层的点要么选一个当前层,要么当前层全部拆到下和下下层#include<bits/stdc++.h>using namespace std;#define cs const#define pb push_back#define pii pair<int,int>#define fi first#define se second
2020-06-11 21:07:28 325
原创 【2020省选模拟】题解
T1考虑记出欧拉回路图后任意断/连边都可行而DPDPDP只需要考虑简单容斥一下即可#include<bits/stdc++.h>using namespace std;#define cs const#define pb push_back#define ll long long #define pii pair<int,int>#define fi first#define se second#define bg begincs int RLEN=(1<
2020-06-11 10:19:30 380
原创 【2020省选模拟】题解
T1:脑残搞了个两个log的做法就是每个权值的堆在一起算贡献,然后光荣爆炸实际上每个midmidmid分开处理讨论一下就是单次O(n)O(n)O(n)的了先二分出对应权值用堆维护每个下一个的面积暴力更新即可#include<bits/stdc++.h>using namespace std;#define cs const#define pb push_back#define pii pair<int,int>#define fi first#define s
2020-06-10 22:04:12 292
原创 【2020省选模拟】题解
zxytxdyzxytxdyzxytxdy!!!吊打全场!!!T1:显然就是让你求多次%\%%不同数下的循环节fff首先打表可以发现f(pk)=f(p)pk−1f(p^k)=f(p)p^{k-1}f(pk)=f(p)pk−1f(xy)=lcm(f(x)f(y)),(x,y)=1f(xy)=lcm(f(x)f(y)),(x,y)=1f(xy)=lcm(f(x)f(y)),(x,y)=1然后考虑怎么求f(p)f(p)f(p)即可求得循环节只考虑奇素数非平凡情况,另外的f(2)=3,f(5)=10f
2020-06-09 22:04:02 289
原创 【2020省选模拟】题解
T1:之前cfcfcf的一道原题容斥0/10/10/1后发现只和111连续段有关枚举拆分后或卷积即可#include<bits/stdc++.h>using namespace std;#define cs const#define pb push_back#define pii pair<int,int>#define fi first#define se second#define ll long long #define bg beginnamesp
2020-06-08 09:39:56 344
原创 【2020省选模拟】题解
传送门又是我不会的神仙dpdpdp考虑第一问很容易做,一种贪心方案将序列划分成若干区间一个可以显然发现的是满足第一问的转移一定是区间之间的转移同时还有一个合法转移导致的可取区间的限制考虑如果枚举上一个端点,只需要考虑中点在这区间内的区间的贡献考虑一下发现可以直接分成左右两边中点坐标前缀和即可然后考虑转移,发现虽然贡献似乎不满足四边形不等式,但是这个仍然有决策单调性因为对于fi,fj,i<j,f_i,f_j,i<j,fi,fj,i<j,若某一时刻满足fi+vali,k&g
2020-06-06 09:21:19 271
原创 【2020省选模拟】题解
T1:考虑反悔贪心,可以发现要么是(2,1)−>(2,4),(2,1)->(2,4),(2,1)−>(2,4),即可以一次操作+3+3+3或者(1,2)∗2−>(2,1,0)+(0,2,1)+(0,1,2)/+(0,1,2)∗3(1,2)*2->(2,1,0)+(0,2,1)+(0,1,2)/+(0,1,2)*3(1,2)∗2−>(2,1,0)+(0,2,1)+(0,1,2)/+(0,1,2)∗3即可以把一次+3+3+3改成多给后面2个+3+3+3的机会#incl
2020-06-03 22:06:39 228
原创 【2020省选模拟】题解
因为漏写了函数签名在Dev5.11Dev5.11Dev5.11下开Wall并不会出错而爆零T1:发现只需要考虑是否有奇方案黑白点和当前方案为奇偶即可#include<bits/stdc++.h>using namespace std;#define cs const#define pb push_back#define ll long long#define pii pair<int,int>#define y1 shiki#define fi first#de
2020-06-02 21:31:36 207
原创 【2020省选模拟】题解
T1:kthmin−maxkth \min-\maxkthmin−max容斥后一个集合期望为(n+12)w,w\frac{{n+1\choose 2}}{w},ww(2n+1),w是相交区间数于是暴力O(n5)dpO(n^5)dpO(n5)dp可过fsyfsyfsy有神仙的四方做法但是我不会/kk#include<bits/stdc++.h>using namespace std;#define cs const#define pb push_back#define p
2020-06-01 19:21:42 374
原创 【2020省选模拟】题解
T1:线性基模板#include<bits/stdc++.h>using namespace std;#define cs const#define re register#define pb push_back#define pii pair<int,int>#define ll unsigned long long#define y1 shinkle#define fi first#define se second#define bg beginname
2020-05-29 18:38:55 252
原创 【2020省选模拟】题解
胡策题感觉出了一道送分的瑠璃色の物語我的送分题SolutionSolutionSolution#include<bits/stdc++.h>using namespace std;#define cs const#define re register#define pb push_back#define pii pair<int,int>#define ll long long#define y1 shinkle#define fi first#defin
2020-05-27 18:51:59 407
原创 【2020省选模拟】题解
T1:线段树模板题,标记永久化和减少 updateupdateupdate 次数都可以有效减少常数stdstdstd的做法是异或随机值,少一个logloglog#include<bits/stdc++.h>using namespace std;#define cs const#define pb push_back#define ll long long#define pii pair<int,int>#define fi first#define se sec
2020-05-26 17:24:40 235
原创 AtCoder Grand Contest 044 简要题解
传送门Pay to Win考虑要么从nk,\frac n k,kn,或者nk+1\frac n k+1kn+1变过来,其他一定不优直接做即可codeJoker考虑每次暴力松弛是O(n4)O(n^4)O(n4),由于每个位置最多松弛O(n)O(n)O(n)次所以复杂度是O(n3)O(n^3)O(n3)的codeStrange Dance考虑从低位到高位建出一颗三叉树那么操作分别是交换1,21,21,2儿子以及0,1,20,1,20,1,2依次换位,递归000儿子继续做最后还原即可
2020-05-25 14:51:14 440
原创 【2020省选模拟】题解
T1:首先判s<0s<0s<0或s=0,a≠0s=0,a\not=0s=0,a=0无解考虑操作相当于交换前缀和对于序列就是前缀和单调不降且非负如果非负则答案为逆序对数对于环,令前缀和为循环无限前缀和(包括负下标)设pi=∑j>i,sj<si1p_i=\sum_{j>i,s_j<s_i}1pi=∑j>i,sj<si1,则显然ppp有限一次操作交换a<0a<0a<0的地方会恰好使ppp减一所以只用计算ppp对
2020-05-20 20:28:54 229
原创 【Codeforces 917 E】Upside Down(Ac自动机 / 后缀数组 / 哈希 / border相关 / Kmp / Exgcd)
传送门至今写过最长的字符串题看起来和回忆树差不多但不能直接kmpkmpkmp了分成u→lca,lca→vu\rightarrow lca,lca\rightarrow vu→lca,lca→v和穿过lcalcalca分别考虑前面直接照搬回忆树的做法考虑穿过lcalcalca的求出u→lcau\rightarrow lcau→lca中最长的后缀满足是SSS的前缀的长度以及lca→vlca\rightarrow vlca→v最长前缀满足为SSS后缀的长度得到了可以直接利用borderborde
2020-05-20 20:18:20 668
原创 【2020省选模拟】题解
T1:处理出左右比他大的范围然后分有没有覆盖分别维护一下即可注意zkwzkwzkw由于区间[l−1,r+1][l-1,r+1][l−1,r+1]所以处理到M≤n+1M\le n+1M≤n+1#include<bits/stdc++.h>using namespace std;#define cs const#define pb push_back#define ll long long #define pii pair<int,int>#define fi fir
2020-05-19 17:58:36 191
原创 【2020省选模拟】题解
说实话最近越来越鸽了T1:从左到右用数据结构维护一下操作查一下后缀maxmaxmax即可脑残写的平衡树#include<bits/stdc++.h>using namespace std;#define cs const#define pb push_back#define pii pair<int,int>#define fi first#define se second#define ll long long #define bg begincs int
2020-05-18 18:23:37 176 1
原创 【2020省选模拟】题解
T1线段树优化建图后强联通缩点再跑个拓扑排序求一个是否必要即可用堆维护一下分量内的值#include<bits/stdc++.h>using namespace std;#define cs const#define pb push_back#define pii pair<int,int>#define fi first#define bg begin#define se second#define ll long longcs int RLEN=1<
2020-05-14 14:44:30 230
原创 【Codeforces 1349 F2】Slime and Sequences (Hard Version)(生成函数 / 多项式Exp / 拉格朗日反演)
传送门考虑一个排列和那个是一一对应的paip_{a_i}pai的权值是aia_iai前<<<的个数+1而一个排列<<<的个数即欧拉数,设为f[i][j]f[i][j]f[i][j]计算可以利用二项式反演至少至少钦定组内递增就是斯特林数f[i][j]=1j!∑k=jik!(−1)k−j(k−j)![xi](ex−1)i−kf[i][j]=\frac 1 {j!}\sum_{k=j}^{i}k!\frac{(-1)^{k-j}}{(k-j)!}[x^i](e
2020-05-13 18:47:12 1058 2
原创 CodeChef May Challenge 2020 简要题解
因为之前没打过只能打div2div2div2感觉题还不错的样子Coronavirus Spread略Isolation Centers略Sorting Vases 先对非二元环做,然后将二元环两两合并codeChef and Bitwise Product比较脑残的做法从高往低枚举考虑对于一个可以0/10/10/1任意选的地方选000后面显然在满足下界情况直接贪心然后选...
2020-05-11 17:46:41 427
原创 【Codeforces gym 102220】I Temperature Survey(分治NTT)
传送门考虑加一个n+1n+1n+1的然后转成左上角走到右下角直接没法分治nttnttntt考虑枚举将a[mid]a[mid]a[mid]作为矩阵划分出来然后转移那么就是左/上转移到右/下设高为nnn,长为mmm上→下:上\rightarrow 下:上→下:P(x)=∑i=0m−1∑j=0iaj(i−j+n−1n−1)xiP(x)=\sum_{i=0}^{m-1}\sum_{j=0}^ia_{j}{i-j+n-1\choose n-1}x^iP(x)=∑i=0m−1∑j=0iaj(n−
2020-05-08 21:49:40 453
原创 【2020省选模拟】题解
T1考虑转成切比雪夫距离后记录四个边界dpdpdp每次暴力枚举下一个作为新边界的点dpdpdp,剩下加入点直接计算和新矩形的答案由于显然不可能左右横跳着选,这样能把所有情况考虑进去#include<bits/stdc++.h>using namespace std;#define cs const#define re register#define pb push_ba...
2020-05-07 23:33:18 273
原创 【2020省选模拟】题解
T1:fjoi2016神秘数fjoi2016神秘数fjoi2016神秘数T2:首先可以转成二分图博弈模板就做完了具体是跑一个二分图最大匹配考虑某一个点,如果存在一个最大匹配使其不在最大匹配内则先手必败证明显然因为这样只能按匹配走,必然输对于一个点跑两次最大匹配即可对于所有点只需要先找到一个不在最大匹配内的,按增广路走可以走到的点显然都可以不在最大匹配内然后就做完了#incl...
2020-05-04 17:05:43 239
原创 【LOJ #6391】「THUPC2018」淘米神的树 / Tommy (多项式多点求值)
传送门显然把链提出来,两端点子树内每个点的贡献为1siz\frac {1}{siz}siz1最后乘一个n!n!n!考虑链上的,如果枚举最后一个点不好算考虑枚举一条边作为没经过的且在a,ba,ba,b之间连一条边那么每个点恰好被计算两次记sizsizsiz为每个点非链子树sizsizsiz的对于(i,i+1)(i,i+1)(i,i+1)之间的边贡献就是∏j≠i1∣sizi−si...
2020-05-04 13:02:44 247
原创 【2020省选模拟】题解
T1:分块暴力即可codeT2:主席树维护kmpkmpkmp自动机和第一个主席树的根因为一个傻逼地方调到心态爆炸codeT3:如果没有%4\%4%4的乘222就是简单东西线段树维护矩乘维护dpdpdp即可对于%4×2\%4\times2%4×2,1,3→2,0,2→01,3\rightarrow 2,0,2\rightarrow 01,3→2,0,2→0于是可以再维护一个%2...
2020-04-29 14:58:38 266
原创 【LOJ #129】【模板】 Lyndon 分解
传送门由于LLL串是不增的可以发现一定连续一段LLL串相同于是考虑先分割成单减的,然后每一部分按循环节分割考虑假设已经求出了1...i−11...i-11...i−1的lyndonlyndonlyndon分解且恰好分解完考虑从iii开始,设j,kj,kj,k两指针,初始j=i,k=i+1j=i,k=i+1j=i,k=i+1kkk指向循环节TTTT′TTTT'TTTT′的结尾,j=k−∣...
2020-04-29 07:58:11 342
原创 【洛谷 P5410】【模板】扩展 KMP / Z-algorithm
传送门设ziz_izi表示lcp(s[i....n],s[1....i])\mathit{lcp}(s[i....n],s[1....i])lcp(s[i....n],s[1....i])只用考虑对一个串处理nxtnxtnxt
2020-04-29 07:50:31 208
原创 【LOJ #2419】「USACO 2016 US Open, Platinum」Landscaping(模拟费用流)
传送门冷静一下发现就是模拟费用流板子a,ba,ba,b取大也是一样做,记一个个数即可code
2020-04-26 22:14:37 326
原创 【LOJ #2386】「USACO 2018.01 Platinum」Cow at Large(点分治 / 树状数组)
传送门不知道为什么lglglg题解里清一色只会用∑d=2m−1→1=2m−∑d\sum d=2m-1\rightarrow 1=2m-\sum d∑d=2m−1→1=2m−∑d容斥做法设mnleafu\mathit{mnleaf_u}mnleafu表示距点uuu最近的叶子节点的距离这个可以用脚dfsdfsdfs随便O(n/nlogn)O(n/nlogn)O(n/nlogn)做对于一个根的...
2020-04-26 22:07:50 807
原创 【2020省选模拟】题解
T1:只考虑r1≤r2r1\le r2r1≤r2的,另外反过来做即可考虑四种情况1:1:1:左下右显然是(r2−r1)+(c≠0)+c2(r2-r1)+(c\not=0)+c2(r2−r1)+(c=0)+c22:2:2:下(右)左在r2r2r2处处理维护一个单调递增的栈找到r1r1r1后第一个栈内元素pppchemn(c1,ap)chemn(c1,a_p)chemn(c1,...
2020-04-26 13:22:44 252
原创 【Codeforces 603 E】Pastoral Oddities(LCT)
传送门考虑显然合法当且仅当所有连通块大小为偶数于是用lctlctlct维护,每次加入一条边如果已经联通就断掉环上最长的边否则连这条边也不会使合法变成不合法的情况然后枚举最大边看是否能删去,能删则删#include<bits/stdc++.h>using namespace std;#define cs const#define re register#define ...
2020-04-23 22:11:45 211
原创 【LOJ #2869】「USACO 2018 US Open Platinum」Out of Sorts(冒泡排序)
传送门考虑一个位置被计算的次数就是左右分分别分割的较大时间考虑一轮冒泡排序,一个该在左边的右边的元素只会往左移一格所以找到最右的应该在左边的元素即可求出分隔的时间#include<bits/stdc++.h>using namespace std;#define cs const#define re register#define pb push_back#defin...
2020-04-23 22:04:04 324
原创 【LOJ #3266】「USACO 2020.2 Platinum」Equilateral Triangles(曼哈顿距离转切比雪夫距离)
传送门转成切比雪夫距离后发现就是满足三个点中有两个在正方形端点另一个在对边上的方案数横竖分别记一下前缀和做一下即可#include<bits/stdc++.h>using namespace std;#define cs const#define re register#define pb push_back#define pii pair<int,int>...
2020-04-23 22:00:49 419
原创 【Codeforces 590 E】Birthday(AC自动机 / 二分图匹配)
传送门建出AcAcAc自动机后即可求出串和串之间的偏序关系建成一个DAGDAGDAG然后做一次最长反链并输出方案即可#include<bits/stdc++.h>using namespace std;#define cs const#define re register#define pb push_back#define pii pair<int,int&g...
2020-04-23 11:10:39 284
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人