CF1628D1 - Game on Sum (Easy Version)(博弈DP)

正着想不好想(因为有“后效性”且无“前效性”,即之前做的决定并不影响这一状态之后的结果),不妨倒推一波。设dp[i][j]为还剩i轮且Bob还需要使用j次Add的最大值。详细题解可以参考https://www.luogu.com.cn/problem/solution/CF1628D1

#include <bits/stdc++.h>
#define int long long
#define ll long long
#define mod 1000000007
#define N 100005
using namespace std;
int n, m, k;
ll _inv[N];  
void pre(int MOD){  
    _inv[0]=_inv[1]=1;  
    for(int i=2;i<N;i++)
        _inv[i]=((MOD-MOD/i)*_inv[MOD%i])%MOD;  
}    
int dp[2005][2005];
signed main() {
	int T;
	cin >> T;
	pre(mod);
	memset(dp, 0, sizeof(dp));
	for(int i = 1; i <= 2000; i++) {
		dp[i][i] = i;
		dp[i][0] = 0;
	}
	for(int i = 2; i <= 2000; i++) {
		for(int j = 1; j < i; j++) {
			dp[i][j] = (dp[i - 1][j - 1] + dp[i - 1][j]) % mod * _inv[2] % mod;
		}
	}
	while(T--) {
		cin >> n >> m >> k;
		cout << dp[n][m] * k % mod << endl;
	}
	return 0;
}
posted @   脂环  阅读(57)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2021-03-04 BZOJ2882. 工艺(最小表示法)
2021-03-04 POJ1961. Period(KMP + 最小循环元)
2021-03-04 Leetcode354. 俄罗斯套娃信封问题(线性DP/排序)
2020-03-04 洛谷P1017进制转换(进制转换/取模)
2020-03-04 洛谷P1088火星人(stl/全排列)
点击右上角即可分享
微信分享提示
主题色彩