这是一个和大佬门同台竞技的机会。
难是唯一的感觉。

第一题

可能不对,大佬勿喷。
我就是想让他们的差逼近0,直到最后一次操作。
然后看看他们的差是不是又不是0的。如果有就错误,没有就对。

#include<bits/stdc++.h>
#define PII pair<int,pair<int,int> > 
#define For(i,l,r) for(int i = l;i<=r;i++)
#define N 10010
using namespace std;
priority_queue<PII,vector<PII>,greater<PII> > q,p;
int a[N],b[N],c[N];
int n,m;
int f,s,th;
int main(){
	freopen("sequence.out","w",stdout);
	freopen("sequence.in","r",stdin);
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	int t;cin>>t;
	For(i,1,t){
		cin>>n>>m;
		For(j,1,n){
			cin>>a[j];
		}
		For(j,1,n){
			cin>>b[j];
			c[j]=b[j]-a[j];
		}
		For(j,1,m){
			cin>>f>>s>>th;
			q.push({f,{s,th}});
		}
		while(!q.empty()){
			PII u = q.top();
			q.pop();
			f=u.first,s=u.second.first,th = u.second.second;
			if(f==1&&c[s]!=0&&c[th]!=0){
				if(abs(c[s])>abs(c[th]))c[s]-=c[th],c[th]=0;
				else c[th]-=c[s],c[s]=0;
			}
			if(f==2&&c[s]!=0&&c[th]!=0){
				if(abs(c[s])>abs(c[th]))c[s]+=c[th],c[th]=0;
				else c[th]+=c[s],c[s]=0;
			}
		}
				For(j,1,n)if(c[j]!=0){puts("NO");continue;}
		puts("YES");
	}
	return 0;
} 

第二题

第二题暴力做的,逆序对直接用二分求地。。。。。

#include<bits/stdc++.h>
#define N 100010
#define For(i,l,r) for(int i = l;i<=r;i++)
#define ULL unsigned long long
using namespace std;
int a[N];
int q[N];
int s[N];
int n,m;
int ope,pos;
ULL merge_sort(int l,int r){
    if(l>=r)return 0;
    int mid=(l+r)>>1;
    ULL res=merge_sort(l,mid)+merge_sort(mid+1,r);
    int i = l,j = mid+1,cnt=l;
    while(i<=mid&&j<=r){
        if(q[i]<=q[j])a[cnt++]=q[i++];
        else{
            res+=mid-i+1;
            a[cnt++]=q[j++];
        }
    }
    while(i<=mid)a[cnt++]=q[i++];
    while(j<=r)a[cnt++]=q[j++];
    for(i=l;i<=r;i++)q[i]=a[i];
    return res;
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin>>n>>m;
	For(i,1,n){
		cin>>s[i];
	}
	For(i,1,m){
		cin>>ope>>pos;
		if(ope==1){
			swap(s[pos],s[pos+1]);
		}
		if(ope==2){
			int sum = 0;
			memcpy(q,s,sizeof s);
			for(int j = 0;j<n;j++){
				if(sum==pos)break;
				for(int u = n;u>=2;u--){
					if(sum==pos)break;
					if(q[u]<q[u-1]){
						swap(q[u],q[u-1]);
						sum++;
					}
				}
			}
			cout<<merge_sort(1,n)<<endl;
		}
	}
}

第三题

我是那种能看到第三题的人?????????