【BZOJ3612】[Heoi2014]平衡【计数DP】【整数拆分】

原创 2016年05月30日 16:42:24

【题目链接】

【tunix的题解】

枚举力矩和、拿走橡皮的个数,然后就变成整数拆分问题了。

/* Telekinetic Forest Guard */
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

const int maxn = 10005, maxk = 12;

int n, k, p, dp[maxn * maxk][maxk];

inline int iread() {
	int f = 1, x = 0; char ch = getchar();
	for(; ch < '0' || ch > '9'; ch = getchar()) f = ch == '-' ? -1 : 1;
	for(; ch >= '0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
	return f * x;
}

int main() {
	for(int T = iread(); T; T--) {
		n = iread(); k = iread(); p = iread();
		if(k == 1) {
			printf("1\n");
			continue;
		}

		int w = n * (k - 1);
		dp[0][0] = 1;
		for(int i = 1; i <= w; i++) for(int j = 1; j < k; j++) {
			if(i >= j) dp[i][j] = (dp[i - j][j] + dp[i - j][j - 1]) % p;
			else dp[i][j] = 0;
			if(i > n) dp[i][j] = (dp[i][j] - dp[i - (n + 1)][j - 1] + p) % p;
		}

		int ans = 0;
		for(int i = 1; i <= w; i++) for(int j = 1; j < k; j++)
			ans = (ans + dp[i][j] * dp[i][k - j] + dp[i][j] * dp[i][k - j - 1]) % p;
		printf("%d\n", ans);
	}
	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【BZOJ3612】【HEOI2014】平衡 整数划分、

题意: 有一个杠杆,半长为n,在(2n+1)个整数坐标各有一个质量相同的砝码。 现在给出n,然后再给出要取走的砝码个数,问使得最终杠杆依然平衡的最终方案数是多少。 (文末会给出原题帽) 分析:...
  • Vmurder
  • Vmurder
  • 2015年01月09日 10:22
  • 1501

BZOJ3612 [Heoi2014]平衡

带限制的整数划分数问题。

BZOJ 3612 HEOI2014 平衡 递推

题目大意:给定一个杠杆,一共2n+1个位置,每个上面有一个质点,求拿走k个质点后使杠杆仍然保持平衡的方案数 mod p的值 n 令f[n][m]表示n个数划分为m个互不相同的数且最...
  • PoPoQQQ
  • PoPoQQQ
  • 2015年01月09日 08:49
  • 1826

BZOJ 3611 HEOI2014 大工程 倍增LCA+单调栈+树形DP

题目大意:给定一棵树,m次询问,每次给出k个关键点,询问这k个点之间的两两距离和、最小距离和最大距离 n 处理方法同2286 消耗战 地址见 http://blog.csd...
  • PoPoQQQ
  • PoPoQQQ
  • 2015年01月07日 17:48
  • 2334

bzoj 3611 【heoi2014】大工程 虚树+树形DP

题意:给定一棵n个节点的树,q组询问,每次询问找m个关键点,求m个关键点两两之间距离的和、距离的最大值和最小值 n个点的树,对k个关键进行操作(询问)的一眼过去一般都是虚树题 因为原树边权是1,所...

bzoj 3611 [Heoi2014]大工程 虚树DP

题意就不说了,比较复杂,自己看吧。分析: 我还是naive了,居然想着直接做。。以后看见这种询问个数之和...

hdu 1028 Ignatius and the Princess III(整数拆分,母函数或dp)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1028 题意:整数拆分,拆分成正整数的和的方案数。 解题方案:母函数或dp。 方法一:母函数。与上一篇博...
  • mr_zj_
  • mr_zj_
  • 2017年04月03日 22:19
  • 120

Hdu 1028 Ignatius and the Princess III(整数拆分问题,DP)

Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ...
  • Sara_YF
  • Sara_YF
  • 2016年08月10日 21:30
  • 147

HDU1028 Ignatius and the Princess III(整数拆分:母函数||DP)

题意: 给出一个值n,问有几种不同的拆分方法。 要点: 可以用母函数或DP来做,这里说一下母函数,基本思路是:写成(1+x^2+x^3+x^4……x^n)*(1+x^2+x^4+……)*(1+x^3+...

因数小于16的正整数拆分方案:一个有趣的dp

“灰常灰常”有趣的dp;         给定一个高精数,将这个高精数分解成若干个不大于16的因数的幂的积,求方案数;         也就是把s分解为:a1^K1 * a2^k2 * a3^k3...
  • cjoilmd
  • cjoilmd
  • 2011年11月01日 21:00
  • 737
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【BZOJ3612】[Heoi2014]平衡【计数DP】【整数拆分】
举报原因:
原因补充:

(最多只允许输入30个字)