今天个人赛用的题都是CF的,虽然不是一个系列的,但题的质量都还不错,在这里整理下这些题的代码。话说老廖在acwing上的每日一题做过这些题,真他娘的巧。
#include <stdio.h>
int a[55],b[55];
int main()
{
int _;
scanf("%d",&_);
while(_--)
{
int n,x;
scanf("%d%d",&n,&x);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=n;i>=1;i--)
scanf("%d",&b[i]);
int i;
for(i=1;i<=n;i++)
if(a[i]+b[i]>x)
break;
if(i>n)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
#include <stdio.h>
char s1[205],s2[205];
int ans[205];
int main()
{
int n;
scanf("%d",&n);
getchar();
for(int i=1;i<=n;i++)
{
char c;
scanf("%c",&c);
s1[i]=c;
s2[i]=c;
}
int cnt=1;
for(int i=2;i<n;i++)
{
if(s1[i]!=s1[i-1])
{
ans[cnt++]=i;
s1[i]=s1[i-1];
s1[i+1]='B'+'W'-s1[i+1];
}
}
if(s1[n]==s1[1])
{
printf("%d\n",cnt-1);
for(int i=1;i<cnt;i++)
{
if(i!=cnt-1)
printf("%d ",ans[i]);
else
printf("%d\n",ans[i]);
}
}
else
{
cnt=1;
ans[cnt++]=1;
s2[1]='B'+'W'-s2[1];
s2[2]='B'+'W'-s2[2];
for(int i=2;i<n;i++)
{
if(s2[i]!=s2[i-1])
{
ans[cnt++]=i;
s2[i]=s2[i-1];
s2[i+1]='B'+'W'-s2[i+1];
}
}
if(s2[n]==s2[1])
{
printf("%d\n",cnt-1);
for(int i=1;i<cnt;i++)
{
if(i!=cnt-1)
printf("%d ",ans[i]);
else
printf("%d\n",ans[i]);
}
}
else
printf("-1\n");
}
return 0;
}
#include <stdio.h>
#define N 100005
int number[N],sum1[N],sum2[N];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&number[i]);
number[0]=0,number[n+1]=m;
for(int i=1;i<=n+1;i++)
{
if(i%2)
{
sum1[i]=sum1[i-1]+number[i]-number[i-1];
sum2[i]=sum2[i-1];
}
else
{
sum2[i]=sum2[i-1]+number[i]-number[i-1];
sum1[i]=sum1[i-1];
}
}
int ans=sum1[n+1];
for(int i=1;i<=n+1;i++)
{
if(number[i]-number[i-1]>1)
{
int sum=sum1[i-1];
sum+=number[i]-number[i-1]-1;
sum+=sum2[n+1]-sum2[i];
if(sum>ans)
ans=sum;
}
}
printf("%d\n",ans);
return 0;
}
#include <stdio.h>
#define N 100005
int number[N];
int main()
{
int _;
scanf("%d",&_);
while(_--)
{
int n,dis;
scanf("%d%d",&n,&dis);
int Max=0,flag=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&number[i]);
if(number[i]>Max)
Max=number[i];
if(number[i]==dis)
flag=1;
}
if(flag)
printf("1\n");
else
{
if(dis<Max)
printf("2\n");
else
printf("%d\n",dis%Max?dis/Max+1:dis/Max);
}
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
#define N 200005
int number[N],flag[N];
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&number[i]);
flag[number[i]]=1;
}
vector <int> receive,give;
for(int i=1;i<=n;i++)
{
if(!number[i])
receive.push_back(i);
if(!flag[i])
give.push_back(i);
}
int cnt=receive.size();
for(int i=0;i<cnt;i++)
{
if(receive[i]==give[i])
{
int x=i,y=(i+1)%cnt;
swap(give[x],give[y]);
}
}
for(int i=0;i<cnt;i++)
number[receive[i]]=give[i];
for(int i=1;i<=n;i++)
{
if(i!=n)
printf("%d ",number[i]);
else
printf("%d\n",number[i]);
}
return 0;
}