两道不错的递推dp
hdoj-4055
- #include <cstdio>
- #include <cstring>
- #include <iostream>
- #include <algorithm>
- using namespace std;
- const int mod=;
- const int N=+;
- long long sum[N][N];
- char str[N];
- int main ()
- {
- // 含义 dp[i][j] 前i个字母 以数字j结尾的排列方式 比如("II")-dp[2][3] 表示 “123”
- //递推公式 如果str="I" dp[i][j]=dp[i-1][1]+dp[i-1][2]+...+dp[i-1][j-1];
- //str="D" dp[i][j]=dp[i-1][j]+dp[i][j+1]+...+dp[i][i+1]
- // 解释比如前i-1个排列 {3 1 4 2 5} 可以加一个 3 前面所有比3大的数加1(这样不会改变前面的增长顺序)
- // 变成{4,1,5,2,6,3}
- //sum[i][j]=dp[i][1]+dp[i][2]+...dp[i][j];
- while (~scanf (" %s",str+)) {
- int n=strlen(str+);
- sum[][]=;
- for (int i=;i<=n;i++) {
- for (int j=;j<=i+;j++) {//i+1 因为i个字母表示i+1个数字
- sum[i][j]=sum[i][j-];
- if (str[i]!='D')
- sum[i][j]+=sum[i-][j-];
- if (str[i]!='I')
- sum[i][j]+=sum[i-][i]-sum[i-][j-]+mod;
- sum[i][j]%=mod;
- }
- }
- printf ("%lld\n",sum[n][n+]);
- }
- return ;
- }
hdoj-4489
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- using namespace std;
- typedef long long LL;
- LL dp[][];
- LL f (int n,int m) { // f: C(n,m)
- LL ans=;
- if (m==) return ;
- for (int i=n-m+;i<=n;i++)
- ans*=i;
- for (int i=;i<=m;i++)
- ans/=i;
- return ans;
- }
- int main ()
- {
- dp[][]=dp[][]=;
- dp[][]=dp[][]=;// 在前i个数排好基础下排第j个
- // dp[i][0] 以下降方式结尾 dp[i][1]以上升方式开始
- // 第i个数排在下降方式结尾子序列和以上升方式开始子序列之间
- for (int i=;i<=;i++) {
- LL tmp=;
- for (int j=;j<i;j++)
- tmp+=dp[j][]*dp[i--j][]*f(i-,j);
- dp[i][]=dp[i][]=tmp/;
- }
- int T;
- scanf ("%d",&T);
- while (T--) {
- int x,n;
- scanf ("%d %d",&x,&n);
- if (n==) printf ("%d 1\n",x);// 注意这个特殊情况
- else printf ("%d %lld\n",x,*dp[n][]);
- }
- return ;
- }
两道不错的递推dp的更多相关文章
- 递推DP URAL 1017 Staircases
题目传送门 /* 题意:给n块砖头,问能组成多少个楼梯,楼梯至少两层,且每层至少一块砖头,层与层之间数目不能相等! 递推DP:dp[i][j] 表示总共i块砖头,最后一列的砖头数是j块的方案数 状态转 ...
- 递推DP UVA 607 Scheduling Lectures
题目传送门 题意:教授给学生上课,有n个主题,每个主题有ti时间,上课有两个限制:1. 每个主题只能在一节课内讲完,不能分开在多节课:2. 必须按主题顺序讲,不能打乱.一节课L时间,如果提前下课了,按 ...
- poj 2229 【完全背包dp】【递推dp】
poj 2229 Sumsets Time Limit: 2000MS Memory Limit: 200000K Total Submissions: 21281 Accepted: 828 ...
- Code Force 429B Working out【递推dp】
Summer is coming! It's time for Iahub and Iahubina to work out, as they both want to look hot at the ...
- 递推DP URAL 1167 Bicolored Horses
题目传送门 题意:k个马棚,n条马,黑马1, 白马0,每个马棚unhappy指数:黑马数*白马数,问最小的unhappy值是多少分析:dp[i][j] 表示第i个马棚放j只马的最小unhappy值,状 ...
- 递推DP URAL 1260 Nudnik Photographer
题目传送门 /* 递推DP: dp[i] 表示放i的方案数,最后累加前n-2的数字的方案数 */ #include <cstdio> #include <algorithm> ...
- 递推DP URAL 1353 Milliard Vasya's Function
题目传送门 /* 题意:1~1e9的数字里,各个位数数字相加和为s的个数 递推DP:dp[i][j] 表示i位数字,当前数字和为j的个数 状态转移方程:dp[i][j] += dp[i-1][j-k] ...
- 递推DP URAL 1119 Metro
题目传送门 /* 题意:已知起点(1,1),终点(n,m):从一个点水平或垂直走到相邻的点距离+1,还有k个抄近道的对角线+sqrt (2.0): 递推DP:仿照JayYe,处理的很巧妙,学习:) 好 ...
- 递推DP 赛码 1005 Game
题目传送门 /* 递推DP:官方题解 令Fi,j代表剩下i个人时,若BrotherK的位置是1,那么位置为j的人是否可能获胜 转移的时候可以枚举当前轮指定的数是什么,那么就可以计算出当前位置j的人在剩 ...
随机推荐
- burpsuite拦截https数据包(Firefox)
1.配置浏览器对http/https都使用burpsuite代理 http和https是分开的,对http使用了代理并不代表对https也使用了代理,要配置浏览器让其对https也使用同样的代理. 当 ...
- SpringMVC中JSP页面显示为源码
@RequestMapping(value = "login") public ModelAndView login(ModelAndView mav) throws Except ...
- get url img
selenium 1● 了解selenium 这个是做 web页面测试,模拟用户测试 =====> pip install selenium 安装 2● django 用于接 ...
- Linux 控制CPU使用率
曾经看过<编程之美>上提到说使 CPU的使用率固定在百分之多少.然后这次刚好要用到这个东西,下面是一个简单的实现.基于多线程: Linux 版本: #include <iostrea ...
- 逆袭之旅DAY17.东软实训.Oracle.存储过程
2018-07-13 09:08:36
- C++解析六-继承
面向对象程序设计中最重要的一个概念是继承.继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易.这样做,也达到了重用代码功能和提高执行时间的效果.当创建一个类时,您不需要重新编 ...
- 服务消费和负载(Feign)
Spring Cloud Feign Spring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端.它使得编写Web服务客户端变得更加简单.我们只需要通过创建接口 ...
- 深入理解java虚拟机---虚拟机工具VisualVM(十九)
性能分析神器VisualVM 9602 VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成 ...
- 深入理解java虚拟机---lanmbda表达式简介(三)
1.lanmbda表达式使用 lanbmda表达式的作用: A: 取代内部类 B;增加对集合的操作,从而增强其性能
- SQL-1 选取表中某一属性最大值的所有信息 查找最晚入职员工的所有信息
题目描述 查找最晚入职员工的所有信息CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`fi ...