第五周训练赛1--C题
来源:互联网 发布:python双击闪退 编辑:程序博客网 时间:2024/06/05 21:04
虽然已经被提示是动态规划,但找了半天仍然不能确定状态和转移方程。
后面看了题解后,才明白该怎么做的。
首先选取状态为dp(i,j,k)表示前i个数中和为j末尾状态为k(k可取0,1)的方案数目,
然后就可以写出状态方程了:
dp[i][j][0]=dp[i-1][j][0]+dp[i-1][j][1];
dp[i][j][1]=dp[i-1][j][0]
dp[i][j][1]+=dp[i-1][j-1][1]
然后就可以写代码了。
代码如下:
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int main(){ int t,n,k,i,j,cnt; int dp[110][110][2]; cin>>t; while(t--) { cin>>cnt>>n>>k; for(i=0;i<=k;i++) dp[1][i][0]=dp[1][i][1]=0; dp[1][0][0]=dp[1][0][1]=1; for(i=2;i<=n;i++) for(j=0;j<=k;j++) { dp[i][j][0]=dp[i-1][j][0]+dp[i-1][j][1]; dp[i][j][1]=dp[i-1][j][0]; dp[i][j][1]+=dp[i-1][j-1][1]; } int ans=dp[n][k][0]+dp[n][k][1]; cout<<cnt<<" "<<ans<<endl; } return 0;}
0 0
- 第五周训练赛1--C题
- 第五周训练赛1--E题
- 第五周训练赛2--B题
- 第五周项目训练1 三角形1
- 第五周项目训练1 三角形2
- 第五周训练1 三角形类5
- 第五周第二次训练 D题 树状数组
- 第五周项目训练1 三角形类3
- 第五周项目训练1 三角形类4
- 暑假训练-个人赛第五场
- 第五周项目训练3 时间类
- 训练第五周之Dijkstra算法
- 训练第五周之最小生成树
- 第五周训练总结(一)
- 第九周训练赛——C
- cccc第五次训练
- 2014年第五届蓝桥杯C/C++B组真题训练(一,未完待续,2017.3.5)
- 2013 - ECJTU 暑期训练赛第五场-problem-A
- wxPython学习笔记(四)
- linux驱动学习笔记(linux驱动头文件说明)
- 一个简单的测试程序健壮性的c程序
- PKU-#2387 Til the Cows Come Home(Dijkstra+vector+优先队列)
- Python正则表达式指南
- 第五周训练赛1--C题
- 4.JavaWeb基础 page指令和Tomcat连接数据库
- 剑指Offer30最小的k个数
- Mysql数据库修改大小写敏感性问题
- 成为优秀程序员的十个有效方法
- 嵌入式linux开发
- [JZOJ 1281]旅行
- poj 3070 Fibonacci (矩阵快速幂求斐波那契数列的第n项)
- Activity 视图相关类 4.4