Adjacent Bit Counts(动态规划 三维的)
/**
题意:
给出一个01串 按照题目要求可以求出Fun(X)的值
比如: 111 Fun(111)的值是2;
输入:
t (t组测试数据)
n k (有n位01串 Fun()的值为K)
输出:有多少种组合 使得这n位01串的Fun()值为k;
分析:
动态规划
转移方程 dp[i][j][k] i代表01串的长度 j代表Fun()的值(或者说是权重) k代表最后一位是0还是1
在已知的01串后面加一个0 添加前后的权值不会发生变化 即dp[i][j][0]=dp[i-1][j][0]+dp[i-1][j][1];
在已知的01串后面加一个1 如果没有添加之前的最后一位是1的话 添加之后的权值是j 那么添加之前的值是j-1
如果没有添加之前的最后一位是0的话 添加之后的权值是j 那么添加之前的值仍是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-1][j-1][1];
初始化很重要
*/
include
include
include
using namespace std;
int dp[105][105][2];
int main()
{
dp[1][0][0]=1;
dp[1][0][1]=1;
for(int i=2; i<=105; i++)
{
dp[i][0][0]=dp[i-1][0][0]+dp[i-1][0][1];
dp[i][0][1]=dp[i-1][0][0];
}
for(int i=2; i<=105; i++)
for(int j=1; j<i; 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-1][j-1][1];
}
int t;
scanf("%d",&t);
while(t--)
{
int n,k;
scanf("%d%d",&n,&k);
printf("%d\n",dp[n][k][1]+dp[n][k][0]);
}
return 0;
}
Adjacent Bit Counts(动态规划 三维的)的更多相关文章
- Adjacent Bit Counts(01组合数)
Adjacent Bit Counts 4557 Adjacent Bit CountsFor a string of n bits x 1 , x 2 , x 3 ,..., x n , the a ...
- BNU4286——Adjacent Bit Counts——————【dp】
Adjacent Bit Counts Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Jav ...
- POJ 3786 dp-递推 Adjacent Bit Counts *
Adjacent Bit Counts Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 599 Accepted: 502 ...
- nyoj 715 Adjacent Bit Counts
描述 For a string of n bits x1, x2, x3, …, xn, the adjacent bit count of the string is given by ...
- Adjacent Bit Counts(uvalive)
For a string of n bits x1, x2, x3,…, xn, the adjacent bit count of the string (AdjBC(x)) is given by ...
- POJ 3786 Adjacent Bit Counts (DP)
点我看题目 题意 :给你一串由1和0组成的长度为n的数串a1,a2,a3,a4.....an,定义一个操作为AdjBC(a) = a1*a2+a2*a3+a3*a4+....+an-1*an.输入两个 ...
- Week__8
Monday_ 今晚补了扔鸡蛋问题的动态规划问题,补了这道题,感觉视野又开阔了些. 写了一道思维题cf 1066A 数字逻辑后半节听得打脑壳,现在很晚了,明天再看叭. Tuesday_ 今晚补了 ad ...
- 河南省第六届ACM程序设计大赛
C: 最舒适的路线 (并查集) #include<cstdio> #include<cstring> #include<iostream> #include< ...
- google的面试题(三维动态规划的范例)——(87)Scramble String
转:http://www.cnblogs.com/easonliu/p/3696135.html 分析:这个问题是google的面试题.由于一个字符串有很多种二叉表示法,貌似很难判断两个字符串是否可以 ...
随机推荐
- IEqualityComparer 去重
1.去除list里某重复字段值的数据(相当于group by) public class CorrController { //方法 public void DoGet() { List<tes ...
- Android Cursor类的概念和用法
http://www.2cto.com/kf/201109/103163.html 关于 Cursor 在你理解和使用 Android Cursor 的时候你必须先知道关于 Cursor 的几件事情: ...
- Android开发----权限大全
一.添加权限格式: 示例: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STOR ...
- Android开发app如何设定应用图标下的应用名称为汉字以及自定义图标
一.应用名称为汉字 二.自定义图标
- IIS 64位上發佈32位asp.net設置
錯誤:無法載入檔案或組件 'Maticsoft.Web' 或其相依性的其中之一. 試圖載入格式錯誤的程式. 解決:新增應用程序池——高級設置——啟用32位應用程式——True
- >/dev/null 2>&1 这句话的含义
1表示标准输出,2表示标准错误输出 2>&1表示将标准错误输出重定向到标准输出,这样,程序或者命令的正常输出和错误输出就可以在标准输出输出(也就是一起输出). 一般来讲标准输出和标准错误 ...
- 【转】 wpf系列-入门
转自:http://www.cnblogs.com/huangxincheng/category/388852.html 8天入门wpf—— 第八天 最后的补充 摘要: 从这一篇往前看,其实wpf ...
- UILongPressGestureRecognizer的selector多次调用解决方法
当你使用longPress gesture recognizer 时,你可能会发现调用了多次. UILongPressGestureRecognizer *longPress = [[UILongPr ...
- bootstrap日期时间插件datetimepicker
<!DOCTYPE HTML> 02 <html> 03 <head> 04 <link href="http://netdna.boo ...
- jQuery在on绑定事件时,使用Function.prototype.bind上下文,只能用off(event)解绑函数,否则可能导致事件叠加
因为一个bind函数,未解绑成功导致事件叠加,搞了一下午. keyup事件绑定: this.$document.on('keyup', this.keyUp.bind(this)); 原解绑函数: t ...