灵异错误*2求救!

,

首先第一个:
image
\color{red}{WA} 75分 代码:

#include<bits/stdc++.h>
#define int long long
#define IN(a) freopen(a".in","r",stdin)
#define OUT(a) freopen(a".out","w",stdout)
#define FILE(a) IN(a),OUT(a)
#define FAST cin.sync_with_stdio(0),cin.tie(0),cout.tie(0)
using namespace std;
string s;
int k;
signed main(){
	FAST;
//	FILE("sum");
	cin>>s>>k;
	for(int i = 1;i<s.size();i++){
		if(s[i-1]>s[i]){
			s.erase(s.begin()+i-1);
			k--;
			if(i==1)i++;
			if(i==2)i++;
			i-=3;
			if(k==0)break;
		}
	}
	s.erase(s.end()-k,s.end());
	while(s[0]=='0'){
		s.erase(0,1);
	}
	cout<<s;
    return 0;
}

第二个:
image
image
\color{lightblue}TLE 0分 代码:(不知为何 \color{lightblue}TLE ,时间复杂度正确,样例通过)

#include<bits/stdc++.h>
#define ll long long
#define IN(a) freopen(a".in","r",stdin)
#define OUT(a) freopen(a".out","w",stdout)
#define FILE(a) IN(a),OUT(a)
#define FAST cin.sync_with_stdio(0),cin.tie(0),cout.tie(0)
using namespace std;
struct Node{
	int l,r,v;
}tr[2500005];
int n,m,root[2500005],tot = 0;
int a[200050];
void pushup(int x){
	int ls = tr[x].l;
	int rs = tr[x].r;
	tr[x].v = tr[ls].v + tr[rs].v;
}
void add(int last,int &now,int l,int r,int v){
	now = ++tot;
	tr[now] = tr[last];
	if(l==r){
		tr[now].v = tr[last].v + 1;
		return ;
	}
	int mid = l+r>>1;
	if(v<=mid){
		add(tr[last].l,tr[now].l,l,mid,v);
	}else{
		add(tr[last].r,tr[now].r,mid+1,r,v);
	}
	pushup(now);
}
int query(int last,int now,int l,int r,int ql,int qr){
	if(tr[now].v-tr[last].v<1)return 0;
	if(l>=ql&&r<=qr)return 1;
	int mid = l+r>>1,sum = 0;
	if(mid >= ql){
		sum+=query(tr[last].l,tr[now].l,l,mid,ql,qr);
	}
	if(mid < qr){
		sum+=query(tr[last].r,tr[now].r,mid+1,r,ql,qr);
	}
	return sum;
}
signed main(){
	FAST;
//	FILE("twelve");
	cin>>n>>m;
	for(int i = 1;i<=n;i++){
		cin>>a[i];
		add(root[i-1],root[i],0,500005,a[i]);
	}
	for(int i = 1;i<=m;i++){
		int b,x,l,r,ans = 0;
		cin>>b>>x>>l>>r;
		for(int j = 17;j>=0;j--){
			int L,R,fl,op;
			fl = (1<<j)&b;
			if(fl){
				L=ans,R=ans+(1<<j)-1,op = 0;
			}else{
				L=ans+(1<<j),R=ans+(1<<j+1)-1,op = 1;
			}
			if(!query(root[l-1],root[r],0,500005,max(0,L-x),min(500005,R-x)))
				op^=1;
			ans+=(op<<j);
		}
		cout<<(ans^b)<<'\n';
	}
    return 0;
}

你的 T3 数组开小了,把tr数组开成5000005

zzmNB%%%