#include<bits/stdc++.h> using namespace std; int a[1000005],b[1000005]; int main(){ //freopen("drying.in","r",stdin); //freopen("drying.out","w",stdout); int n,cnt=0; scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d%d",&a[i],b+i); } sort(a+1,a+n+1); sort(b+1,b+n+1); int i=1,j=1; while(i<=n){ if(a[i]>=b[j]){ j++,i++,cnt++; } else i++; } printf("%d",cnt); return 0; }
三.删除挑战(del)
1.题目大意
有一个长度为n的序列a,小可要删除其中k个数字。
2.思路
循环k次,删除结尾和开头中最小的元素,最后累加并输出。
3.代码
#include<bits/stdc++.h> using namespace std; int n,a[5005],k; long long s[5005]; int main(){ //freopen("del.in","r",stdin); //freopen("del.out","w",stdout); cin>>n>>k; for(int i=1;i<=n;i++){ cin>>a[i],s[i]=s[i-1]+a[i]; } k=n-k; long long ans=0,t; for(int i=k;i<=n;i++){ t=s[i]-s[i-k]; ans=max(ans,t); } cout<<ans; return 0; }