:::info[Description] Link. :::
:::infoSolution 容易发现若在所有时刻中,有 个时刻 位置有物品,则这些物品中一定恰有 个物品是向右移动的, 个物品是向下移动的。因此对每个 只需要知道 和 位置有过的物品数量就可以求出 位置有过的物品的数量,可以直接 dp 求解。
直接对每组询问都暴力跑一遍平方的 dp,时间复杂度为 可以通过该题。 :::
:::success[Code]
namespace lowspeed_song {
inline void init() {
}
int a[N], f[124][124], g[124][124];
inline void sol() {
memset(f, 0, sizeof f);
memset(g, 0, sizeof g);
int t, x, y; cin >> t >> x >> y;
f[1][1] = t - x - y + 1, g[1][1] = t - x - y;
for (int i = 1; i <= x + 1; ++i)
for (int j = 1; j <= y + 1; ++j) {
f[i][j] += f[i - 1][j] / 2 + (f[i][j - 1] + 1) / 2;
g[i][j] += g[i - 1][j] / 2 + (g[i][j - 1] + 1) / 2;
}
cout << ((f[x + 1][y + 1] != g[x + 1][y + 1]) ? "YES" : "NO") << '\n';
}
} // namespace lowspeed_song:::
难度:紫-
鲜活指数:9
喜欢的话,留下你的评论吧~