P1413 坚果保龄球 题解
这道题可以用
该部分代码如下:(备注:
for(i=1;i<=n;i++)
{
scanf("%d%d",&k,&l);
a[k]++;
z[k][a[k]]=l;
}
由于输入的时间不一定按先后排序,因此我们要用
for(i=1;i<7;i++)std::sort(z[i]+1,z[i]+a[i]+1);
我们根据分析,可以发现:假若两个相邻的僵尸侵入时间小于
代码核心部分:
for(i=1;i<7;i++)
{
if(!a[i])continue;//如果没有僵尸就直接进入下一层循环
m++;//如果现在是第一个僵尸就让计数器加1(例:如果该列只有1个僵尸,也需要1个坚果,所以如果该列有僵尸,则初始要加1)
f=0;//标记时间是否已经改变过
if(!f)
{
s=z[i][1];//将时间设定
f=1;
}
for(j=2;j<=a[i];j++)
{
if(z[i][j]-s>=60)//判断时间差
{
s=z[i][j];//替换时间
m++;//坚果数量加1
f=0;
}
}
}
核心部分处理完以后,直接输出