
Chapter 3
深蓝色的猫
一个努力成长为大牛的蒟蒻程序媛
展开
-
UVa OJ 11991
#include#include#includeusing namespace std;map >a;int main(){ int n,m,x,y; while(scanf("%d%d",&n,&m)==2){ a.clear(); for(int i=0;i scanf("%d",&x);原创 2013-08-21 17:21:56 · 281 阅读 · 0 评论 -
UVa OJ 1328
#includeusing namespace std;const int maxn=1000000+10;char P[maxn];int f[maxn];int main(){ int n,kase=0; while(scanf("%d",&n)==1&&n){ scanf("%s",P); f[0]=0;f[1]原创 2013-09-29 14:48:35 · 535 阅读 · 0 评论 -
UVa OJ 11732
#include#include#includeusing namespace std;const int maxnode=4000*1000+10;const int sigma_size=26;const int maxl=1000+10;int n;char word[maxl];struct Trie{ int head[maxnode];原创 2013-09-29 12:51:05 · 326 阅读 · 0 评论 -
UVa OJ 1401
#include#include#includeusing namespace std;const int maxnode=4000*100+10;const int sigma_size=26;struct Trie{ int ch[maxnode][sigma_size]; int val[maxnode]; int sz;原创 2013-09-28 20:10:45 · 281 阅读 · 0 评论 -
UVa OJ 1513
1、本题是Fenwick树的应用,不过还真不太容易看出来。。。一定要注意坐标要加上100000,这样比较容易维护数组,否则要移动最多100000个元素,时间复杂度肯定很高。一次AC~#include#includeusing namespace std;int a[200010],b[100010];int n;int lowbit(int x){ return原创 2013-09-25 21:46:09 · 322 阅读 · 0 评论 -
UVa OJ 1232
1、这道题涉及线段树的区间修改。我交了17次才过(从中午写到半夜!)。2、刚开始想把【a,b)作为区间,带来了一系列麻烦,最后还是把图形分成若干个矩形,比如说(1,10,2)这组数据就能分成9个矩形。将最左端的数字作为矩形的编号。3、开始我只用了一个setv作为懒标记,结果总是TLE,主要是因为每次得到答案的时候都要接近叶子结点了。后来添加了两个信息maxv和minv,时间大大减少。4原创 2013-09-25 01:26:42 · 649 阅读 · 0 评论 -
UVa OJ 11525
1、本题用到逆康托展开+线段树。刚开始交得到一个RE,想起来又忘记开4倍空间了,修改后AC~2、每条线段维护一个值,即“还没用过的数字个数”。#include#includeusing namespace std;const int INF=1000000000;int p,v,num[200010];int query(int o,int L,int R,int cn原创 2013-09-23 22:33:45 · 325 阅读 · 0 评论 -
UVa OJ 11992
#include#include#includeusing namespace std;const int maxnode=1const int INF=1000000000;int op,x1,x2,y1,y2,x,v;struct IntervalTree{ int sumv[maxnode],minv[maxnode],maxv[maxnode],set原创 2013-09-20 21:33:02 · 283 阅读 · 0 评论 -
UVa OJ 12299
1、这是一道比较简单的线段树,交了之后得到RE,到网上一问才知道要结点开4倍空间(貌似是因为编译器),开了2倍空间的我理所当然地杯具了。。。改后AC~#include#include#include#includeusing namespace std;const int INF=1000000000;const int maxn=100000+10;const i原创 2013-09-20 13:27:46 · 303 阅读 · 0 评论 -
UVa OJ 12086
1、Fenwick树的基础题,没什么花头,就是套模板,居然因为s数组开小了而WA,囧。。。#include#includeusing namespace std;int a[200010],b[200010];char s[20];int n;int lowbit(int x){ return x&-x;}int sum(int x){ int原创 2013-09-05 19:29:00 · 313 阅读 · 0 评论 -
UVa OJ 1400
#include#include#includeusing namespace std;const int maxn=500000+10;const int maxnode=1000000+10;typedef long long LL;typedef pairInterval;LL prefix_sum[maxn];LL sum(int L,int R){原创 2013-08-29 19:20:08 · 326 阅读 · 0 评论 -
UVa OJ 1203
#include#includeusing namespace std;struct Item{ int QNum,Period,Time; bool operator return Time>a.Time||(Time==a.Time&&QNum>a.QNum); }};int main(){ priority_queuepq;原创 2013-08-19 18:20:27 · 267 阅读 · 0 评论 -
UVa OJ 11235
1、RMQ问题的变形,注意p增加的时机。一次AC~#include#include#includeusing namespace std;int value[100010],cnt[100010],num[100010],left[100010],right[100010];int main(){ int n,p,q,last,L,R,ans,temp; w原创 2013-08-29 11:01:42 · 327 阅读 · 0 评论 -
UVa OJ 1329
#include#includeusing namespace std;const int maxn=20000+10;int pa[maxn],d[maxn];int findset(int x){ if(pa[x]!=x){ int root=findset(pa[x]); d[x]+=d[pa[x]]; re原创 2013-08-25 17:15:21 · 308 阅读 · 0 评论 -
UVa OJ 1160
#includeconst int maxn=100000+10;int pa[maxn];int findset(int x){return pa[x]!=x?pa[x]=findset(pa[x]):x;}int main(){ int x,y; while(scanf("%d",&x)==1){ for(int i=0;i int原创 2013-08-25 16:22:42 · 339 阅读 · 0 评论 -
UVa OJ 11995
1、刚开始把输出的priority queue打成priority_queue了,WA了一次!唉!习惯的力量。#include#include#includeusing namespace std;int main(){ int n,order,temp; bool flag1,flag2,flag3; while(scanf("%d",&n)==1){原创 2013-08-25 15:35:24 · 357 阅读 · 0 评论 -
UVa OJ 1428
1、本题是Fenwick树的应用。刚开始因为ans没写成long long所以WA了一次。看来以后这种累加“组合”的(无法估计总量),一定要用long long才行。#include#includeint a[100010],b[20010],c[20010],d[20010];int maxn;int lowbit(int x){ return x&-x;}原创 2013-08-25 21:09:42 · 319 阅读 · 0 评论 -
UVa OJ 11997
#include#include#includeusing namespace std;const int maxn=760;int A[maxn],B[maxn];struct Item{ int s,b; Item(int s,int b):s(s),b(b){} bool operator return s>rhs.s;原创 2013-08-21 19:01:21 · 353 阅读 · 0 评论 -
UVa OJ 11987
1、注意对并查集的每个操作都是对代表元进行操作,所以不要忘了在元素外面套个find。2、这里移动点的时候不要实际移动,而是创立一个新结点(给它一个编号),并更新相应信息即可,操作都是对这个新结点进行,而且这个新结点永远不能当代表元。#includeusing namespace std;int n,m,cmd,p,q,pointer;int fa[200010],now[100原创 2013-10-24 13:38:15 · 496 阅读 · 0 评论