【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
  • 1534

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

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

BZOJ 3610 Heoi2014 林中路径 矩阵乘法

题目大意:给定一张有向图,多次询问从S到T经过不超过K条边的所有路径的长度的平方和 首先这题一点也不麻烦 现有一带权整数集合S 我们令一个矩阵F_S表示从第i个点到第j个点,经过k条边(k∈S...
  • PoPoQQQ
  • PoPoQQQ
  • 2015年03月03日 12:03
  • 1732

【BZOJ 3614】 [Heoi2014]逻辑翻译|乱搞|辣鸡题目|不要入坑

po姐题解 《论一道题究竟如何出才能同时卡时间卡内存卡精度卡输入卡输出卡评测》 辣鸡题目 颓我精神 耗我时间!!! 把每个值带入假想的式子中 就变成啦 解方程 然后 然后 然后 然后 尼玛 输出这...
  • sxb_201
  • sxb_201
  • 2016年03月24日 10:42
  • 670

hdu3709(求区间内平衡数的个数)数位dp

题意:题中平衡数的定义: 以一个位置作为平衡轴,然后左右其他数字本身大小作为重量,到平衡轴的距离作为全职,实现左右平衡(即杠杆原理平衡)。然后为区间[x,y]内平衡数的个数。 (0 ≤ x ≤ y ≤...
  • xiefubao
  • xiefubao
  • 2014年05月14日 17:38
  • 626

【BZOJ 3613】 [Heoi2014]南园满地堆轻絮

二分+判断~
  • Regina8023
  • Regina8023
  • 2015年05月07日 08:08
  • 1061

bzoj 3609: [Heoi2014]人人尽说江南好

对于必胜方,游戏的最优策略是每次找最大的两个可以合并的数合并,但是如果出现(m-1)  2 1 1 ……的情况合并 m-1 和 2,这样无论必败方如何操作,这次游戏的总操作次数是一定的,因为这样的终局...
  • heheda_is_an_OIer
  • heheda_is_an_OIer
  • 2016年04月29日 08:34
  • 405

数据结构之平衡二叉树的平衡因子BF 的计算

在书上看了平衡二叉树的代码后,发现前人的智慧真是无限。但是因为一次性给出的最完美的代码让人有时候看不太懂... 后来经过仔细推敲,才慢慢发现了其中的奥秘。一开始并不知道关于平衡二叉树的平衡因子BF是怎...
  • followMyInclinations
  • followMyInclinations
  • 2015年12月29日 14:23
  • 5441

【数位DP】专题

所谓数位DP就是基于考虑数字的每一位来转移的DP。     例如求比456小的数,可以这么考虑,         4          5               6           4   ...
  • u013008291
  • u013008291
  • 2015年06月11日 23:11
  • 1270

数据结构实验之查找二:平衡二叉树

创建平衡二叉树,我们采用依次插入节点的方式进行。而平衡二叉树上插入节点采用递归的方式进行。递归算法如下: (1)      若该树为一空树,那么插入一个数据元素为e的新节点作为平衡二叉树的根节点,树...
  • guoqingshuang
  • guoqingshuang
  • 2015年12月05日 22:50
  • 1890
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【BZOJ3612】[Heoi2014]平衡【计数DP】【整数拆分】
举报原因:
原因补充:

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