数据结构
ndsffx501ccy
这个作者很懒,什么都没留下…
展开
-
[Bzoj1588][HNOI2002]营业额统计 (Treap|Splay)
#include#include#include#include#define inf 1000000000using namespace std;struct data{ int l,r,num,rnd;}tr[50001];int n,size,root,ans1,ans2,ans;void lturn(int &k){ int t=tr[k].r; tr[k].r=t原创 2014-04-20 17:06:12 · 424 阅读 · 0 评论 -
2789: [Poi2012]Letters (树状数组求逆序对数)
#include#include#includeusing namespace std;char a[1000010],b[1000010];queue q[30];int n,v[1000010],t[1000010];long long ans;int query(int x){ int res=0; for(int i=x;i;i-=i&(-i)) res+=t[i]原创 2014-11-11 15:29:00 · 1087 阅读 · 0 评论 -
1628: [Usaco2007 Demo]City skyline (单调栈)
#include#include#includeusing namespace std;inline int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}原创 2014-10-18 18:59:10 · 235 阅读 · 0 评论 -
3402: [Usaco2009 Open]Hide and Seek 捉迷藏 (dijkstra+heap)
#include#include#include#includeusing namespace std;int read() { int x=0,f=1; char ch=getchar(); while(ch'9') { if(ch=='-')f=-1; ch=getchar(); } while(ch>='0'&原创 2014-11-02 10:45:43 · 300 阅读 · 0 评论 -
1683: [Usaco2005 Nov]City skyline 城市地平线 (单调栈)
#include#include#includeusing namespace std;inline int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}原创 2014-10-18 18:55:53 · 226 阅读 · 0 评论 -
1135: [POI2009]Lyz (线段树)
#include#includeusing namespace std;const int N=800001;int n,m,k,d,ls[N],rs[N];long long mx[N],sum[N],lmx[N],rmx[N];inline int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch==原创 2014-10-18 19:03:05 · 439 阅读 · 0 评论 -
1269: [AHOI2006]文本编辑器editor (Splay)
#include #include #include #include #include using namespace std;#define maxn 5500000int fa[maxn], c[maxn][2], root, tot, size[maxn], rev[maxn], v[maxn], n, pos;void newnode(int &k, char ch, i原创 2014-10-10 21:15:48 · 231 阅读 · 0 评论 -
[NOIP模拟赛]肥得更高 (堆,桶排序,贪心)
#include#include#include#include#include#define N 1001000 #define pa pairusing namespace std;inline int read(){ int x=0,f=1;char s=getchar(); while(s'9'){if(s=='-')f=-1;s=getchar();} while(原创 2014-10-18 14:49:34 · 272 阅读 · 0 评论 -
1106: [POI2007]立方体大作战tet (树状数组)
#include#includeusing namespace std;int n,ans,v[200001],f[200001];void ins(int x,int val){ for(int i=x;i<=n;i+=i&(-i)) v[i]+=val;}int get(int x){ int res=0; for(int i=x;i>0;i-=i&(-i)) res原创 2014-10-18 18:47:47 · 279 阅读 · 0 评论 -
1635: [Usaco2007 Jan]Tallest Cow 最高的牛 (差分序列)
#include#includeusing namespace std;struct que{ int l,r;}q[20001];inline bool cmp(que a,que b){ return a.l<b.l||(a.l==b.l&&a.r<b.r);}int n,I,h,r,sum,a[100001];int main(){ scanf("%d%d%d%d",&原创 2014-10-02 11:51:23 · 362 阅读 · 0 评论 -
Vijos P1780 开车旅行 (倍增+Treap)
#include#include#include#include#include#include#define inf 1000000001using namespace std;int n,m,NOW,a[200010],x0,Si[100001],Xi[100001],sz,rt,tmp,tmp2,da[200010][18],db[200010][18],to[200010]原创 2014-11-06 11:40:16 · 634 阅读 · 0 评论 -
2783: [JLOI2012]树 (dfs+平衡树)
#include#include#includeusing namespace std;inline int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} r原创 2014-11-11 10:40:11 · 432 阅读 · 0 评论 -
1098: [POI2007]办公楼biu (bfs+链表)
#include#include#include#include#include#include#includeusing namespace std;inline int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<=原创 2014-11-11 15:00:44 · 474 阅读 · 0 评论 -
3626: [LNOI2014]LCA (树链剖分+离线处理)
#include#include#include#includeusing namespace std;inline int read() { int x = 0, f = 1; char ch = getchar(); while (ch '9') { if (ch == '-')f = -1; ch = getchar();原创 2014-07-29 11:56:22 · 464 阅读 · 0 评论 -
1572: [Usaco2009 Open]工作安排Job
#include#include#include#include#includeusing namespace std;inline int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*原创 2014-06-19 20:25:44 · 412 阅读 · 0 评论 -
SJTU 1123 折线统计 (动态规划&&树状数组)
以纵坐标为编号建树状数组优化动态规划#include#include#include#define mod 100007using namespace std;struct point{ int x,y;}p[100001];int n,K,f[100001][16][2],a[16][2][100001],ans;inline bool cmp(point x,point原创 2014-07-13 23:12:48 · 445 阅读 · 0 评论 -
3060: [Poi2012]Tour de Byteotia (并查集)
#include#include#define inf 0x7fffffffusing namespace std;inline int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+c原创 2014-07-15 21:17:52 · 428 阅读 · 0 评论 -
3674: 可持久化并查集加强版 (可持久化线段树)
#includeusing namespace std;inline int read() { int x = 0, f = 1; char ch = getchar(); while (ch '9') { if (ch == '-')f = -1; ch = getchar(); } while (ch >= '0'原创 2014-08-12 15:27:55 · 327 阅读 · 0 评论 -
3631: [JLOI2014]松鼠的新家 (树形DP,树链剖分套线段树)
#include#includeusing namespace std;inline int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f原创 2014-11-13 12:43:11 · 692 阅读 · 0 评论 -
3192: [JLOI2013]删除物品 (树状数组)
#include#include#includeusing namespace std;const int N=100005;int n,n1,n2,now,t[N];pair a[N];long long ans;inline int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch=='-')f=-1;ch=原创 2014-11-11 21:13:58 · 370 阅读 · 0 评论 -
1146: [CTSC2008]网络管理Network (线段树套平衡树+二分+树链剖分)
O(nlogn^4)#include#include#includeusing namespace std;inline int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getc原创 2014-11-11 10:00:28 · 628 阅读 · 0 评论 -
3278: ⑨(nine) (平衡树+三角剖分)
#include#include#include#include#include#includeusing namespace std;//=========================================inline int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch=='-原创 2014-10-01 18:34:56 · 273 阅读 · 0 评论 -
【NOIP模拟赛】买汽水 (dfs+set)
#include#include#includeusing namespace std;set q;int n,m,tot,ans,a[45];bool flag;void dfs(int x,int sum){ if(sum>m)return; if(x==tot){ if(!flag)q.insert(sum); else{ set::iterator t=q.原创 2014-10-29 21:34:49 · 361 阅读 · 0 评论 -
【bzoj2002】[Hnoi2010]Bounce 弹飞绵羊 (动态树)
#include#include#define N 200001using namespace std;int n,m,c[N][2],size[N],fa[N],st[N],next[N];bool rev[N];bool isroot(int x){ return !(c[fa[x]][0]==x||c[fa[x]][1]==x);}void update(int x){原创 2014-09-20 21:38:18 · 357 阅读 · 0 评论 -
1483: [HNOI2009]梦幻布丁 (链表+启发式合并)
#includeusing namespace std;const int maxn = 1000001;inline int read() { int x = 0, f = 1; char ch = getchar(); while (ch '9') { if (ch == '-')f = -1; ch = getchar();原创 2014-08-05 21:02:16 · 489 阅读 · 0 评论 -
1861: [Zjoi2006]Book 书架 (Splay)
#include#includeusing namespace std;inline int read() { int x = 0, f = 1; char ch = getchar(); while (ch '9') { if (ch == '-')f = -1; ch = getchar(); } while (原创 2014-08-05 16:38:36 · 586 阅读 · 0 评论 -
3673: 可持久化并查集 by zky
可以发现在不使用路径压缩优化的情况下,原创 2014-08-01 15:30:46 · 1594 阅读 · 0 评论 -
2733: [HNOI2012]永无乡 (线段树+并查集)
#include#include#define inf 1000000000using namespace std;inline int read() { int x = 0, f = 1; char ch = getchar(); while (ch '9') { if (ch == '-')f = -1; ch = getch原创 2014-07-31 20:00:20 · 1141 阅读 · 0 评论 -
2588: Spoj 10628. Count on a tree (可持久化线段树)
#include#include#include#include#includeusing namespace std;#define inf 0x7fffffff#define rd(x) x=read()#define clr(a,b) memset(a,b,sizeof(a)); #define rep(i,n) for(int i=1;i<=int(n);++i)#de原创 2014-07-26 21:53:01 · 343 阅读 · 0 评论 -
2049: [Sdoi2008]Cave 洞穴勘测 (动态树)
#include#include#define inf 1000000000using namespace std;inline int read() { int x = 0, f = 1; char ch = getchar(); while (ch '9') { if (ch == '-')f = -1; ch = getch原创 2014-07-31 17:21:12 · 442 阅读 · 0 评论 -
1500: [NOI2005]维修数列 (Splay)
1W1A(inf开太大)#include#include#include#include#includeusing namespace std;#define inf 1000000000inline int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch=='-')f=-1;ch=getchar原创 2014-07-28 16:08:48 · 418 阅读 · 0 评论 -
2325: [ZJOI2011]道馆之战 (树链剖分+线段树)
#include#include#include#include#includeusing namespace std;#define inf 1000000000inline int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch=='-')f=-1;ch=getchar();} while原创 2014-07-27 21:12:52 · 688 阅读 · 0 评论 -
1455: 罗马游戏 (左偏树+并查集)
#include#include#include#include#include#define inf 0x7fffffffusing namespace std;inline int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch=='-')f=-1;ch=getchar();} while原创 2014-07-25 14:17:19 · 402 阅读 · 0 评论 -
1452: [JSOI2009]Count (树状数组)
#includeusing namespace std;const int maxn = 1000001;inline int read() { int x = 0, f = 1; char ch = getchar(); while (ch '9') { if (ch == '-')f = -1; ch = getchar();原创 2014-08-07 11:11:41 · 436 阅读 · 0 评论 -
2002: [Hnoi2010]Bounce 弹飞绵羊 (动态树)
#includeusing namespace std;const int maxn = 1000001;inline int read() { int x = 0, f = 1; char ch = getchar(); while (ch '9') { if (ch == '-')f = -1; ch = getchar();原创 2014-08-07 14:33:11 · 487 阅读 · 0 评论 -
1935: [Shoi2007]Tree 园丁的烦恼 (树状数组)
#includeusing namespace std;const int maxn = 1000001;inline int read() { int x = 0, f = 1; char ch = getchar(); while (ch '9') { if (ch == '-')f = -1; ch = getchar();原创 2014-08-07 16:14:30 · 425 阅读 · 0 评论 -
1657: [Usaco2006 Mar]Mooo 奶牛的歌声 (单调栈)
#includeint n,top,mx,h[50001],q[50001],v[50001],ans[50001];int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d%d",&h[i],&v[i]); for(int i=1;i<=n;i++){ while(top&&h[i]>h[q[top]])ans[i]原创 2014-09-30 20:26:09 · 446 阅读 · 0 评论 -
NOI2014 魔法森林 (动态树)
1.并查集的fa和动态书的fa混用2.原创 2014-09-21 21:57:54 · 326 阅读 · 0 评论 -
1782: [Usaco2010 Feb]slowdown 慢慢游 (DFS序+树状数组)
#includestruct edge{ int to,next;}e[200001];int n,cnt,head[100001],id[100001],ans[100001],v[100001];void ins(int u,int v){ e[++cnt]=(edge){v,head[u]};head[u]=cnt; e[++cnt]=(edge){u,head[v]};hea原创 2014-09-30 21:38:22 · 382 阅读 · 0 评论 -
【Spoj8222】Substrings (后缀自动机)
#include#include#include#define N 500001using namespace std;int S,tot,last,r[N],a[N],b[N],t[N],f[N],pre[N],val[N],son[N][26];char s[N];int push(int x){ val[++tot]=x; return tot;}void add(in原创 2014-09-18 21:40:07 · 339 阅读 · 0 评论