下课了,露露、花花和萱萱在课桌上用正三棱柱教具和尺子摆起了一个“跷跷板”。

这个“跷跷板”的结构是这样的:底部是一个侧面平行于地平面的正三棱柱教具,上面 摆着一个尺子,尺子上摆着若干个相同的橡皮。尺子有 2n + 1 条等距的刻度线,第 n + 1 条 刻度线恰好在尺子的中心,且与正三棱柱的不在课桌上的棱完全重合。

露露发现这个“跷跷板”是不平衡的(尺子不平行于地平面)。于是,她又在尺子上放 了几个橡皮,并移动了一些橡皮的位置,使得尺子的 2n + 1 条刻度线上都恰有一块相同质 量的橡皮。“跷跷板”平衡了,露露感到很高兴。

花花觉得这样太没有意思,于是从尺子上随意拿走了 k 个橡皮。令她惊讶的事情发生了: 尺子依然保持着平衡! 萱萱是一个善于思考的孩子,她当然不对尺子依然保持平衡感到吃惊,因为这只是一个 偶然的事件罢了。令她感兴趣的是,花花有多少种拿走 k 个橡皮的方法,使得尺子依然保 持平衡?当然,为了简化问题,她不得不做一些牺牲——假设所有橡皮都是拥有相同质量的 质点。但即使是这样,她也没能计算出这个数目。放学后,她把这个问题交给了她的哥哥/ 姐姐——Hibarigasaki 学园学生会会长,也就是你。当然,由于这个问题的答案也许会过于 庞大,你只需要告诉她答案 mod p 的值。

Solution

非常好的一道题。

题目相当于在两边放k个数,使他们相等,我们可以跑一个整数划分数dp。

但是这道题有一个限制是每个数是n以内的。

所以我们要在枚举超过n时减掉不合法方案数,dp[i-(n+1)][j-1]就是不合法方案。

最后枚举一边放了多少个,算一下,注意讨论中间放的情况。

Code

#include<iostream>
#include<cstdio>
#define R register
using namespace std;
long long dp[150009][15],ans,n,k,p,t;
int main()
{scanf("%lld",&t);for(int o=1;o<=t;++o){scanf("%lld%lld%lld",&n,&k,&p);ans=0;dp[0][0]=1;for(R int i=1;i<=n*k;++i)for(R int j=1;j<=i&&j<=k;++j){dp[i][j]=(dp[i-j][j-1]+dp[i-j][j])%p;if(i>n)dp[i][j]=(dp[i][j]-dp[i-(n+1)][j-1]+p)%p;}for(R int j=0;j<=k;++j)for(R int i=0;i<=n*k;++i){ans=(ans+dp[i][j]*dp[i][k-j])%p;if(j<k)ans=(ans+dp[i][j]*dp[i][k-j-1])%p;}printf("%lld\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/ZH-comld/p/9823152.html

[HEOI2014]平衡(整数划分数)相关推荐

  1. 退役前的做题记录1.0

    退役前的做题记录1.0 租酥雨最近很懒qwq,具体表现在写题的时候不想发题解了. 但是想想这样也不太好,就决定发个一句话(半句话到几句话不等)题解上来. 2018-09.18-2018-09.28 [ ...

  2. [游记]SDOI2017 R2酱油记

    day-1 下午刚刚从APIO回来晚上就被叫去参加面试培训. 看到xiaoyimi大爷被裱来裱去-qwqwq xyx大爷全程笑场. 好像没什么用处-- 因为第二天要坐车修仙到很晚 Day0 上午zZZ ...

  3. NYOJ 整数划分(三) (划分数大集合)

    题意:虽然是中文题意但是还是想上一下题 题目描述 整数划分是一个经典的问题.请写一个程序,完成以下要求. 输入 每组输入是两个整数n和k.(1 <= n <= 50, 1 <= k ...

  4. 【swjtu】数据结构实验8_平衡二叉排序树

    实验内容及要求: 从键盘输入若干两两互不相同的非0整数,直到输入0时停止.将输入的所有非0整数按输入次序插入二叉排序树来构造平衡的二叉排序树.输出平衡的二叉排序树的先序和中序递归遍历次序:按中序递归遍 ...

  5. C语言接收一个整数划分成5的倍数,整数划分为连续整数;整数划分

    参考博客:http://www.cnblogs.com/nokiaguy/archive/2008/05/11/1192308.html 1.整数划分为连续整数: 如将15划分为连续整数之和: 15 ...

  6. 平衡查找树C语言程序,树4. Root of AVL Tree-平衡查找树AVL树的实现

    对于一棵普通的二叉查找树而言,在进行多次的插入或删除后,容易让树失去平衡,导致树的深度不是O(logN),而接近O(N),这样将大大减少对树的查找效率.一种解决办法就是要有一个称为平衡的附加的结构条件 ...

  7. 导致溢出_由整数类型溢出导致的英雄联盟峡谷惨案

    最近,英雄联盟迎来了 S11 赛季的版本大更新.作为一名从 S2 一路走过来的老玩家,我自然也是非常的关注.除了发生了巨变的装备系统之外,各种各样的 bug,也是在玩家之间炽手可热的话题.这其中,较为 ...

  8. 输入 n 个整数,输出其中最小的 k 个

    2019独角兽企业重金招聘Python工程师标准>>> /* 输入 n 个整数,输出其中最小的 k 个* TreeMap 和 TreeSet 是 Java Collection Fr ...

  9. hdu 5230(整数划分,dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5230 解题思路: 这是一个整数划分的模型: 将n划分为k个整数的划分数 设dp[i][j]为将i划分为 ...

最新文章

  1. NIPS2018 | 腾讯AI Lab入选20篇论文,含2篇Spotlight
  2. 专家认为自动驾驶汽车需要很多年的五个原因
  3. python3解析json数据_Python3高级教程
  4. mysql查询当天最新的一张表_mysql 查询当天、本周,本月,上一个月的数据
  5. Ubuntu 18.04 安装 MySQL 5.7【解决普通用户登录、密码修改、远程访问等问题】
  6. 电气论文:基于粒子群算法的梯级水火电力系统优化调度【有代码】
  7. PHP获取用户地址方法
  8. [BZOJ 2839]集合计数
  9. ASP.NET Core Web 支付功能接入 微信-扫码支付篇
  10. 快播王欣:区块链今天最重要的成果还只是理念布道
  11. php过滤句尾空格,php正则过滤各种标签,空格,换行符的实现方法
  12. SOT23-6封装随机数发生芯片,串行接口
  13. Proxy.newProxyInstance处引起 java.lang.ClassCastException 问题的解决方法
  14. jQuery学习笔记03
  15. 【项目实践】充电台灯电路拆解
  16. asp.net在前台web页面中使用Javascript调用RTX腾讯通的聊天窗口
  17. 用PS做一个简单的相机图标
  18. rsyslog+elk 网络设备日志收集及钉钉报警
  19. VR 、SR 轴矢冠三个切面的显示
  20. 怎样正确的维护使用电脑

热门文章

  1. 办公族的健康提醒脚本
  2. opencv_4.5.0/OpenCvSharp4.0 九点标定
  3. python中用来回溯异常的模块_为什么Python线缓存会影响回溯模块而不影响...
  4. 故障处理 软件 需求_如何根据GJB 102A开展软件安全性分析 —— 下篇
  5. C语言程序设计代码树,校门外的树 (C语言代码)
  6. windows 远程访问别人的linux下的ftp服务器,linux与windows之间使用ftp相互访问(CentOS提示ftp:command not found)...
  7. 家用电器用户行为分析与事件识别_用户行为分析埋点实时数仓实践
  8. 相机数据格式设置不对踩坑
  9. crowd counting_[Crowd_Counting]-PGCNet-ICCV2019
  10. js---PC端滑动进度条