- 博客(10)
- 资源 (8)
- 收藏
- 关注
原创 Splay模板
/*f[i]表示i的父结点,ch[i][0]表示i的左儿子,ch[i][1]表示i的右儿子,key[i]表示i的关键字(即结点i代表的那个数字),cnt[i]表示i结点的关键字出现的次数(相当于权值),size[i]表示包括i的这个子树的大小;sz为整棵树的大小,root为整棵树的根。*/ #include<bits/stdc++.h>using namespac...
2018-08-11 12:08:47
174
原创 树链剖分模板(完全版)
#include <bits/stdc++.h>#define inf 2147483547#define ll long long#define o1(x) id[x]-1#define o2(x) id[x]+sz[x]using namespace std;const int N=400010;struct edge{ int next,to;}e[N<...
2018-08-11 11:23:54
216
原创 「一本通 4.4 例 2」暗的连锁(LOJ 10131)
QWQ 看这里!原题来自:POJ 3417(点不开的)Dark 是一张无向图,图中有N个节点和两类边,一类边被称为主要边,而另一类被称为附加边。Dark 有N–1条主要边,并且 Dark 的任意两个节点之间都存在一条只由主要边构成的路径。另外,Dark 还有M条附加边。你的任务是把 Dark 斩为不连通的两部分。一开始 Dark 的附加边都处于无敌状态,你只能选择一条主要边...
2018-08-10 15:49:11
881
原创 线段树模板(Codevs 4927)
双懒惰标记的题目。类似于维护序列,还要简单些。#include<bits/stdc++.h>#define maxn (100000+5)#define LL long long #define inf 2147483547using namespace std;struct Tree{ LL sum,min,max,set,add;}a[maxn*3];...
2018-08-08 18:14:47
177
原创 Catalan数(卡塔兰数)的证明
所以我们想到:定义p(l)为任意一条路径l在y=x下方所行走的路径的长度和。其次想到化归。我们证明任意一条满足p(l)=2k的路径l都可以化归为满足p(l')=2k+2的l'(2k-2同理)如图,黑色箭头为调整箭头(将l划分为若干个箭头,第一个向右且恰好碰到y=x的箭头),记为B剩下的部分,B前面的所有箭头记为A(红色部分),后面的记为C(绿色部分)则路径l可记为A->B->C将l'定义为C->B->A即可(右图)于是我们将左图化归到了右图此时p(l')=p(l)+2
2018-02-26 20:03:19
833
原创 luoguP1842奶牛玩杂技
解决方案:1.贪心(不像是能用动归做)2.以什么来贪心呢3.重量,显然不行4.力量也不行5.猜测:与重量和力量都有关,再分析样例,发现是重量+力量6.证明:设有a和b两头相邻的牛(a在下,b在上)7.若Wa+Sa8.交换a和b位置,设b上方牛总体重为W9.a原:W+Wb-Sa b原:W-sb(W-Sa)10.显然W+W
2017-11-28 23:02:14
303
原创 luoguP1090合并果子
解决方案:1.一看就知道最方便的是贪心(动归也行)2.每次调最小的两个合并(不要问证明)3.所以用优先队列,懒得手打(P党www)4.小根堆和大根堆都差不多,选一个用吧5.AC 奉上代码#include<iostream>#include<cstdlib>#include<queue>using namespace std;pr...
2017-11-28 12:37:12
141
原创 luoguP1238走迷宫
#include#include#include#define pp pairusing namespace std;int dx[4]={0,-1,0,1};int dy[4]={-1,0,1,0};pp s,t,way[1001];int map[16][16],cnt;int n,m;bool flag;void print(){ f
2017-11-26 19:02:11
254
原创 luoguP1525关押罪犯
解决方案:1.按照冲突从大到小排序2.优先保证最大冲突不发生(对,所以是贪心)3.开一个并查集,维护必须在同一个监狱中和必须不在同一个监狱中的罪犯4.等等,两个并查集5.所以要有2倍的人6.x变成x和x+n7.x-y+n:x和y必须不在一起8.x-y:x和y必须在一起9.开始处理10.假设目前处理到x和y11.
2017-11-25 20:34:03
181
原创 树的重心(默认已会定义及存储)
先给代码#includeconst int N=1000010;const int inf=0x7f7f7f7f;using namespace std;int f[N],size[N],n,head[N],tot;int rt[N],sum,cnt=1;struct Edge{int u,v,next;}G[Ninline void addedge(int u,i
2017-11-25 19:49:06
185
3.2曲绘358MB
2020-07-02
C++一些提高+的模板
2018-08-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人