[HEOI2014]平衡
2024-10-15 19:33:42
转化为求选择k个数,和为(n+1)*k的方案数
保证,每个数[1,2*n+1]且最多选择一次。
限制k个很小,所以用整数划分的第二种方法
f[i][j],用了i个,和为j
整体+1,或者取一个1再整体加1(为了保证只选择一次)
j>=2*n+2时,整体+1,所以必然存在一个选择了2*n+2的方案,减掉f[i-1][j-(2*n+2)]即可
#include<bits/stdc++.h>
#define reg register int
#define il inline
#define fi first
#define se second
#define mk(a,b) make_pair(a,b)
#define numb (ch^'0')
using namespace std;
typedef long long ll;
template<class T>il void rd(T &x){
char ch;x=;bool fl=false;
while(!isdigit(ch=getchar()))(ch=='-')&&(fl=true);
for(x=numb;isdigit(ch=getchar());x=x*+numb);
(fl==true)&&(x=-x);
}
template<class T>il void output(T x){if(x/)output(x/);putchar(x%+'');}
template<class T>il void ot(T x){if(x<) putchar('-'),x=-x;output(x);putchar(' ');}
template<class T>il void prt(T a[],int st,int nd){for(reg i=st;i<=nd;++i) ot(a[i]);putchar('\n');} namespace Miracle{
int f[][(+)*+];
int n,k,p;
int main(){
int t;
rd(t);
while(t--){
rd(n);rd(k);rd(p);
memset(f,,sizeof f);
f[][]=;
for(reg j=;j<=(n+)*k;++j){
for(reg i=;i<=min(k,j);++i){
f[i][j]=(f[i][j-i]+f[i-][j-i]-(j>=(n+)*?f[i-][j-(n+)*]:)+p)%p;
}
}
printf("%d\n",f[k][(n+)*k]);
}
return ;
} }
signed main(){
Miracle::main();
return ;
} /*
Author: *Miracle*
Date: 2019/3/20 16:26:21
*/
最新文章
- Sql 常见问题
- jquery.cookie.js 操作cookie实现记住密码功能的实现代码
- LB 简单比较 – F5、NetScaler、LVS、Nginx、Haproxy
- jq 解析josn字符串
- Spring Boot工程发布到Docker
- 黑马程序员——OC语言 三大特性之继承
- iOS开发之--UITextField属性
- MySQL 5.7 SYS系统SCHEMA
- CentOs6.5中安装和配置vsftp简明教程
- Android--获取标题栏,状态栏,屏幕高度
- JAVA HttpsURLConnection 忽略对SSL valid 的验证
- poj3468 线段树+lazy标记
- 像web一样使用python
- hdu 3555 Bomb(不要49,数位DP)
- riot.js教程【四】Mixins、HTML内嵌表达式
- Week02-Java基本语法与类库
- 【H5-移动端开发】外部唤起本机APP的解决方法
- java基础中this,super
- vue父子组件之间互相获取data值&;调用方法(非props)
- jQuery文档操作
热门文章
- spring初始化bean时执行某些方法完成特定的初始化操作
- java学习之—递归实现二分查找法
- python数学第七天【期望的性质】
- idea ->; Error during artifact deployment. See server log for details.
- oracle ceil函数
- 1.docker 数据卷的备份和恢复(非大数据量)
- ubuntu6.04安装
- .net core 2.0 MVC区域
- Linux下tomcat中多项目配置druid报错的问题
- Linux的Shell练习--个人笔记