2017亚洲区域赛(西安)
B 签到
#include<bits/stdc++.h> using namespace std; const int maxn=2e5+10; int a[maxn],b[maxn]; int main() { int T; scanf("%d",&T); while(T--) { int n,k; scanf("%d%d",&n,&k); for(int i=1; i<=n; i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) scanf("%d",&b[i]); sort(a+1,a+1+n); sort(b+1,b+1+n); int ans=0; for(int i=n,j=1;i>=1&&j<=n;) { while(a[i]+b[j]<k) { j++; } if(j<=n) { i--; j++; ans++; } } printf("%d\n",ans); } }
F 赌徒定理,ans=n/n+m
H 签到
#include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; int a[maxn]; int main() { int T; scanf("%d",&T); while(T--) { int n,k; scanf("%d%d",&n,&k); for(int i=1; i<=n; i++) scanf("%d",&a[i]); int ans=0; for(int i=1; i<=n-k+1; i++) { int minn=0x3f3f3f3f; for(int j=i; j<=i+k-1; j++) { minn=min(minn,a[j]); if(minn==0) break; // printf("???"); } if(minn==0) continue; ans+=minn; // printf("%d ",minn); for(int j=i; j<=i+k-1; j++) { a[j]-=minn; // printf("???"); } } printf("%d\n",ans); } }