蒟蒻在HDU上T飞了,自己造了几组数据发现是程序不知道哪里死了,然后我rand到下面这组数据时,发生了灵异事件!
代码中66行的“cout<<"cyka blayte"<<endl;”注释的话只能输出“scheiBe”,不注释却可以输出第一组数据!
具体输入和代码和截图如下:
输入:
2
37 22
2555 1840 582 6984 4560 8758 9301 1178 8615 597 1073 983 4153 4747 6444 2123 5956 9747 5187 5720 6993 1933 1926 623 3830 532 7716 837 382 2221 1763 3199 856 7432 5289 88 2130
7 30 8908
19 31 8415
11 25 3641
30 36 7992
27 33 569
4 37 3796
29 31 8667
5 10 9419
37 37 1356
27 31 2422
34 36 8334
36 36 5840
21 33 4176
30 30 2043
22 25 5491
33 36 4441
12 34 4224
19 28 8005
13 21 2652
29 36 4006
34 34 8605
13 37 5494
50 24
6681 2127 5364 3879 3246 1670 1783 617 8459 995 75 55 5317 2490 1085 3491 1169 4414 1027 3399 9750 6371 187 4353 1647 8975 6352 3260 9614 7813 7866 7446 1381 8835 2173 8256 4033 4047 1156 9539 3268 8230 6762 2746 7525 657 2718 3120 5016 2561
42 46 4056
49 49 8582
15 19 5628
45 49 1344
43 45 9685
18 47 1185
33 46 9988
19 26 1362
31 44 1695
22 28 9011
19 24 6383
14 15 848
27 40 4455
29 35 1267
47 50 6174
48 49 3234
5 50 426
22 46 5847
31 34 4128
46 47 9715
14 50 9769
5 47 3990
20 37 40
27 41 4374
代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<vector>
using namespace std;
const int N=1e5+10;
int t,n,m,tot;
int a[N],root[N];
vector <int> num;
struct node{
int l,r,cnt;
}tr[N<<4];
int find(int x){
return lower_bound(num.begin(),num.end(),x)-num.begin();
}
int build(int l,int r){
int p=++tot;
if(l==r){
return p;
}
int mid=(l+r)>>1;
tr[p].l=build(l,mid);
tr[p].r=build(mid+1,r);
return p;
}
int insert(int p,int l,int r,int x){
int q=++tot;
tr[q]=tr[p];
if(l==r){
tr[q].cnt++;
return q;
}
int mid=(l+r)>>1;
if(x<=mid){
tr[q].l=insert(tr[p].l,l,mid,x);
}
else{
tr[q].r=insert(tr[p].r,mid+1,r,x);
}
tr[q].cnt=tr[tr[q].l].cnt+tr[tr[q].r].cnt;
return q;
}
int query(int p,int q,int l,int r,int h){
if(r<=h){
return tr[p].cnt-tr[q].cnt;
}
int ans=0;
int mid=(l+r)>>1;
if(h>mid){
ans+=query(tr[p].r,tr[q].r,mid+1,r,h);
}
ans+=query(tr[p].l,tr[q].l,l,mid,h);
return ans;
}
int main(){
freopen("HDU4417.in","r",stdin);
freopen("HDU4417.out","w",stdout);
scanf("%d",&t);
int c;
cout<<"scheiBe"<<endl;
while(t--){
c++;
scanf("%d%d",&n,&m);
// cout<<"cyka blayte"<<endl;
printf("Case %d:\n",c);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
num.push_back(a[i]);
}
sort(num.begin(),num.end());
num.erase(unique(num.begin(),num.end()),num.end());
root[0]=build(0,num.size()-1);
for(int i=1;i<=n;i++){
root[i]=insert(root[i-1],0,num.size()-1,find(a[i]));
}
int l,r,k;
while(m--){
scanf("%d%d%d",&l,&r,&k);
l++,r++;
int pos=find(k);
if(num[pos]!=k){
pos--;
}
printf("%d\n",query(root[r],root[l-1],0,num.size()-1,pos));
}
memset(tr,0,sizeof tr);
memset(a,0,sizeof a);
memset(root,0,sizeof root);
tot=0;
num.clear();
printf("\n");
}
}
截图:

