poj 1037 A decorative fence dp+序列构造
来源:互联网 发布:淘宝所有宝贝链接地址 编辑:程序博客网 时间:2024/05/16 05:36
//poj 1037//sep9#include <iostream>using namespace std;typedef long long ll;ll dp[32][32][2];bool vis[32];int main(){memset(dp,0,sizeof(dp));dp[1][1][0]=dp[1][1][1]=1;for(int len=2;len<=20;++len)for(int i=1;i<=len;++i){for(int j=1;j<i;++j) dp[len][i][0]+=dp[len-1][j][1];for(int j=i;j<len;++j)//注意不是j=i+1;j<=len;++j,因为这种递增情况要除去i的。 dp[len][i][1]+=dp[len-1][j][0];}int cases;scanf("%d",&cases);while(cases--){int n,left,right,j;ll m;bool flag=false;scanf("%d%lld",&n,&m);memset(vis,0,sizeof(vis));for(int i=1;i<=n&&!flag;++i)for(j=0;j<=1;++j){m-=dp[n][i][j];if(m<=0){m+=dp[n][i][j];vis[i]=true;printf("%d",i);if(j==0)left=1,right=i-1;elseleft=i+1,right=n;flag=true;j^=1;break;}}for(int len=n-1;len>=1;--len){int cnt=0;for(int i=1;i<left;++i)if(!vis[i])++cnt;for(int i=left;i<=right;++i)if(!vis[i]){++cnt;m-=dp[len][cnt][j];if(m<=0){m+=dp[len][cnt][j];vis[i]=true;printf(" %d",i);if(j==0)left=1,right=i-1;elseleft=i+1,right=n;j^=1;break;}}}puts("");}return 0;}
0 0
- poj 1037 A decorative fence dp+序列构造
- dp+计数 poj-1037-A decorative fence
- POJ 1037 A decorative fence(dp)
- POJ 1037 A decorative fence DP
- 【poj 1037】A decorative fence 排列dp
- poj 1037 A decorative fence
- POJ 1037 A decorative fence
- POJ 1037 A decorative fence
- poj 1037 A decorative fence
- poj 1037 A decorative fence
- POJ 1037 A decorative fence(dp+排列计数)
- POJ 1037 A decorative fence DP+排列计数 *
- poj 1037 A decorative fence(dp,好题)
- pku 1037 A decorative fence(DP,划分)
- 动态规划 POJ 1037 A decorative fence
- POJ 1037 A decorative fence 动态规划
- POJ 1037 A decorative fence 笔记
- 1037 A decorative fence
- cf583C. GCD Table
- MySQL主从复制数据库升级完成后检查项
- 如何在页面中添加打印功能
- Android使用Handler防止内存泄漏
- 6-2 Verilog Mealy状态机之自动售货机
- poj 1037 A decorative fence dp+序列构造
- myeclipse连接Access数据库
- 颜色转换
- AndroidStudio常用设置
- 外观模式
- 重载 QApplication 类
- 一步一步构建iOS持续集成:Jenkins+GitLab+蒲公英+FTP
- Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
- DATETIME, DATE和TIMESTAMP类型