题目链接
分析:这道题有点像 蚂蚁过绳这道题,但是这道题和蚂蚁过绳还是有一些区别的。(看了大佬博客明白的)
题目要求 如果两个同学发现在某一个整数时刻他们处在同一个整点那么他们都会向后转,如原来向右走的变成向左走,是允许存在多个同学在一起且不一定是相向而行。
直接上代码,代码比较容易理解。
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<cstring>
using namespace std;
int main()
{
int n,k;
int a[3005];//记录位置
int c[3005];//记录每个位置人数
bool b[3005];//记录当前方向
int ans=0;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
scanf("%d%d",&a[i],&b[i]);
for(int i=0;i<k;i++)
{
memset(c,0,sizeof(c));
for(int j=1;j<=n;j++)
{
if(a[j]<=i) continue;//保证已经确定被"埋"的,为保证对剩余的无影响
a[j]+=b[j]?1:-1;
c[a[j]]++;
}
for(int j=1;j<=n;j++)
{
if(c[a[j]]>1)
b[j]^=1;//改变方向;
}
}
for(int i=1;i<=n;i++)
if(a[i]<=k)
ans++;
printf("%d\n",ans);
return 0;
}