CF1495E Qingshan and Daniel
场上不到半小时就过了,感觉这题的难度取决于它是第几题。。
首先注意到加起来小的阵营会把牌打完,现在考虑小阵营对大阵营的贡献。
每个小阵营机器人必然会以顺时针的方向对后面的大阵营机器人做贡献,那么我们直接绕着环跑两圈,记录当前小阵营打出的牌数和往后做贡献就行了,至于为啥要跑两圈是因为第一圈可能没贡献干净。
时间复杂度
代码:
int main () {
// freopen ("1.in", "r", stdin);
// freopen ("1.out", "w", stdout);
n = rd (), m = rd ();
rep (i, 1, m) p[i] = rd (), k[i] = rd (), b[i] = rd (), w[i] = rd ();
generate ();
ll s[2] = {0, 0};
rep (i, 1, n) s[t[i]] += a[i];
ll now (0);
bool o (s[0] > s[1]);
if (t[1] != o) ++ ans[1], -- a[1];
rep (i, 1, n) {
if (t[i] == o) now += a[i], ans[i] += a[i], a[i] = 0;
else {
if (now >= a[i]) ans[i] += a[i], now -= a[i], a[i] = 0;
else ans[i] += now, a[i] -= now, now = 0;
}
}
rep (i, 1, n) {
if (t[i] == o) now += a[i], ans[i] += a[i], a[i] = 0;
else {
if (now >= a[i]) ans[i] += a[i], now -= a[i], a[i] = 0;
else ans[i] += now, a[i] -= now, now = 0;
}
}
ll ret (1);
rep (i, 1, n) ret = (ret * (((1ll * i * i) ^ ans[i]) % P + 1)) % P;
cout << ret;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?