题目传送门:
P1881 绳子对折
AC代码:
#include<bits/stdc++.h>
using namespace std;
bool flag[20005];
int main()
{
int n,l,i,j,ans=0;
int a[101];
cin>>n>>l;
l*=2;
for(int k=1;k<=n;k++)
{
scanf("%d",&a[k]);
flag[2*a[k]]=1;//有可能是0.5,所以要乘2
}
for(i=1;i<=l/2;i++)
{
for(j=0;j<i;j++)
{
if((flag[j]==1 && flag[j+(i-j)*2]!=1) || (flag[j]!=1 && flag[j+(i-j)*2]==1)) break;//判断
}
if(j==i) ans++;
}
for(i=l/2+1;i<l;i++)
{
for(j=l;j>i;j--)
{
if((flag[j]==1 && flag[j-(j-i)*2]!=1) || (flag[j]!=1 && flag[j-(j-i)*2]==1)) break;//判断
}
if(j==i) ans++;
}
cout<<ans;
return 0;
}
QAQ