这是为什么?
查看原帖
这是为什么?
484007
cute_chuanpu楼主2022/3/18 21:10

rt,改动前:

#include<iostream>
#include<algorithm>
using namespace std;
long long b[100005],e[100005],a[100005],n,t,ans;
bool cmp(int x,int y){
	return x>y;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>e[i];
		a[e[i]]=1;
	}
	for(int i=1;i<=100000;i++){
		if(!a[i]) b[++t]=i;
	}
	sort(a+1,a+n/2+1,cmp);
	sort(a+n/2+1,a+n+1);
	sort(b+1,b+n+1,cmp);
	for(int i=1,j=1,k=1;i<=n/2;i++){
		if(e[j]>b[k]){
			j++;
		}else{
			ans++;
			j++;
			k++;
		}
		
	}
	for(int i=n/2+1,j=i,k=n;i<=n;i++){
		if(e[j]<b[k]){
			j++;
		}else{
			ans++;
			j++;
			k--;
		}
		
	}
	cout<<ans;
	return 0;
}
//1380 474

WA 18pts

https://www.luogu.com.cn/record/71691833

改动后:

#include<iostream>
#include<algorithm>
using namespace std;
long long a[100005],b[100005],e[100005],n,t,ans;
bool cmp(int x,int y){
	return x>y;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		e[a[i]]=1;
	}
	for(int i=1;i<=100000;i++){
		if(!e[i]){
			b[++t]=i;
		} 
	}
	sort(a+1,a+n/2+1,cmp);
	sort(a+n/2+1,a+1+n);
	sort(b+1,b+1+n,cmp);
	for(int i=1,j=1,k=1;i<=n/2;i++){
		if(a[j]>b[k]){
			j++;
		}else{
			ans++;
			j++;
			k++;
		}
	}
	for(int i=n/2+1,j=i,k=n;i<=n;i++){
		if(a[j]<b[k]){
			j++;
		}else{
			ans++;
			j++;
			k--;
		}
	}
	cout<<ans;
	return 0;
}
//1380 474

https://www.luogu.com.cn/record/71697023

AC 100pts

这是为什么

2022/3/18 21:10
加载中...