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);
}
}