BZOJ3196 Tyvj1730 二逼平衡树

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3196

Description

您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:
1.查询k在区间内的排名
2.查询区间内排名为k的值
3.修改某一位值上的数值
4.查询k在区间内的前驱(前驱定义为小于x,且最大的数)
5.查询k在区间内的后继(后继定义为大于x,且最小的数)

Input

第一行两个数 n,m 表示长度为n的有序序列和m个操作
第二行有n个数,表示有序序列
下面有m行,opt表示操作标号
若opt=1 则为操作1,之后有三个数l,r,k 表示查询k在区间[l,r]的排名
若opt=2 则为操作2,之后有三个数l,r,k 表示查询区间[l,r]内排名为k的数
若opt=3 则为操作3,之后有两个数pos,k 表示将pos位置的数修改为k
若opt=4 则为操作4,之后有三个数l,r,k 表示查询区间[l,r]内k的前驱
若opt=5 则为操作5,之后有三个数l,r,k 表示查询区间[l,r]内k的后继

Output

对于操作1,2,4,5各输出一行,表示查询结果

 

线段树套Treap,十分二逼地用数组版线段树套指针版Treap

迈向树结构的指针化的一次失败尝试

因为没写过指针版的Treap膜了教主的代码

另外下面的这份代码在Tyvj上会TLE,卡了最后两个点

把Tyvj这道题的提交记录往上翻下来满满的都是80分TLE……

  1 #include <iostream>
  2 #include <cstdio>
  3 #include <algorithm>
  4 #include <cstring>
  5 #define rep(i,l,r) for(int i=l; i<=r; i++)
  6 #define clr(x,y) memset(x,y,sizeof(x))
  7 #define travel(x) for(Edge *p=last[x]; p; p=p->pre)
  8 using namespace std;
  9 const int INF = 0x7fffffff;
 10 const int maxn = 50010;
 11 int n,m,a[maxn],mn=INF,mx=-INF,l,r,k,pos,opt;
 12 struct Node{
 13     Node* ch[2];
 14     int s,w,v,rnd;
 15     inline void maintain(){
 16         s = ch[0]->s + ch[1]->s + w;
 17     }
 18 };
 19 Node TREAP[1200000], *pt = TREAP, *null = pt++;
 20 inline Node* newnode(int x){
 21     pt->s = pt->w = 1; pt->v = x; pt->rnd = rand();
 22     pt->ch[0] = pt->ch[1] = null;
 23     return pt++;
 24 }
 25 inline void rotate(Node *&o,int d){
 26     Node *k = o->ch[d^1]; o->ch[d^1] = k->ch[d]; k->ch[d] = o;
 27     o->maintain(); k->maintain(); o = k;
 28 }
 29 struct Treap{
 30     Node *root;
 31     Treap(){
 32         root = null;
 33     }
 34     void ins(int x,Node *&p){
 35         if (p == null){
 36             p = newnode(x); return;
 37         }
 38         p->s++; if (x == p->v) p->w++;
 39         else{
 40             int d = x > p->v;
 41             ins(x,p->ch[d]);
 42             if (p->ch[d]->rnd < p->rnd) rotate(p,d^1);
 43         }
 44     }
 45     void del(int x,Node *&p){
 46         if (p == null) return;
 47         if (p->v == x){
 48             if (p->w > 1){
 49                 p->s--; p->w--; return;
 50             }
 51             if (p->ch[0] != null && p->ch[1] != null){
 52                 int d = p->ch[0]->rnd > p->ch[1]->rnd;
 53                 rotate(p,d); del(x,p->ch[d]);
 54             }
 55             else p = p->ch[0] == null ? p->ch[1] : p->ch[0];
 56         }
 57         else{
 58             int d = x > p->v; p->s--;
 59             del(x,p->ch[d]);
 60         }
 61         if (p != null) p->maintain();
 62     }
 63     int getrank(int x,Node *p){
 64         int ans = 0;
 65         for(Node *p = root; p != null;){
 66             int d = p->v == x ? -1 : x > p->v;
 67             if (d == -1){
 68                 ans += p->ch[0]->s; break;
 69             }
 70             else if (!d) p = p->ch[0];
 71             else ans += p->ch[0]->s + p->w, p = p->ch[1];
 72         }
 73         return ans;
 74     }
 75     int getpre(int x){
 76         int ans = -INF;
 77         for(Node *p = root; p != null;){
 78             if (x > p->v) ans = max(ans,p->v), p = p->ch[1];
 79             else p = p->ch[0];
 80         }
 81         return ans;
 82     }
 83     int getnxt(int x){
 84         int ans = INF;
 85         for(Node *p = root; p != null;){
 86             if (x < p->v) ans = min(ans,p->v), p = p->ch[0];
 87             else p = p->ch[1];
 88         }
 89         return ans;
 90     }
 91 }treap[maxn<<2];
 92 struct Node2{
 93     int l,r;
 94 }t[maxn<<2];
 95 void build(int u,int v,int w){
 96     t[w].l = u; t[w].r = v;
 97     rep(i,u,v) treap[w].ins(a[i],treap[w].root);
 98     if (u == v) return;
 99     int mid = (u + v) >> 1;
100     build(u,mid,w<<1); build(mid+1,v,w<<1|1);
101 }
102 int getrank(int u,int v,int w){
103     if (t[w].l == u && t[w].r == v) return treap[w].getrank(k,treap[w].root);
104     int mid = (t[w].l + t[w].r) >> 1;
105     if (v <= mid) return getrank(u,v,w<<1);
106     else if (u > mid) return getrank(u,v,w<<1|1);
107     else return getrank(u,mid,w<<1) + getrank(mid+1,v,w<<1|1);
108 }
109 int getnum(int u,int v){
110     int ans, l = mn, r = mx; int k2 = k;
111     while (l <= r){
112         int mid = (l + r) >> 1; k = mid;
113         if (getrank(u,v,1) < k2) ans = mid, l = mid + 1;
114         else r = mid - 1;
115     }
116     return ans;
117 }
118 void modify(int u,int w){
119     treap[w].del(a[u],treap[w].root);
120     treap[w].ins(k,treap[w].root);
121     if (t[w].l == t[w].r) return;
122     int mid = (t[w].l + t[w].r) >> 1;
123     if (u <= mid) modify(u,w<<1);
124     else modify(u,w<<1|1);
125 }
126 int getpre(int u,int v,int w){
127     if (t[w].l == u && t[w].r == v) return treap[w].getpre(k);
128     int mid = (t[w].l + t[w].r) >> 1;
129     if (v <= mid) return getpre(u,v,w<<1);
130     else if (u > mid) return getpre(u,v,w<<1|1);
131     else return max(getpre(u,mid,w<<1), getpre(mid+1,v,w<<1|1));
132 }
133 int getnxt(int u,int v,int w){
134     if (t[w].l == u && t[w].r == v) return treap[w].getnxt(k);
135     int mid = (t[w].l + t[w].r) >> 1;
136     if (v <= mid) return getnxt(u,v,w<<1);
137     else if (u > mid) return getnxt(u,v,w<<1|1);
138     else return min(getnxt(u,mid,w<<1), getnxt(mid+1,v,w<<1|1));
139 }
140 inline int read(){
141     int ans = 0, f = 1;
142     char c = getchar();
143     while (!isdigit(c)){
144         if (c == '-') f = -1;
145         c = getchar();
146     }
147     while (isdigit(c)){
148         ans = ans * 10 + c - '0';
149         c = getchar();
150     }
151     return ans * f;
152 }
153 int main(){
154     n = read(); m = read();
155     rep(i,1,n) a[i] = read(), mn = min(mn,a[i]), mx = max(mx,a[i]);
156     build(1,n,1);
157     rep(i,1,m){
158         opt = read();
159         switch(opt){
160             case 1:
161                 l = read(); r = read(); k = read();
162                 printf("%d\n",getrank(l,r,1) + 1);
163             break;
164             case 2:
165                 l = read(); r = read(); k = read();
166                 printf("%d\n",getnum(l,r));
167             break;
168             case 3:
169                 pos = read(); k = read();
170                 mn = min(mn,k); mx = max(mx,k);
171                 modify(pos,1); a[pos] = k;
172             break;
173             case 4:
174                 l = read(); r = read(); k = read();
175                 printf("%d\n",getpre(l,r,1));
176             break;
177             case 5:
178                 l = read(); r = read(); k = read();
179                 printf("%d\n",getnxt(l,r,1));
180             break;
181         }
182     }
183     return 0;
184 }
View Code

在BZOJ上第一次交的时候WA了,就去Tyvj上搞来一组规模为1000的数据用于调试。下面是这组数据:

Input:

  1 1000 500 
  2 1687147 9918457 2675072 6198365 6458901 3336818 3252441 7895169 7512927 5207317 8463545 2874717 4419017 9196785 3031681 400019 3401729 7093743 8250872 6484669 5684929 5634489 1023417 2154881 1640119 3685505 6491081 3605473 5397443 1006817 6283109 3538627 1718385 44240 5291054 2418337 6915285 1248177 7427205 8336251 4227025 2495281 4730577 4139521 1997963 4601237 2552285 7271417 5970037 5865217 3377977 9728449 7220099 6357973 6375857 8515593 8341910 9001533 8097069 4609855 735025 3680876 4218241 747948 1595401 4085761 1712421 1774209 9109033 5191383 9525085 1882381 9568689 4989184 954761 1289937 9773125 8624129 3591209 3115457 5822679 1112597 7519809 494617 5598757 8825601 6279013 7717281 4595513 5533503 7305647 55185 3514371 2302593 4303905 2050361 396579 5094973 5127288 4610043 1331139 5005063 6608109 6418983 2076701 2868477 709697 8446181 9936081 7527425 2545056 1179509 7735335 6464453 3624001 8802681 5776817 552865 4689281 7079937 4451905 1975294 6941697 1991209 7851617 2911071 3639287 976747 2351617 4554241 2888273 6831125 5975303 9282845 1608681 5832857 3871233 4513923 1374620 3657473 2630481 9184363 9520329 2103425 8199105 5753681 6493933 9642809 1692002 9571137 9207501 4402769 6095183 3049985 2944718 3982623 683201 548605 8250193 1627571 441057 347607 7372229 3277585 1920817 8369099 3375015 6556961 6248485 3849177 460063 8501683 1353765 9145087 8261193 5542857 1443249 1218405 5668737 2883670 8838437 8255561 1674115 5377487 1443629 6297225 7909033 3045311 1097789 7361081 3776289 5956225 4964353 1268377 5166813 8015241 5746369 1826596 2805952 7458955 2892501 7194625 2486305 9568323 1385557 4437465 1933049 1822173 2637897 2573473 2437083 5197251 3570757 3813536 2442358 9056385 2107069 5218120 6447925 6109673 8253651 1640271 7130961 7210961 1731741 459777 8528269 2272207 6314641 7156993 4761601 3229233 1218762 2904249 3104017 7991857 8124043 855569 908137 5529849 9597232 7515378 7452966 1359677 6824513 2930101 3757345 8329089 7013189 8488705 516339 7337470 713245 8877905 3076481 7241330 6152817 6789769 5341285 5456173 9640113 83049 5208149 4495233 5961657 2761797 3929651 5521089 1849281 3265241 1964993 330195 4558041 1053685 3698369 1093417 7873025 1076311 2795569 8247265 8241726 5856387 1841645 848449 815393 7627393 1208705 9425647 9754445 4485641 846297 6741817 8622948 5852929 8771827 8438713 8228212 3811017 9690027 9030019 6851841 3857813 7496869 3004475 6681625 9766545 9557709 9465759 5407369 6299265 4329113 2343236 4899937 4257517 841237 2016187 8010937 5532575 6633821 3180129 3178785 1126531 3547435 6206020 7064601 2606337 2625153 3024299 6349673 5473537 905453 5051259 3067934 2857917 3243421 271853 2215995 9134692 702653 5606545 411713 4369613 6890873 5899169 5919041 7237273 5969275 7351161 7866589 3945873 7813249 9980519 5343485 7697707 545977 9943609 4783545 3095825 4955761 5605263 1567857 5981831 2097403 1159397 6064862 3296669 13490 2984093 7567489 4388265 8326169 628413 2333779 4359745 8794605 9166737 802549 2686394 3657249 6351745 37121 1892193 7906175 1973637 4989643 5576409 5234529 7433157 1856925 7959253 4075033 8594719 4529465 11413 6996401 4843297 176163 7621748 6178001 6223059 4042085 5418785 1752857 8055537 1545850 9556225 7511892 2715509 7430449 393173 5583917 8921553 2501041 8445581 6807841 4683067 3364356 2387729 467641 6781657 5682545 8114779 2962023 6601541 8271249 9900033 9065971 7756958 4459923 523537 1329041 2108033 7325387 3478115 6214155 1244873 2964689 3046355 8182561 3153557 9645951 3599185 425347 3572291 6246401 5778945 1612509 9687087 4343881 1350145 6496349 4935125 5199114 6678857 9083506 3023873 6123001 2563637 3329857 7243681 9533100 5423089 6045323 2619137 1753745 9938282 4567141 5834197 7854913 7189553 5862819 6248449 91633 6188333 6766637 2869221 5164528 7140137 2156865 2191297 1480545 8480951 4710685 5164039 8933528 6198469 395953 8346763 716313 8203649 2352001 1812161 7824961 2159673 6772665 3043145 8740860 9406105 7397136 7079699 1143914 7664257 5083521 968020 8264137 9431421 1195071 9428882 3608595 5405697 3080529 6988061 6037941 5126321 4412988 4899853 5367537 7654621 3345121 5669993 5450223 1512897 46733 9936553 4620673 6642753 8481845 6314297 3636075 336079 1332097 7666721 5260803 8521661 9585293 5646289 6270001 8432049 6804617 6289473 6693425 9616033 1799079 3150645 2805199 9896209 9901957 6368497 290397 7929649 3607185 8533977 2613204 1083341 8661825 7438001 1400671 707391 8311553 8821341 7165208 5646465 1525001 8352925 5496689 5101036 3607575 610240 2749281 5471089 6915089 8878066 8563817 5251061 5902055 4550785 112801 2036641 7364049 8192517 6993874 3559561 8819643 246505 5185679 1805855 5347329 8595395 3235719 2190266 2345289 5856789 9950779 6665729 968773 1816849 7644135 5882293 9321793 6995462 7505457 2801753 8264761 9115249 8633667 9458263 4071167 8654029 5627277 5879233 4277121 1914504 5304193 3710317 4909645 9390583 5601217 7569129 6334001 1125393 6655585 1286761 4106577 71617 8292497 8924937 9827980 3720061 3394741 5610461 5407934 1315297 1312304 5853957 1643009 3355545 3854453 7919657 7891661 3931945 7188331 1704097 9567767 4713871 2921443 1036033 6217361 8796045 6310618 6782801 376965 1980225 5825601 9226673 4488143 4847099 8994677 3108857 7235953 1965055 9623301 7774188 5948681 4941845 4238411 1226324 9363081 7578993 6451881 261769 9270081 8675823 2936745 4393953 3725145 2506865 5921449 4365871 8209657 9756015 9367769 7193825 5020799 3541401 7694482 5628917 8722714 2199575 3599889 6335613 2444069 4981233 9613845 9844635 9189709 4907017 9865441 9122998 979161 1795726 5494795 3227665 7402595 7520017 8749457 9244249 324089 4720001 9594989 9289033 1570467 1728673 2446233 4289725 5991205 1420703 5959521 1133761 1740653 1454601 7873089 4399409 5340257 5015715 5630935 6532953 8415436 7014689 4883523 9471889 4283233 2399757 4860168 930607 1694945 3525049 9577791 3591761 9786209 7890225 7551057 5275877 3303485 7513883 8396573 8557937 3088767 6957421 6741884 1472509 1279393 1802285 5903929 9959861 9367489 946049 6987577 4427361 276658 2709827 7881893 4243745 3428615 8784441 541089 9646433 7923609 3738689 5323721 3559899 9608414 1516969 4561687 4242129 7322817 4344641 9410807 227153 8694337 815201 2971905 9430721 4476897 6705649 9784201 5295267 6318305 7915003 6243408 5345467 5979781 1814961 6815498 7078433 9827361 471569 5899223 6194283 5339809 451969 6984239 7936041 7120933 8033793 3878317 3136641 9256697 2408229 9334283 1172888 4122885 334785 6917377 4998800 6369431 9909389 9153745 9165239 7624342 7294721 3246113 6474980 8065417 7536833 6762281 8854529 1206547 2822817 4602835 9467889 8368481 9684209 613441 1280497 710861 3237783 9411095 7795982 257848 1228324 5682051 6763225 1267001 8531685 2595465 9565441 8981271 1032161 2964669 4780186 5629773 7373929 1109347 9660573 5755465 96129 3779337 1620048 9482721 688498 7918707 5374860 4048801 7796897 2657605 6523477 3279307 1235244 9732061 2104985 2281987 2812175 9818989 7592449 1415305 2387609 1239202 9220177 6444913 5216666 503569 3551889 4985881 2408037 6232213 6129969 4487905 2300784 2931491 6286883 3942945 257825 4102511 4383057 3684174 5882305 1611509 7406137 8746753 344080 1401405 2490243 8116501 8374479 6559447 7871701 6756865 3495817 9255633 843799 3933743 910329 1099209 379897 7052417 419469 3598673 2012285 1019677 827003 1956673 4768977 307529 8154709 8421993 4400897 4881947 3140611 6189743 8511329 9413769 127217 318689 1501127 6940761 3990824 3203213 4071449 7847047 1434449 5668205 6193461 5937833 2615001 1742553 6938379 1697291 6097289 7476449 5533829 4340333 4236890 7807527 509705 4846953 2897953 58523 4207437 6128737 6261361 6721237 5882445 2132097 5858724 398959 875403 2628433 3870186 962217 5401375 1122799 7162119 140865 1006209 4584769 696961 1123665 773857 5695329 5213661 1243757 4858885 7151169 7752144 9276061 4869129 8492061 1567179 2800729 9805505 8081149 1255121 6498425 5681057 3977345 4599133 12295 3939139 6034525 4439777 
  3 5 97 287 7451845 
  4 2 264 689 293 
  5 1 108 772 8114779 
  6 2 15 697 370 
  7 4 150 513 913774 
  8 2 697 781 20 
  9 3 113 5307515 
 10 3 749 2979458 
 11 2 11 529 249 
 12 4 633 801 4288634 
 13 2 92 128 1 
 14 3 961 4252907 
 15 2 447 961 393 
 16 1 28 444 2904249 
 17 4 477 981 122562 
 18 5 314 857 9553024 
 19 2 545 853 78 
 20 2 142 739 457 
 21 3 993 9190707 
 22 3 89 7664635 
 23 2 405 602 157 
 24 2 161 409 90 
 25 4 147 517 5964842 
 26 2 63 537 126 
 27 2 66 548 168 
 28 4 285 894 3935514 
 29 2 73 190 79 
 30 5 166 628 6772755 
 31 3 234 3754561 
 32 4 233 840 7087425 
 33 5 254 645 1142777 
 34 1 93 849 1512897 
 35 1 196 734 8933528 
 36 4 318 345 6893431 
 37 1 313 852 6766637 
 38 5 88 721 5851536 
 39 5 653 693 8204128 
 40 3 681 5157061 
 41 2 137 686 537 
 42 2 115 524 39 
 43 4 17 519 756973 
 44 2 661 920 145 
 45 2 317 726 13 
 46 5 165 171 8367394 
 47 2 251 589 83 
 48 1 130 671 7515378 
 49 3 901 9130549 
 50 5 271 613 4778010 
 51 3 600 7773809 
 52 2 90 369 3 
 53 1 75 409 5832857 
 54 4 128 470 5749762 
 55 2 657 747 17 
 56 2 563 913 16 
 57 3 334 7251305 
 58 3 327 3781745 
 59 5 365 841 6236548 
 60 3 41 2138172 
 61 2 196 591 81 
 62 4 489 809 4990822 
 63 5 433 797 7185055 
 64 2 266 899 187 
 65 4 53 961 910294 
 66 1 147 670 7929649 
 67 4 345 523 1162014 
 68 2 306 730 194 
 69 5 115 769 3596408 
 70 4 489 913 1712364 
 71 1 169 583 3607185 
 72 5 226 805 5230062 
 73 4 251 898 1968754 
 74 4 521 745 3548534 
 75 5 177 696 1751000 
 76 5 357 965 3712428 
 77 5 525 829 333146 
 78 3 361 3256159 
 79 2 27 551 269 
 80 1 544 589 8821341 
 81 4 137 692 4567041 
 82 3 121 4554906 
 83 1 13 437 6807841 
 84 1 320 799 6782801 
 85 4 545 601 2752066 
 86 3 487 7250591 
 87 5 25 689 8262304 
 88 2 193 857 30 
 89 3 617 1407497 
 90 3 833 6348417 
 91 1 81 553 1208705 
 92 3 33 1325065 
 93 5 97 569 1626907 
 94 2 229 839 107 
 95 4 29 646 3364159 
 96 1 127 755 37121 
 97 3 397 3541281 
 98 1 272 317 4257517 
 99 5 215 834 3604560 
100 3 924 9883041 
101 5 275 816 5893776 
102 1 259 637 3720061 
103 2 689 985 222 
104 2 313 861 64 
105 1 641 795 4720001 
106 2 720 825 23 
107 5 4 390 9135802 
108 1 273 690 6633821 
109 1 24 614 1975294 
110 4 132 571 2501042 
111 2 134 564 335 
112 1 312 912 4243745 
113 3 373 8123403 
114 2 659 881 118 
115 1 55 568 3639287 
116 5 143 977 2107530 
117 5 113 740 367516 
118 5 241 870 3566242 
119 2 46 987 373 
120 4 193 853 5412684 
121 1 33 225 6418983 
122 3 765 1826353 
123 2 485 809 106 
124 2 379 945 405 
125 3 361 8742817 
126 1 281 689 6681625 
127 4 123 713 9653112 
128 5 277 775 7922221 
129 1 188 676 1195071 
130 3 247 5825603 
131 2 65 698 301 
132 3 153 8781955 
133 2 156 711 193 
134 4 437 801 6808082 
135 2 473 770 91 
136 4 146 567 6778216 
137 2 73 493 2 
138 2 476 761 25 
139 5 56 621 1805524 
140 4 307 739 4467503 
141 3 801 6046933 
142 4 705 905 6771324 
143 3 105 7040705 
144 1 685 734 1570467 
145 4 681 769 5342410 
146 3 660 7472801 
147 2 264 762 334 
148 5 109 447 5895736 
149 4 73 905 8254306 
150 4 400 435 2115306 
151 5 233 793 7921520 
152 3 473 9896025 
153 1 658 895 261769 
154 2 65 903 416 
155 1 29 661 8501683 
156 3 669 9319861 
157 3 221 218857 
158 4 705 921 6919557 
159 2 281 849 214 
160 2 401 937 13 
161 2 187 626 337 
162 4 301 408 5986044 
163 3 480 7217212 
164 1 145 307 6447925 
165 4 609 685 75866 
166 5 4 668 9614034 
167 3 753 4149889 
168 4 232 872 9167224 
169 4 244 730 398246 
170 1 212 835 1329041 
171 5 405 673 9451361 
172 1 206 722 6335613 
173 1 639 783 4427361 
174 5 457 793 6181576 
175 1 295 757 3541281 
176 3 611 9897517 
177 4 89 681 9324662 
178 5 14 569 1284976 
179 2 319 714 269 
180 2 4 501 197 
181 4 645 905 6202659 
182 1 319 721 6781657 
183 3 289 7740067 
184 5 97 393 75913 
185 4 306 939 5925218 
186 4 527 761 5825762 
187 4 239 850 1043498 
188 4 193 707 7924247 
189 3 425 7758339 
190 5 473 703 3541384 
191 4 292 669 8447458 
192 5 643 697 7189430 
193 3 1 6364929 
194 3 453 2158337 
195 5 3 658 8202018 
196 3 623 8290081 
197 5 367 489 9079161 
198 3 367 5273956 
199 3 751 8918006 
200 5 421 841 8205980 
201 1 140 614 7243681 
202 3 649 9851073 
203 5 235 830 9893392 
204 3 225 800105 
205 3 695 2484031 
206 4 181 403 5239750 
207 3 225 7767337 
208 4 165 377 5748789 
209 1 257 391 1159397 
210 1 401 497 9900033 
211 3 22 4808585 
212 2 793 977 21 
213 5 143 833 1723536 
214 1 237 857 8346763 
215 4 280 896 4718984 
216 4 501 625 5891678 
217 3 225 2702111 
218 1 91 714 848449 
219 3 769 7055773 
220 5 125 653 7620207 
221 5 257 433 3003978 
222 1 145 229 4437465 
223 3 561 2052993 
224 2 45 745 245 
225 1 179 816 3136641 
226 1 717 913 8854529 
227 1 47 477 1774209 
228 4 305 533 274434 
229 5 361 557 8116262 
230 4 667 937 7586162 
231 5 286 533 9937280 
232 4 185 577 52050 
233 4 307 762 8603000 
234 4 81 832 852023 
235 2 86 434 168 
236 1 71 705 112801 
237 2 312 965 501 
238 2 266 874 315 
239 3 685 5389169 
240 3 585 3652621 
241 4 232 778 5992486 
242 5 11 407 4434419 
243 3 743 116929 
244 5 86 622 5892622 
245 4 801 817 6372720 
246 5 61 721 8050711 
247 1 193 741 610240 
248 3 245 5295735 
249 3 529 6509008 
250 3 288 6800545 
251 2 89 269 45 
252 1 173 793 848449 
253 2 57 443 50 
254 4 665 881 2604746 
255 4 405 673 8272191 
256 3 881 2908849 
257 5 66 445 5158028 
258 3 781 6734493 
259 4 225 869 1971250 
260 3 703 115813 
261 1 121 205 3982623 
262 3 581 7933811 
263 1 265 301 6800545 
264 1 42 785 4683067 
265 2 89 281 34 
266 4 313 745 4902610 
267 4 175 667 7670790 
268 1 26 523 7251305 
269 3 237 1704569 
270 1 108 496 7458955 
271 3 356 5789733 
272 2 262 852 514 
273 4 201 813 1168104 
274 5 809 881 2272502 
275 2 905 968 61 
276 1 625 983 2300784 
277 2 291 815 412 
278 2 113 517 77 
279 5 385 749 2341812 
280 1 49 501 8838437 
281 3 153 9626153 
282 4 93 121 4612409 
283 4 273 794 3791714 
284 4 65 793 3548561 
285 5 605 693 6211712 
286 5 82 567 4951356 
287 2 174 635 217 
288 5 125 737 7430568 
289 5 217 823 8388280 
290 3 873 8942433 
291 2 193 749 404 
292 1 604 801 9363081 
293 1 927 965 58523 
294 4 199 551 7467338 
295 2 157 939 577 
296 4 205 227 1822679 
297 1 126 486 7351161 
298 2 65 85 14 
299 4 413 945 5029564 
300 5 21 534 4603634 
301 4 45 483 3763570 
302 2 161 585 400 
303 1 497 649 3235719 
304 2 189 252 34 
305 2 121 337 8 
306 2 625 807 41 
307 3 642 2270569 
308 4 417 561 1337858 
309 4 143 617 525142 
310 3 649 8465125 
311 5 489 497 3041632 
312 3 877 3799405 
313 3 305 9893473 
314 5 214 755 619648 
315 1 289 710 9766545 
316 1 897 934 8511329 
317 1 121 283 9640113 
318 3 447 6244061 
319 1 68 285 5456173 
320 5 795 953 7367102 
321 2 555 781 190 
322 3 517 1410927 
323 2 3 435 105 
324 1 187 593 8771827 
325 1 296 779 8742817 
326 3 465 4215147 
327 4 52 414 1783134 
328 1 145 701 4558041 
329 2 209 913 303 
330 4 117 696 5092970 
331 4 218 557 6210827 
332 1 55 652 2606337 
333 3 327 8661453 
334 3 325 9458669 
335 2 237 795 181 
336 1 232 894 9244249 
337 5 309 725 2603839 
338 1 212 859 6815498 
339 4 25 798 3084850 
340 1 101 518 1812161 
341 3 94 4923811 
342 3 497 8493269 
343 1 94 465 5576409 
344 4 142 793 7573332 
345 5 141 593 8248892 
346 5 433 960 5625012 
347 5 234 738 1321132 
348 4 181 695 4078164 
349 3 385 7929735 
350 4 331 417 5973526 
351 1 113 927 6756865 
352 2 245 851 137 
353 3 799 563233 
354 1 351 783 3559899 
355 2 51 193 106 
356 4 135 762 8595496 
357 5 169 809 1139751 
358 5 385 839 7753513 
359 3 667 6545153 
360 4 855 953 5943824 
361 4 317 833 2753326 
362 4 249 521 8922702 
363 1 253 377 8228212 
364 4 193 587 2568322 
365 4 141 723 2750037 
366 5 523 589 9578780 
367 1 273 769 1752857 
368 1 225 481 1053685 
369 2 226 756 421 
370 5 129 502 3367086 
371 3 857 5644593 
372 5 210 564 3600990 
373 4 169 981 9691200 
374 2 25 248 29 
375 5 6 65 4132350 
376 3 373 2851785 
377 4 102 593 5782678 
378 5 33 93 4725408 
379 4 176 718 331936 
380 3 341 9821717 
381 1 123 457 8438713 
382 5 368 957 820074 
383 1 179 775 5825603 
384 5 329 941 3094352 
385 3 573 8534193 
386 3 33 2984321 
387 5 118 540 4248596 
388 2 228 778 368 
389 2 33 627 521 
390 3 441 7651039 
391 1 14 371 3680876 
392 4 163 690 1228591 
393 5 95 748 9314500 
394 3 391 6605317 
395 1 50 637 8838437 
396 5 65 974 9873388 
397 3 789 6435845 
398 5 465 577 5468916 
399 2 771 929 48 
400 5 161 899 2927358 
401 2 301 863 546 
402 3 619 1144309 
403 2 116 532 246 
404 1 279 662 6741817 
405 4 817 949 2291826 
406 2 479 841 224 
407 2 332 926 308 
408 4 545 969 7369914 
409 3 281 3944193 
410 5 643 997 4853408 
411 3 865 6391807 
412 2 257 737 62 
413 1 239 561 2158337 
414 3 593 2966368 
415 2 598 791 2 
416 1 12 482 5668737 
417 2 130 773 115 
418 2 497 924 9 
419 1 229 671 1126531 
420 2 277 892 399 
421 5 303 823 7926342 
422 4 1 745 7461666 
423 3 561 1743273 
424 2 171 755 43 
425 5 187 703 9460612 
426 3 881 8158165 
427 5 70 467 3919716 
428 4 61 901 5211380 
429 3 93 1102279 
430 1 108 480 7929735 
431 2 633 825 131 
432 5 183 762 2185466 
433 4 189 378 8666288 
434 1 195 649 1093417 
435 5 171 921 6307598 
436 3 979 3397089 
437 1 229 891 4558041 
438 3 910 3267953 
439 3 137 3581625 
440 5 55 550 1840497 
441 2 40 588 459 
442 4 47 519 7671796 
443 4 124 555 7960694 
444 2 247 601 164 
445 5 56 462 1341200 
446 4 103 213 5759266 
447 3 801 2925058 
448 2 181 553 155 
449 1 93 137 7527425 
450 5 212 791 5786884 
451 2 245 917 588 
452 4 233 661 5970972 
453 5 324 804 5574954 
454 4 33 567 3054144 
455 3 392 8033759 
456 4 245 893 9412695 
457 3 235 3519197 
458 4 193 233 8018330 
459 1 553 697 9613845 
460 5 277 543 5050 
461 3 777 7090625 
462 3 778 2472185 
463 2 61 651 202 
464 4 563 569 1533094 
465 1 585 801 968773 
466 3 849 8300175 
467 5 249 879 836646 
468 1 96 458 5473537 
469 5 106 609 621934 
470 1 275 758 4550785 
471 5 457 669 43528 
472 2 169 520 21 
473 1 127 805 7873025 
474 3 875 6038481 
475 3 565 774625 
476 4 745 948 4570368 
477 4 174 734 940400 
478 2 119 586 329 
479 1 494 993 5853957 
480 4 7 500 7629241 
481 4 551 897 4049638 
482 4 329 385 5608924 
483 1 283 959 8819643 
484 4 697 791 1137466 
485 1 156 754 8819643 
486 1 133 844 5407369 
487 2 757 883 12 
488 3 188 2775174 
489 4 561 633 5883110 
490 3 809 62139 
491 5 20 430 6305500 
492 1 73 915 2016187 
493 4 199 865 3556600 
494 1 189 833 2702111 
495 1 82 233 548605 
496 1 43 665 7959253 
497 4 156 563 5855218 
498 2 8 510 50 
499 1 21 273 6447925 
500 3 793 2260369 
501 1 137 735 5630935 
502 5 248 830 5598612
View Code

Output:

  1 7452966 
  2 6890873 
  3 536 
  4 5532575 
  5 908137 
  6 1802285 
  7 4683067 
  8 4283233 
  9 55185 
 10 7796897 
 11 130 
 12 112801 
 13 9556225 
 14 2964669 
 15 7654621 
 16 8114779 
 17 3180129 
 18 5961657 
 19 2573473 
 20 3243421 
 21 3931945 
 22 6279013 
 23 6781657 
 24 7079699 
 25 1143914 
 26 109 
 27 485 
 28 6890873 
 29 353 
 30 5852929 
 31 8209657 
 32 9687087 
 33 1053685 
 34 747948 
 35 5882305 
 36 324089 
 37 8369099 
 38 2625153 
 39 413 
 40 4783545 
 41 83049 
 42 205 
 43 5746369 
 44 2444069 
 45 503569 
 46 6243408 
 47 2108033 
 48 4981233 
 49 7188331 
 50 3178785 
 51 908137 
 52 422 
 53 1159397 
 54 5083521 
 55 3599185 
 56 1704097 
 57 149 
 58 5234529 
 59 1965055 
 60 3541401 
 61 1752857 
 62 3720061 
 63 334785 
 64 5197251 
 65 43 
 66 4558041 
 67 303 
 68 321 
 69 2749281 
 70 8264137 
 71 516339 
 72 54 
 73 1627571 
 74 1856925 
 75 3355545 
 76 3 
 77 18 
 78 3607185 
 79 5899169 
 80 136 
 81 7406137 
 82 1312304 
 83 65 
 84 3088767 
 85 9145087 
 86 269 
 87 116 
 88 2501041 
 89 7654621 
 90 231 
 91 5755465 
 92 193 
 93 2108033 
 94 376965 
 95 3572291 
 96 4071167 
 97 5407934 
 98 135 
 99 3738689 
100 7364049 
101 265 
102 9645951 
103 7923609 
104 50 
105 5083521 
106 3607575 
107 6804617 
108 3559561 
109 6772665 
110 13490 
111 1226324 
112 1805855 
113 4459923 
114 6763225 
115 7 
116 5340257 
117 6851841 
118 5899169 
119 8253651 
120 2108033 
121 7923609 
122 5 
123 5260803 
124 549 
125 6917377 
126 4369613 
127 307529 
128 7621748 
129 5981831 
130 105 
131 71617 
132 9616033 
133 9166737 
134 393173 
135 73 
136 9458263 
137 324 
138 60 
139 6188333 
140 139 
141 9321793 
142 1289937 
143 7165208 
144 3781745 
145 6194283 
146 263 
147 83049 
148 5921449 
149 5825601 
150 1036033 
151 7919657 
152 3541401 
153 8445581 
154 7193825 
155 8203649 
156 9083506 
157 8209657 
158 340 
159 9896025 
160 5234529 
161 5746369 
162 19 
163 96 
164 827003 
165 1728673 
166 507 
167 4713871 
168 5882293 
169 43 
170 7621748 
171 3004475 
172 45 
173 3608595 
174 183 
175 168 
176 74 
177 271853 
178 8123403 
179 7578993 
180 9938282 
181 46733 
182 8595395 
183 848449 
184 4761601 
185 7 
186 7773809 
187 5628917 
188 5991205 
189 4437465 
190 5899169 
191 6369431 
192 8055537 
193 24 
194 2272207 
195 38 
196 1218762 
197 2595465 
198 8264761 
199 5166813 
200 1964993 
201 42 
202 25 
203 329 
204 1608681 
205 4899937 
206 7666721 
207 375 
208 302 
209 8796045 
210 1159397 
211 2281987 
212 8511329 
213 85 
214 7959253 
215 1973637 
216 2345289 
217 414 
218 4610043 
219 3781745 
220 3547435 
221 6217361 
222 4955761 
223 5208149 
224 7433157 
225 8396573 
226 7364049 
227 175 
228 1 
229 7458955 
230 7472801 
231 1822173 
232 277 
233 5598757 
234 5020799 
235 4609855 
236 3754561 
237 9134692 
238 41 
239 4761601 
240 460063 
241 2921443 
242 1332097 
243 523537 
244 3043145 
245 628413 
246 409 
247 33 
248 162 
249 129 
250 7373929 
251 8749457 
252 2387729 
253 369 
254 417 
255 1774209 
256 235 
257 4713871 
258 5083521 
259 6206020 
260 149 
261 3607575 
262 601 
263 2606337 
264 425 
265 3080529 
266 69 
267 213 
268 7569129 
269 8250193 
270 5627277 
271 1329041 
272 4075033 
273 5969275 
274 537 
275 2709827 
276 134 
277 7305647 
278 8595395 
279 1143914 
280 7756958 
281 5937833 
282 2749281 
283 8921553 
284 104 
285 2563637 
286 2749281 
287 9585293 
288 73 
289 25 
290 8055537 
291 3375015 
292 3607185 
293 9690027 
294 1325065 
295 4139521 
296 5778945 
297 4730577 
298 330195 
299 293 
300 827003 
301 331 
302 3095825 
303 4257517 
304 6987577 
305 8594719 
306 141 
307 1226324 
308 9319861 
309 530 
310 9883041 
311 5471089 
312 2931491 
313 2930101 
314 9786209 
315 5956225 
316 243 
317 2281987 
318 6772665 
319 5629773 
320 7364049 
321 4858885 
322 1480545 
323 61 
324 115813 
325 270 
326 1856925 
327 257825 
328 42 
329 6772665 
330 7929649 
331 7458955 
332 979161 
333 9465759 
334 3929651 
335 5208149 
336 309 
337 7235953 
338 2190266 
339 8661453 
340 40 
341 6314297 
342 271 
343 1841645 
344 8247265 
345 7664635 
346 7959253 
347 5273956 
348 1350145 
349 5753681 
350 4495233 
351 40 
352 5789733 
353 8796045 
354 5969275 
355 5576409 
356 3049985 
357 9411095 
358 8015241 
359 139 
360 11413 
361 3375015 
362 1525001 
363 14 
364 841237 
365 201 
366 628413 
367 195 
368 46733 
369 841237 
370 529 
371 4561687 
372 930607 
373 6996401 
374 277 
375 7627393 
376 4048801 
377 5606545 
378 594 
379 1133761 
380 535 
381 357 
382 1109347 
383 5882293 
384 6314641 
385 165 
386 3547435 
387 154 
388 9 
389 504 
390 5852929 
391 1112597 
392 180 
393 327 
394 5605263
View Code

posted on 2016-01-06 14:27  ACMICPC  阅读(264)  评论(0编辑  收藏  举报

导航