CF1628D1 Game on Sum (Easy Version)
CF1628D1 Game on Sum (Easy Version) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
个人认为博弈论的板子题。
首先
然后又是一个障眼法:Bob 肯定会选择恰好
博弈论经典倒序 dp,这是因为每个人都聪明绝顶,可以根据接下来的局势判断当前局势做什么更优(而跟之前的局势无关)。
设
接着倒着思考,先思考 Bob 再思考 Alice,因为 Alice 的决策取决于 Bob。
设这一轮 Alice 选择的是
Bob 为了让
当然聪明绝顶秃头的 Alice 也思考到了 Bob 的思考。那么她的目标就是让
推导可得当且仅当
得到转移方程:
边界:
多组询问,先预处理然后
时间复杂度
/*
* @Author: crab-in-the-northeast
* @Date: 2022-10-17 02:13:13
* @Last Modified by: crab-in-the-northeast
* @Last Modified time: 2022-10-17 02:20:25
*/
#include <bits/stdc++.h>
#define int long long
inline int read() {
int x = 0;
bool flag = true;
char ch = getchar();
while (!isdigit(ch)) {
if (ch == '-')
flag = false;
ch = getchar();
}
while (isdigit(ch)) {
x = (x << 1) + (x << 3) + ch - '0';
ch = getchar();
}
if(flag)
return x;
return ~(x - 1);
}
const int mod = (int)1e9 + 7, in2 = (int)5e8 + 4;
const int maxn = 2005, maxm = 2005;
int f[maxn][maxm];
signed main() {
for (int i = 1; i <= 2000; ++i)
f[i][i] = i;
for (int i = 2; i <= 2000; ++i)
for (int j = 1; j < i; ++j)
f[i][j] = (f[i - 1][j] + f[i - 1][j - 1]) % mod * in2 % mod;
int q = read();
while (q--) {
int n = read(), m = read(), k = read();
printf("%lld\n", f[n][m] * k % mod);
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】