P10132 [USACO24JAN] Cannonball 题解
思路
简单按照题意模拟,向左还是右走就记录偏移量为
为了防止出现题目中的死循环,记录一下循环跑了几次,超过一定阈值就算它死循环。
Code
int main()
{
int ans = 0, op = 1, power = 1, cnt = 0;
while (1 <= s && s <= n)
{
if (++cnt == 10000000)
break;
if (q[s] == 0)
{
if (op == 1)
op = -1;
else
op = 1;
power += v[s];
}
else if (!st[s] && power >= v[s])
{
st[s] = true;
ans ++;
}
s += power * op;
}
printf("%d", ans);
}