dp小总结
写在前面
Just some easy problem solving with dynamic programming.
(Given me a dynamic programming table, I can tell you a new world.)
juruo眼中的神仙dp,(测试博客园的blog最多允许多长系列)
lv1 codeforces 724D
日常口胡:傻子也知道,答案最多sqrt(n)个,切了.
正常思路:性质1:答案最多sqrt(n)个:1.1<=k<=sqrt(n) 不同答案最多sqrt(n)个 2.k>sqrt(n) ans<=n/k<=sqrt(n) 最多sqrt(n)个.
性质2:满足单调性(不难从k的方案中构造出答案相同的k-1的方案),
于是二分/整体二分边界,O(nsqrt(n)logn)
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define N 1005
#define M 15
int n,d,mod,dp[N][M][N],inv[N];
int pw(int a,int b){int r=;for(;b;b>>=,a=1ll*a*a%mod)if(b&)r=1ll*r*a%mod;return r;}
int main()
{
scanf("%d%d%d",&n,&d,&mod);
if(n<=){puts("");return ;}
for(int i=;i<n;i++)inv[i]=pw(i,mod-);
dp[][][]=dp[][d-][]=;
for(int i=;i<=n;i++)for(int j=;j<=d;j++)for(int k=;k<i;k++)
{
dp[i][j][k]=dp[i][j][k-];
int r=dp[k][d-][k-],c=;
for(int t=;t*k<i&&t<=j;t++,r++)
{
c=1ll*c*r%mod*inv[t]%mod;
dp[i][j][k]=(dp[i][j][k]+1ll*dp[i-t*k][j-t][min(i-t*k-,k-)]*c)%mod;
}
}
int ans=dp[n][d][(n+)/-];
if(n%==)ans=(ans+1ll*dp[n/][d-][n/-]*(dp[n/][d-][n/-]+)/)%mod;
printf("%d\n",ans);
return ;
}
dp小总结的更多相关文章
- hdu 4540 威威猫系列故事——打地鼠 dp小水题
威威猫系列故事——打地鼠 Time Limit: 300/100 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total ...
- DP小小结
入门题 : [Luogu1441]砝码称重 , [NOIP2015]子串 [AHOI2009]中国象棋 , 详见代码 [HNOI2007]梦幻岛宝珠 , 详见代码 [NOIP2012]开车旅行 , 没 ...
- DP小题集
P2736 "破锣摇滚"乐队 Raucous Rockers 你刚刚继承了流行的"破锣摇滚"乐队录制的尚未发表的N(1 <= N <= 20)首歌的 ...
- 洛谷 1373 dp 小a和uim之大逃离 良心题解
洛谷 1373 dp 这题还不算太难,,当初看的时候不是很理解题意,以为他们会选择两条不同的路径,导致整体思路混乱 传送门 其实理解题意和思路之后还是敲了不短的时间,一部分身体原因再加上中午休息不太好 ...
- 状压DP小拼盘
有的DP题,某一部分的状态只有两种,选或不选. 开数组记录,代价太大,转移不方便. 状态压缩意为,用 “0/1“ 表示 “选/不选“ . 把状态表示为二进制整数. There are 10 kinds ...
- Atcoder Grand Contest 020 F - Arcs on a Circle(DP+小技巧)
Atcoder 题面传送门 & 洛谷题面传送门 一道难度 unavailable 的 AGC F 哦 首先此题最棘手的地方显然在于此题的坐标可以为任意实数,无法放入 DP 的状态,也无法直接计 ...
- DP小乐乐化妆品
Hrbust1814 http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1814 #in ...
- 数位dp小练
最近刷题的同时还得填填坑,说来你们也不信,我还不会数位dp. 照例推几篇博客: 数位DP讲解 数位dp 的简单入门 这两篇博客讲的都很好,不过代码推荐记搜的形式,不仅易于理解,还短. 数位dp的式子一 ...
- DP小合集
1.Uva1625颜色的长度 dp[i][j]表示前一个串选到第i个 后一个串选到第j个 的最小价值 记一下还有多少个没有结束即dp2 记一下每个数开始和结束的位置 #include<cstdi ...
随机推荐
- ActiveQt框架 禁止弹出ActiveX控件交互提示
重点重写QAxBindable的createAggregate() 参考Qt例子: qtactiveqt\activeqt\opengl\glbox.cpp
- CentOS7 安装Python3,开发SocketIO 客户端
CentOS7安装Python3,开发SocketIO 客户端 参考:https://blog.csdn.net/lovefengruoqing/article/details/79284573 步骤 ...
- pycharm 2018.1 激活
pycharm 2018.1 License server 填入 https://jetlicense.nss.im/ 激活没有问题 测试时间 2018.4.18
- js实现十分钟内在页面无任何操作,页面跳转至登陆页
// 如果10分钟没有操作,退出到登录页 var timer; function startTimer(){ clearTimeout(timer); timer=setTimeout(functio ...
- cc攻击和ddos攻击
DoS攻击.CC攻击的攻击方式和防御方法 DDoS介绍 DDoS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”,那么什么又是拒绝服务(Denial of ...
- Nginx配置跨域请求 CORS
当出现403跨域错误的时候 No 'Access-Control-Allow-Origin' header is present on the requested resource,需要给Nginx服 ...
- artTemplate的使用案列
(2) https://github.com/aui/art-template/wiki/syntax:simple
- react 中的绑定事件
handleOpen = (e)=> { this.setState({ open: true }) } <Button color='primary' onClick={this.han ...
- python文档-基本API命令翻译及使用方法!
1.使用tkinter.Tk() 生成主窗口(window=tkinter.Tk()): window.title('标题名') 修改框体的名字,也可在创建时使用className参数 ...
- 双系统Windows时间不同步的解决办法
步骤:打开C盘>Windows>System32,找到cmd.exe,右键以管理员的身份运行. Reg add HKLM\SYSTEM\CurrentControlSet\Control\ ...