bzoj3612 平衡 (dp)
设f[i][j]为把i拆成j个不重复的、大于0小于等于N的数的方案数
我们考虑一个方案是怎么来的:(初始状态是f[0][0]=1)
如果这个方案里有1,那它是先把原来的状态的每个数加1、然后再增加一个1
如果这个方案没有1,那它是把原来的状态直接每个数加1得来的
就对应了方程$f[i][j]=f[i-j][j]+f[i-j][j-1]$
但这还不够,还没有限定这个数不能大于N
由于我们每次加的都是1,所以只需要把加出来了N+1的情况减掉就可以
那这个f[i][j]的包含N+1的状态,一定能由f[i-N-1][j-1],就是相当于直接把这个N+1去掉转移过来,把它减下去就可以了
然后枚举左右两边去的个数、再枚举力矩和,统计答案。注意是可以把正中间那个位置去掉的
#include<bits/stdc++.h>
#define pa pair<int,int>
#define CLR(a,x) memset(a,x,sizeof(a))
using namespace std;
typedef long long ll;
const int maxn=,maxk=; inline ll rd(){
ll x=;char c=getchar();int neg=;
while(c<''||c>''){if(c=='-') neg=-;c=getchar();}
while(c>=''&&c<='') x=x*+c-'',c=getchar();
return x*neg;
} int N,K,P;
int f[maxn*maxk][maxk]; inline void getf(){
CLR(f,);
f[][]=;
for(int i=;i<=N*(K-);i++){
for(int j=;j<K&&i-j>=;j++){
f[i][j]=f[i-j][j]+f[i-j][j-]-(i-N->=?f[i-N-][j-]:);
f[i][j]%=P;
// printf("%d %d %d\n",i,j,f[i][j]);
}
}
} int main(){
//freopen("","r",stdin);
int i,j,k;
for(int t=rd();t;t--){
N=rd(),K=rd(),P=rd();
int ans=;
if(K==){printf("1\n");continue;}
getf();
for(i=;i<K;i++){
for(j=i;j<=N*i;j++){
ans=(ans+1ll*f[j][i]*f[j][K-i]+1ll*f[j][i]*f[j][K-i-])%P;
// printf("!%d %d %d\n",i,j,ans);
}
}
printf("%d\n",ans);
}
return ;
}
bzoj3612 平衡 (dp)的更多相关文章
- BZOJ 3612: [Heoi2014]平衡( dp )
枚举Fl, 就变成一个整数划分的问题了...f(i,j) = f(i-j,j-1)+f(i-j,j)-f(i-N-1,j-1)递推.f(i,j)表示数i由j个不同的数组成,且最大不超过N的方案数 -- ...
- 洛谷P4104 [HEOI2014]平衡(dp 组合数学)
题意 题目链接 Sol 可以把题目转化为从\([1, 2n + 1]\)中选\(k\)个数,使其和为\((n+1)k\). 再转化一下:把\((n+1)k\)划分为\(k\)个数,满足每个数在范围在\ ...
- [USACO12NOV]同时平衡线Concurrently Balanced Strings DP map 思维
题面 [USACO12NOV]同时平衡线Concurrently Balanced Strings 题解 考虑DP. \(f[i]\)表示以\(i\)为左端点的合法区间个数.令\(pos[i]\)表示 ...
- hdu 3709 Balanced Number(平衡数)--数位dp
Balanced Number Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) ...
- HDU 3709 Balanced Number 求区间内的满足是否平衡的数量 (数位dp)
平衡数的定义是指,以某位作为支点,此位的左面(数字 * 距离)之和 与右边相等,距离是指某位到支点的距离; 题意:求区间内满足平衡数的数量 : 分析:很好这又是常见的数位dp , 不过不同的是我们这次 ...
- 【递推】Bzoj3612[Heoi2014]平衡
Description 下课了,露露.花花和萱萱在课桌上用正三棱柱教具和尺子摆起了一个“跷跷板”. 这个“跷跷板”的结构是这样的:底部是一个侧面平行于地平面的正三棱柱教具, 上面 摆着一个尺 ...
- bzoj 3612 [Heoi2014]平衡——整数划分(dp)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3612 因为力矩的缘故,变成了整数划分. 学习到了整数划分.就是那个图一样的套路.https: ...
- BZOJ3612 [Heoi2014]平衡 整数划分
[Heoi2014]平衡 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 348 Solved: 273[Submit][Status][Discus ...
- SPOJ BALNUM Balanced Numbers 平衡数(数位DP,状压)
题意: 平衡树定义为“一个整数的某个数位若是奇数,则该奇数必定出现偶数次:偶数位则必须出现奇数次”,比如 222,数位为偶数2,共出现3次,是奇数次,所以合法.给一个区间[L,R],问有多少个平衡数? ...
随机推荐
- Scala--文件和正则表达式
一.读取行 import scala.io.Source val source = Source.fromFile("D:\\documents\\Scala\\MyDemo\\t.txt& ...
- 20155302《网络对抗》Exp6 信息收集与漏洞扫描
20155302<网络对抗>Exp6 信息收集与漏洞扫描 实验内容 (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口扫描.OS及服务版本探测 ...
- 在window下安装第二个mysql
win7电脑上已经通过安装的方式安装过一个5.5版本的mysql,现在需要再安装一个5.6版本的mysql,因此采用了免安装版的mysql 1.下载 直接去官网下载,社区版 ...
- 关于Trie的一些算法
最近学习了一下关于Trie的一些姿势,感觉很实用. 终于不用每次看到字符串判重等操作就只想到hash了 关于Trie的定义,来自百度百科 在计算机科学中,Trie,又称前缀树或字典树,是一种有序树状的 ...
- 与Web交互可用的图片Base64编码
#ifndef ___BASE64_H___ #define ___BASE64_H___ #include <string> using namespace std; class CBa ...
- 科普贴 | 以太坊网络中的Gas Limit 和 Gas Price 是什么概念?
接触以太坊的同学都听过 Gas/ Gas Price/ Gas Limit,那么这些词汇究竟是什么意思? 还有,为什么有时候你的ETH转账会很慢?如何提高ETH转账速度? Ethereum平台 Vit ...
- [咸恩静][Love effect]
歌词来源:http://music.163.com/#/song?id=31877654 作曲 : Monster Factory/양승욱 [作曲 : Monster Factory/yang-seu ...
- eclipse实现热部署和热启动
不用每次修改一个class文件就要重启tomcat这么麻烦: http://blog.csdn.net/fuzhongyu2/article/details/52073050
- 毕业设计---jQuery动态生成的a标签的事件绑定
这几天在毕业设计的前端设计阶段,准备放弃使用jsp,完全通过html+ajax+SSH进行网站的编写,在前端的页面显示我准备使用jQuery来实现数据的动态绑定.但是遇到动态添加的a标签无法直接通过$ ...
- Mybatis:Eclipse引入dtd约束文件使得xml文件有提示
https://blog.csdn.net/lsx2017/article/details/82558135