
ACM比赛专用模板
文章平均质量分 76
Z_X_B_233
这个作者很懒,什么都没留下…
展开
-
Tarjan强连通分量模板
#include #include #include #include #include #define maxn 100100#define maxm 500100#define inf 0x3f3f3f3fusing namespace std;struct Edge{ int next,en;} ;Edge edge[maxm];int head[ma原创 2017-09-27 20:46:59 · 396 阅读 · 0 评论 -
动态建线段树,hdu6183,参考杰少的博客
我的代码不知为什么t掉了,这个等杰少回来再去问问他先把我t掉的代码放在这里,主要是学一下动态建树的思想这个是非常省空间的这题目主要思路就是对每个颜色建一颗线段树,保存其y1,y2,范围内的点到y轴的最小距离#include #include #include #include #define inf 0x3f3f3f3fusing namespace std;st转载 2017-09-02 18:09:05 · 523 阅读 · 0 评论 -
主席树静态查找区间第k小模板(并没有杰少详细)即讲解
#include #include #include #include #include #include #define maxn 400100using namespace std;struct Data{ int val,id;};struct Tree{ int l,r,sum;};Data a[maxn];Tree t[maxn*10原创 2017-08-29 14:55:00 · 379 阅读 · 0 评论 -
凸包的判定及将凸包中的点逆时针存在数组中
数据结构:struct Point { double x; double y; Point(double a = 0, double b = 0) : x(a), y(b) {} friend bool operator < (const Point &l, const Point &r) {//以y为第一优先级,x为第二优先级原创 2017-10-15 18:57:44 · 383 阅读 · 0 评论 -
再看区间dp
区间dp就是我知道区间长度为len-1的所有状态,然后我可以通过小于len的的状态转移到区间长度为len的状态一般是在外层循环遍历len,内层循环遍历起点来做的但是这次做了一个很特别的题目题目描述: 在x轴上有n个客人叫外卖,每个顾客因为追的番更新进度不同,所以在等外买的时间里每秒增加的愤怒值不同。给出客人和餐厅的位置,以及客人每分钟增加的愤怒值,还有快递小哥的行走一原创 2017-10-17 15:27:56 · 343 阅读 · 0 评论 -
数位dp模板
数位dp其实就是记忆化dfs也没什么好说的现在看一个题,让你求出所有l到r的圆数,圆数就是这个数字转化成2进制后0的个数比1的个数多开始写错了,就是没注意前导0的问题dfs一般要传4个参数,一个是第几位,一个是状态,一个是需不需要上界,一个是有没有前导0#include #include #include #include #include using namespac原创 2017-10-24 15:28:30 · 396 阅读 · 0 评论 -
Lis模板
#include #include #include #define maxn 1000using namespace std;int ans[maxn],a[maxn],len;int Search(int data){//我们要找到的是最小的那个>=mid的ans的位置 int l=0,r=len,mid; while(l<r) {原创 2017-10-24 14:19:30 · 438 阅读 · 0 评论 -
差分约束模板
差分约束一般是用来求最大值最小值问题的那么就分为两个问题求最小值,把所有不等式化为>=然后求最长路求最大值,把所有不等式化为如果碰到然后就是单纯的图论题了现在来看poj1716DescriptionAn integer interval [a,b], a Write a program that: find原创 2017-10-24 12:55:52 · 391 阅读 · 0 评论 -
并查集算法回顾
并查集就是有关集合的合并和查找算法对于每个集合来说我们都有一个标志这个集合中的所有元素都指向这个标志我们可以定义a的标志为Set【a】我们就可以利用这些标志来进行集合的合并和查找在最开始的时候要memset(Set,-1,sizeof(Set));至于为什么后面可以自己体会现在介绍两个函数int find_r(int p){ if (Set[p原创 2017-03-07 19:46:16 · 430 阅读 · 0 评论 -
莫队算法模板
codeforces 617E题意:给你n个数,有m个询问,问[l,r]之间有多少对i和j满足a[i]^a[i+1]^...^a[j]=k;这个题目就是我先求出前缀异或和然后i到j的异或和就是a[j]^a[i-1]假设我们已知st到en的答案(ans),然后我们开一个Map数组,Map[i]表示st到en中前缀异或和为i的个数,Map也是已知的现在我们要加上一个点,st-1或者原创 2017-10-23 20:33:49 · 330 阅读 · 0 评论 -
线段树模板
#include #include #include #include #define maxn 1000#define inf 1000000using namespace std;class segtree{public: int val,addmark;};segtree segt[maxn<<2];int a[maxn];void build(int原创 2017-10-22 12:54:39 · 295 阅读 · 0 评论 -
再看斜率优化打牌
emmmm,马上要比赛了,最近正在复习打牌又看了遍斜率优化dp,感觉对他的理解上了一个新的高度呐斜率优化dp可以优化掉一个n一般来说,如果要求一个状态时要遍历前面已经求过的所有状态的话,就可以考虑使用斜率优化再求第k个状态时对于前面的所有状态如果k2比k1更优就有Y(k2)-Y(k1)X(k2)-X(k1)f(k)我们就可以使用斜率优化这里我们要保证原创 2017-10-10 20:26:41 · 352 阅读 · 0 评论 -
KMP模板
本来想直接copy匡斌的模板来着的但是匡斌的模板会RE,next的原因,现在就稍微改了改拿过来了#include #include using namespace std;const int N = 1000002;int Next[N];char S[N], T[N];int slen, tlen;void getNext(){ int j, k; j原创 2017-10-02 09:47:35 · 343 阅读 · 0 评论 -
最小费用最大流模板
#includeusing namespace std;#define INF 0x3f3f3f3ftypedef long long LL;const int M=2010;//边数注意啦,我们这东西是有逆向边的,所以边数要×2哦const int N=510;//点数struct edge{ int to; int next; int cap;原创 2017-09-30 20:37:15 · 218 阅读 · 0 评论 -
单纯最大流(两个给定节点的最小割)问题的最优解法
运用了各种不明所以的优化反正我们会板子就行啦然后再说几点最大流的用处点i和点j的最大流其实是等于把点i和点j分开的最小割的你想啊,从i到j有那么多流量对吧如果我想要让i一滴水都留不到j那么我至少要割掉最大流那么多的流量吧,具体证明。。。。我忘了,反正我等弱鸡队伍用个板子就行还有一个用处是在忘了那一场的网络赛上看到的就是求两个点的最小割的最小要割的边的原创 2017-09-20 18:50:30 · 489 阅读 · 0 评论 -
数位dp 求l-r(10进制) 在k进制中有多少个回文数的模板
#include #include #include #include using namespace std;#define LL long longLL l, r;int a[66];LL dp[66][66][40];LL dfs(int len, int l, int r, bool lim, bool ok,int k)//ok表示是回文串,k表示k进制{原创 2017-08-20 14:43:01 · 1119 阅读 · 0 评论