
=====模板=====
文章平均质量分 73
Qingo呀
老菜鸡。
展开
-
2018 ICPC 南京 M. Mediocre String Problem (马拉车+扩展kmp)
题链:https://nanti.jisuanke.com/t/A2150题意:给出两个串S,T。求S的子串接上T的前缀子串(S子串的长度要大于T前缀子串的长度。)所能组成的回文串的个数。思路:我们可以把S的子串s分为两部分s1和s2。那么s2一定得是回文串且长度要大于1,s1与T的子串t又组成回文串。马拉车求出S(假设为cbaba)的每个回文子串。对于回文子串“aba”,可选的s2有1.“b”(对应的s1可以为"a","ba","cba",那么我们需要的T的子串前缀为"a","ab",原创 2020-12-14 19:40:40 · 301 阅读 · 0 评论 -
2019 ICPC 南京 J. Spy (离散化+前缀和+组合数学+二分图最大权匹配【KM BFS实现】)
题链:https://nanti.jisuanke.com/t/42404题意:给你一个n,再给出含有n个数的数组a,p,b,c。现在,你可以随意的将数组b和c中的数两两配对求和(总共有n!种配法),假设配对后的数组为d。然后再把a和d中的数两两配对比较。如果d[j]>a[i],那么可以获得p[i]单位的荣誉值,要求两两配对比较获得的荣誉值的和尽可能的大。求所能获得的荣誉值的期望乘以n,题目保证乘以n后答案为整数。思路:我们考虑一个配对比较(d[j],a[i]),如果d[j]>a[i],原创 2020-12-11 21:48:13 · 439 阅读 · 0 评论 -
图论-连通图学习总结
一、有向图有向图的问题就是直接Tarjan求强连通分量,然后搞就行。二、无向图1、割点和桥无向图的割点和桥的求法和有向图的差不多,唯一多的限制就是不能从该点往他的父亲走,当然可能会有重边。但有统一的解决方法,那就是标记走过的边,既然是无向图,那么加边的时候肯定加两条边(这俩边的编号关系就是相互^1),那么就走一条边时,把另一条边标记即可。 if(g[i].u...原创 2019-08-18 21:51:44 · 1508 阅读 · 0 评论 -
石油大 2020年秋季组队训练赛第二十五场 问题 H: Needle (FFT)
题目:思路:就是求数组a和数组c中有多少对(i,j),满足ai+cj==2*bk(k=1,2,3,..,nm)。将ai看作多项式的指数,num[ai]看作多项式的系数。FFT求多项式相乘,再计算答案,系数ai就是对应和为i的个数。#include <bits/stdc++.h>#define ll long longusing namespace std;const int N = 5e4+10;const int M = 9e4+10;const int base.原创 2020-12-08 19:53:20 · 396 阅读 · 0 评论 -
HDU - 1402 A * B Problem Plus (FFT)
题链:https://vjudge.net/problem/HDU-1402思路:模板题,注意前导零。#include <bits/stdc++.h>#define ll long longusing namespace std;const int N = 5e4+10;const double PI = acos(-1.0);struct Complex{ double r,i; Complex(double _r = 0,double _i = 0)原创 2020-12-08 19:39:47 · 134 阅读 · 0 评论 -
luogu P5906 【模板】回滚莫队&不删除莫队 (不删除莫队+离散化)
题链:https://www.luogu.com.cn/problem/P5906思路:维护每个数的最小坐标和最大坐标即可,添加时计算一下答案。这里要维护两组答案。#include <bits/stdc++.h>#define ll long longusing namespace std;const int N = 3e5+10;int n,m,a[N];struct node{ int l,r,id;}q[N];set<int> s;set<in原创 2020-11-30 21:15:47 · 213 阅读 · 0 评论 -
luogu AT1219 歴史の研究 (不删除莫队+离散化)
题链:https://www.luogu.com.cn/problem/AT1219思路:对于普通莫队,我们一般考虑添加和删除只是顺序变一下,但有的题删除操作根本没办法维护需要的东西。这时,不删除莫队就可以大显神威了,删除太难了,那我们不删除,只添加就好了。现在考虑怎么不删除,我们排序时,对于左端点在同一个块内的询问他们的r是从小到大有序的,那么我们可以利用这个特点,一个块一个块的计算询问区间。对于左端点在同一个块内的询问:首先考虑,如果询问区间的左右端点(ql、qr)都在一个块内,原创 2020-11-30 21:08:46 · 186 阅读 · 0 评论 -
luogu P4074 [WC2013]糖果公园 (树上带修莫队)
题链:https://www.luogu.com.cn/problem/P4074思路:用欧拉序处理成连续区间后,就和带修莫队差不多了。要注意的是,对于修改。要看看是否之前有没有被加过,加过(也就是vis[i]为1)的要减去,然后再加上新的;如果没加过就不用管。最后再加上lca的贡献就行。注意块的大小为。#include <bits/stdc++.h>#define ll long longusing namespace std;const int N = 1e5+10;c原创 2020-11-30 20:25:36 · 230 阅读 · 0 评论 -
luogu SP10707 COT2 - Count on a tree II (树上莫队+离散化)
题链:https://www.luogu.com.cn/problem/SP10707思路:树上莫队模板题。这里需要了解欧拉序(强推博客),利用欧拉序,就可以把树上的路径转化为连续区间的问题。这里还会用到LCA。对于树上u到v的路径,设first[u]<first[v],如果lca(u,v)==u,对应欧拉序的连续区间就为[ first[u] , first[v] ] ;否则,对应欧拉序的连续区间就为[ last[u] , first[v] ] , 不过还要加上 lca(u,v).原创 2020-11-30 20:07:42 · 194 阅读 · 0 评论 -
HDU - 6610 Game (带修莫队)
题链:https://vjudge.net/problem/HDU-6610题意:用到了尼姆博弈的结论。对于一个区间[L,R],问有多少子区间[l,r],a[l] ^ a[l+1] ^ a[l+2] ^ ... ^ a[r] != 0 ? 有修改,修改是将a[pos],a[pos+1]交换。思路:我们求等于0的子区间个数,再减去即可。CodeForces - 617E 的带修版。考虑修改带来的影响,首先因为前缀的思想,pre[pos-1]以及pre[pos+2] ,pre[pos+3] ,...原创 2020-11-30 19:31:08 · 192 阅读 · 0 评论 -
P1903 [国家集训队]数颜色 / 维护队列 (带修莫队模板)
题链:https://www.luogu.com.cn/problem/P1903思路:给每一个询问加一个时间戳,时间戳的取值就是之前最近的修改。排序时,先按左边界的块,再按右边界的块,最后按时间戳。先移动左右指针,然后再考虑修改。如果时间戳大了,说明我们改多了,我们需要再改回去,改的时候,要考虑是否对答案造成影响;如果时间戳小了,说明我们改少了,要改到询问所在的时间戳。注意:有的dalaodalao证明了当块的大小设时理论复杂度达到最优。不过可以证明,块大小取优于取的情况,总体复杂度。而块大小取时会退原创 2020-11-30 19:03:27 · 223 阅读 · 0 评论 -
莫队算法(普通莫队、带修莫队、树上莫队、不删除莫队)学习笔记【理解+套路/核心代码+例题及题解】
一、理解我的理解就是巧妙的暴力,利用双指针以及分块思想,巧妙的移动双指针,时间复杂度可以达到O(NlogN)。这里强推博客:写的又好又全。链接二、套路1、普通莫队int l=1,r=0;for(int i=1;i<=m;i++){ int ql=q[i].l,qr=q[i].r; while(l<ql) del(l++); while(l>ql) add(--l); while(r<qr) add(++r); while(r>qr) de原创 2020-11-29 22:40:05 · 855 阅读 · 0 评论 -
SGU 507 Treediff (dsu on tree)
题目链接:https://codeforces.com/problemsets/acmsguru/problem/99999/507题意:n个点,组成一个树,根为1。这个树有m个叶子节点,每个叶子节点上都有一个值。对于n-m个非叶子节点,输出其子树上的叶子节点中,每对节点值的差的绝对值的最小值。思路:有mp维护子树中叶节点的值,每插入一个值时,用第一个比他小的值和第一个比他大的值和他作差,更新答案。代码:#include <bits/stdc++.h>#define ll l原创 2020-11-21 11:34:57 · 203 阅读 · 0 评论 -
CF 570D Tree Requests (dsu on tree)
题目链接:https://codeforces.com/contest/570/problem/D题意:n条边,m个询问,每个节点上都有一个字符(仅为小写英文字符)。每个询问由v和h组成,问v的子树中,深度为h的节点任意排列是否能组成回文字符串(空字符串也是),每个询问输出“Yes”或“No”。思路:维护每个深度中每个字符的个数,最多只能有一个字符的个数为奇数。给每个询问建图,把每个询问归到相应v的子树中即可。代码:#include <cstdio>#include <原创 2020-11-21 11:17:08 · 156 阅读 · 0 评论 -
cin tie
ios::sync_with_stdio(false); cin.tie(0);原创 2020-11-19 15:55:41 · 271 阅读 · 0 评论 -
CodeForces - 609E Minimum spanning tree for each edge (MST+LCA[树上倍增实现])(次小生成树思想)
题目链接:https://codeforces.com/problemset/problem/609/E题意:n个点m条边,对于每条边,求包含这条边的MST的权重。思路:首先求出一个MST,假设其权重为sum。对于每条边,如果其在MST上,那么答案就是sum;否则,我们在求得的MST加上这条边(假设权重为w1),那么树出现了环。我们要在树上u->v的路径中删除权值最大的一条边(假设为w2),那么答案就是sum-w1+w2。求次小生成树也是这种思想。#include <bits/st原创 2020-11-16 22:05:09 · 265 阅读 · 1 评论 -
POJ-2942 Knights of the Round Table(补图+点双连通分量+奇圈+染色判断二分图+结论)
链接:http://poj.org/problem?id=2942题意:多组样例。亚瑟王要召唤骑士在圆桌会议。n个骑士,m个憎恨关系,一个骑士不能和他憎恨的骑士坐在一块。亚瑟王要求来开会的骑士的个数必须是奇数,在此条件下,求开除最少的骑士。(注意一个骑士不能开会,至少三个骑士才能开会。)思路:我们建补图,这样有边的人都能做一块,然后再求点双,求出点双后,再判断能不能形成奇圈。这里有现成的结...原创 2019-08-18 14:33:41 · 222 阅读 · 0 评论 -
凸包/旋转卡壳/半平面交学习总结
1.凸包参考博客:https://blog.youkuaiyun.com/qq_34374664/article/details/70149223定义:假设平面上有若干个点,过某些点作一个多边形,使这个多边形能把所有点都“包”起来。当这个多边形是凸多边形的时候,我们就叫它“凸包”。求法:目前我只掌握了Graham扫描法,但我觉得够用了。步骤: 1.把所有点放在二维坐标系中,...原创 2019-08-27 11:19:56 · 561 阅读 · 0 评论 -
POJ - 2451 Uyuw's Concert(半平面交求核面积)
链接:https://cn.vjudge.net/problem/POJ-2451题意:半平面交求核面积。思路:板子题,也是存板子。两个板子,思想一样,实现略微不同。1.#include <cstdio>#include <iostream>#include <cmath>#include <algorithm>#defin...原创 2019-08-27 10:37:20 · 169 阅读 · 0 评论 -
POJ - 3335 Rotating Scoreboard (半平面交模板)
链接:https://cn.vjudge.net/problem/POJ-3335题意:判断直线的半平面交是否有核。(也是判断一个不规则多边形内部是否存在一个区域,可以看到多边形的全貌。)思路:半平面交板子题,这里存个模板,都是存的边,最后求交点。个人倾向于第一个板子,更易理解些。1.#include <cstdio>#include <iostream>...原创 2019-08-27 10:33:33 · 192 阅读 · 0 评论 -
POJ - 3608 Bridge Across Islands(凸包+旋转卡壳模板 求两凸包点之间的最近距离)
链接:https://cn.vjudge.net/problem/POJ-3608题意:求两凸包点之间的最近距离,注意这个意思是说,如果求点到线段的距离,那么要保证垂足落到线段上。思路:枚举一个凸包的边,去找另一凸包中的最远点,和求在一个凸包中的对踵点差不多。PS:本想自己整理个模板,发现还是kuangbin大大的模板好用。#include <cstdio>#inc...原创 2019-08-27 10:15:46 · 234 阅读 · 0 评论 -
POJ - 1228 Grandpa's Estate (稳定凸包+求凸包模板)
链接:https://cn.vjudge.net/problem/POJ-1228题意:给出n个点,问这n个点组成的凸包,是否为稳定凸包?思路:先说一下稳定凸包。稳定凸包就是这个凸包已经是一个极大凸包,不能通过加点再得到一个更大的凸包。怎么判断凸包是否稳定呢?如果一个凸包的的每个边至少有3个点,那么这个凸包是稳定的。这就要求,求凸包的时候把共线点也求出来。有图链接:https://ww...原创 2019-08-27 10:02:31 · 172 阅读 · 0 评论 -
2019牛客暑期多校训练营(第十场)D Han Xin and His Troops(Java大数+扩展中国剩余定理模板)
链接:https://ac.nowcoder.com/acm/contest/890/D题意:求同余方程组。思路:import java.math.BigInteger;import java.util.Scanner; public class Main { public static int N = 100010; public static...原创 2019-08-18 14:41:51 · 235 阅读 · 0 评论 -
一般图最大匹配(带花树算法)(学习+模板)
参考博客:https://blog.youkuaiyun.com/xuezhongfenfei/article/details/10148445https://www.cnblogs.com/zhoushuyu/p/8717234.htmlhttps://www.cnblogs.com/owenyu/p/6858508.html经典例题:https://www.cnblogs.com/BA...原创 2019-08-30 16:47:28 · 2755 阅读 · 0 评论 -
网络流ISAP模板
#include <bits/stdc++.h>#define LL long long#define INF 0x3f3f3f3f3f3f3f3fll#define sc(x) scanf("%d",&x)#define scc(x,y) scanf("%d%d",&x,&y)#define sccc(x,y,z) scanf("%d%d%d",&...原创 2019-07-27 11:24:01 · 178 阅读 · 0 评论 -
HDU - 3605 Escape(二分图多重匹配)
2012 If this is the end of the world how to do? I do not know how. But now scientists have found that some stars, who can live, but some people do not fit to live some of the planet. Now scientists wa...原创 2019-08-20 11:02:03 · 160 阅读 · 0 评论 -
2019 南京网络赛 H Holy Grail(二分+spfa判负环模板)
题意:有向有负权图,加6条边,求每次最小的边权,使图没有负环,答案唯一。思路:二分答案+spfa判负环1.dfs判负环 16ms#include<iostream>#include<cstdio>#include<cstring>#include<queue>#define ll long longu...原创 2019-09-03 19:51:04 · 207 阅读 · 0 评论 -
CDQ分治学习总结
学习博客:https://www.cnblogs.com/LMCC1108/category/1444281.html 来自未来“图灵奖”获得者潘武灵https://www.cnblogs.com/mlystdcall/p/6219421.html 来自一看就知道是大佬的__stdcall拙见:首先,在此膜一发算法发明者---陈丹琦小姐姐,%%%%%%%%。然后,开始口胡拙见。分治,...原创 2019-09-06 21:49:08 · 275 阅读 · 0 评论 -
2018宁夏邀请赛 Clever King(最大点权闭合子图学习+模板)
参考博客:https://www.cnblogs.com/dilthey/p/7565206.html题意:T组样例。n种产品,m个矿场。制造每种产品都需要一些其他产品和矿石。制造一种产品会获得val的收益,开采一个矿场需要花费cost,矿场一旦开采就能获得无穷多的矿石。问净收益的最大值。结论:1、最大点权闭合子图的值等于正点权和-最小割。2、最大点权闭合子图中的节点的后继节点都在...原创 2019-09-06 21:56:25 · 249 阅读 · 0 评论 -
2019牛客暑期多校训练营(第五场) B generator 1(积性函数+循环节或十进制快速幂模板)
链接:https://ac.nowcoder.com/acm/contest/885/B题意:给你X0,X1,a,b,n,mod。且Xn=a*Xn-1+b*Xn-2。求Xn%mod。思路:1.对于广义斐波那契数列,不同的mod,打表之后发现有循环节。而循环节函数又是一个积性函数,所以可以快速找出循环节,然后计算。f(n)表示当mod=n时,循环节的长度。那么该积性函数,有以下性质:...原创 2019-08-02 11:26:03 · 388 阅读 · 3 评论 -
2019南昌网络赛 H. The Nth Item(广义斐波那契数列求通项公式模板)(二次剩余+分块)
链接:https://nanti.jisuanke.com/t/41355题意:Q个询问,每次求F(N),但是N要用上一次询问的结果得到。思路:1、直接矩阵快速幂求,再用map记一下答案,求过就不求了。数据正常的话肯定就会T,但这题数据太水。(也可能是询问加密的问题,反正理论上铁定T。)#include<iostream>#include <cst...原创 2019-09-13 13:03:41 · 596 阅读 · 0 评论 -
欧拉回路/路径学习(求欧拉回路/路径模板)
参考博客:https://www.cnblogs.com/LMCC1108/p/11306297.html 本校潘武灵/杰巨https://blog.youkuaiyun.com/PacosonSWJTU/article/details/50007847 求回路/路径详解欧拉回路如果图G中的一个路径包括每个边恰好一次,则该路径称为欧拉路径(Euler path)。如果一个回路...原创 2019-09-14 10:05:18 · 810 阅读 · 1 评论 -
2019年我能变强组队训练赛热身赛 Problem H String and Times(后缀自动机)
链接:http://icpc.upc.edu.cn/running.php?cid=1828题意:多组样例,每行给出一个字符串S,两个整数A,B。问一个字符串中出现次数在[A,B]范围内的子串的种类数。思路:后缀自动机模板题。但是,题目说范围是2e6,数组开这么大会报运行错误,看到1e5就过了。oj问题。。。。#include<iostream>#include<...原创 2019-08-03 11:12:24 · 196 阅读 · 0 评论 -
洛谷P3225 [HNOI2012]矿场搭建(割点+点双连通分量+组合数学)(点双的两种求法模板)
链接:https://www.luogu.org/problem/P3225题意:多组样例,有若干个挖煤点,由n条隧道相连。现在要在某些挖煤点修救援出口,使得某个挖煤点倒塌后,其它挖煤点的人可以从救援出口出去。要求的是最少的救援出口数和在保证最少救援出口数的条件下,不同的方案数。(注意,挖煤点的最大编号就是挖煤点的数量,千万不要理解成有n个挖煤点。)思路:很显然这个题和割点密切相关。先介绍...原创 2019-08-18 13:55:36 · 218 阅读 · 2 评论 -
HDU - 4738 Caocao's Bridges (边双连通分量+桥)(求桥的两种方法)
链接:https://cn.vjudge.net/problem/HDU-4738题意:多组样例。n个点,m条双向边,每条边都有w个人守,炸掉该边时,需要w个人。求派最少的人数,使图不连通。思路:刚看完题,就想这不就是简单的求个所有桥(割边)的最小权重嘛?开写开写,写完WA了。想了想图可能不连通,这时应该输出0,我竟然sb的认为应该输出-1。但我更sb的是,一时没想到怎么判断图不连通,想到...原创 2019-08-16 21:31:32 · 225 阅读 · 0 评论 -
石油大 2019年我能变强组队训练赛热身赛 10818 Problem J Participate in E-sports(Java大数开根模板)
链接:http://icpc.upc.edu.cn/problem.php?cid=1828&pid=9题意:T组样例。每组样例给你一个n,求是否为整数。按照题目要求输出。思路:Java大数开根模板import java.math.BigInteger;import java.util.Scanner; public class Main { pub...原创 2019-08-07 10:22:36 · 142 阅读 · 0 评论 -
C++快读、快写模板
inline int Read() { int res=0,ch,flag=0; if((ch=getchar())=='-') flag=1; else if(ch>='0'&&ch<='9') res=ch-'0'; while((ch=getchar())>='0'&&...原创 2019-07-23 10:13:54 · 3046 阅读 · 0 评论 -
CodeForces - 1100F Ivan and Burgers(线性基+前缀+贪心)(维护区间异或和最大值模板)
链接:https://vjudge.net/problem/CodeForces-1100F题意:给你一个n,代表n个商店。接下来一行,n个数,代表每个商店的值。再给一个q,加下来q行,每行两个数l、r,问在这个区间的某些商店值异或和的最大值。思路:线性基。二维数组base[i][j]代表在前i个数中,第j位是用的距离第i个数最近的那个数的大小。pos[i][j]表示代表在前i个数中,第j...原创 2019-07-23 09:55:04 · 374 阅读 · 0 评论 -
BZOJ 2460: [BeiJing2011]元素 (线性基模板)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2460题意:给一个n,接下来n行,每行有描述该物品的两个数字nu和ma。取若干个物品,使得在nu异或和不为0的情况下,ma和最大。思路:线性基模板题。就目前的理解,线性基就相当于多维空间里的单位向量集合。当线性基完备时,任何数都可以由线性基的异或和表示,这也是基的含义所在。显然线性基是...原创 2019-07-22 19:52:07 · 156 阅读 · 0 评论 -
HDU-1231 最大连续子序列(单调队列模板 或 dp)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1231题意:多组样例,以0结束。给你一个n,接下来n个数,求出这n个数的最大连续子序列的和以及这个连续子序列的下标(l,r),要求这个l,r尽可能的小。思路1(单调队列做法):先求出前缀和,然后用双向队列维护一个严格单调递增的队列。这样就可以对于每一个i,都求一个在它前面最小的前缀和,减去就是以i为...原创 2019-07-26 15:04:20 · 183 阅读 · 0 评论