【nyoj715】Adjacent Bit Counts
来源:互联网 发布:剑灵秦夕妍捏脸数据 编辑:程序博客网 时间:2024/04/29 05:16
Description
For a string of n bits x1, x2, x3, …, xn, the adjacent bit count of the string is given by fun(x) = x1*x2 + x2*x3 + x3*x 4 + … + xn-1*x n
which counts the number of times a 1 bit is adjacent to another 1 bit. For example:
Fun(011101101) = 3
Fun(111101101) = 4
Fun (010101010) = 0
Write a program which takes as input integers n and p and returns the number of bit strings x of n bits (out of 2ⁿ) that satisfy Fun(x) = p.
For example, for 5 bit strings, there are 6 ways of getting fun(x) = 2:
11100, 01110, 00111, 10111, 11101, 11011
Input
On the first line of the input is a single positive integer k, telling the number of test cases to follow. 1 ≤ k ≤ 10 Each case is a single line that contains a decimal integer giving the number (n) of bits in the bit strings, followed by a single space, followed by a decimal integer (p) giving the desired adjacent bit count. 1 ≤ n , p ≤ 100
Output
For each test case, output a line with the number of n-bit strings with adjacent bit count equal to p.
Sample Input
Sample Output
题意:给n,p,代表01串的长度是n,运算后是p,运算规则为x1*x2 + x2*x3 + x3*x4 + … + xn-1*xn,求这样的01串共有几个。
思路:dp[i][j][k]代表01串长度为i,运算结果是j,最后一位数是k。所以最终答案是dp[n][p][0]+dp[n][p][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-1][j-1][1].根据n p范围,所以有:
i:2~n
j:1~p
循环想好后注意初始化,当i=1时,考虑到dp[1][1][0]=0; dp[1][1][1]=0; dp[1][0][1]=1;
但是还存在一组特殊情况:j-1可能等于0,dp[1][0][1]=1,dp[2][0][1]=1,dp[3][0][1]=2,dp[4][0][1]=3,dp[5][0][1]=5........所以dp[i][0][1]=dp[i-1][0][1]+dp[i-2][0][1]。
代码:
#include<bits/stdc++.h>using namespace std;int dp[105][105][2];int main(){ int n,m,i,j,t; dp[1][1][0]=0; dp[1][1][1]=0; dp[1][0][1]=1; dp[2][0][1]=1; for(i=3; i<=100; i++) dp[i][0][1]=dp[i-1][0][1]+dp[i-2][0][1]; for(i=2; i<=100; i++) for(j=1; j<i; j++) { dp[i][j][0]=dp[i-1][j][1]+dp[i-1][j][0]; dp[i][j][1]=dp[i-1][j][0]+dp[i-1][j-1][1]; } cin>>t; while(t--) { scanf("%d%d",&n,&m); printf("%d\n",dp[n][m][0]+dp[n][m][1]); }}
- 【nyoj715】Adjacent Bit Counts
- Adjacent Bit Counts(P3786)
- Adjacent Bit Counts
- Adjacent Bit Counts
- nyoj 715 Adjacent Bit Counts
- NYOJ 715 Adjacent Bit Counts
- SPOJ 5295 Adjacent Bit Counts
- Adjacent Bit Counts (DP)
- NYOJ 715 Adjacent Bit Counts
- HNACM(六)--第七题 Adjacent Bit Counts
- Uest 1421 Adjacent Bit Counts dp
- nyoj 715 Adjacent Bit Counts --DP
- hdu 3284 Adjacent Bit Counts (dp)
- HDU ACM 3284 Adjacent Bit Counts
- hdu 3284 Adjacent Bit Counts【dp】
- NYOJ 题目715 Adjacent Bit Counts
- HDU 3284 Adjacent Bit Counts(简单DP)
- 南阳理工OJ_题目715 Adjacent Bit Counts
- Python爬虫-爬取豆瓣读书
- 北京网络赛
- IntelliJ IDEA:获取包路径下的xml文件,Could not find resource com/**/*.xml
- 2. Struts2框架概述
- mySQL5.6 新特性 快速预热Buffer_Pool缓冲池
- 【nyoj715】Adjacent Bit Counts
- [算法分析与设计] leetcode 每周一题: 053. Maximum Subarray
- C#回顾学习笔记三十四:接口
- 删除链表中值为x的元素结点(java语言)
- linux下压缩与解压(zip、unzip、tar)详解
- 三维数组的地址计算问题
- ICPC2017网络赛(北京)Territorial Dispute(凸包分割)
- JAVA 多线程
- 数据库连接池的工作机制