UVA 10564 Paths through the Hourglass[DP 打印]
| UVA - 10564 |
题意:
f[i][j][k]从下往上到第i层第j个和为k的方案数
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int N=,M=,INF=1e9;
typedef long long ll;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int n,s,w[N<<][N];
ll f[N<<][N][M];
void dp(){
memset(f,,sizeof(f));
for(int j=;j<=n;j++)
f[n+n-][j][w[n+n-][j]]=; //xia
for(int i=n+n-;i>=n;i--)
for(int j=;j<=i-n+;j++)
for(int k=w[i][j];k<=s;k++)
f[i][j][k]=f[i+][j][k-w[i][j]]+f[i+][j+][k-w[i][j]];
//shang
for(int i=n-;i>=;i--)
for(int j=;j<=n-i+;j++)
for(int k=w[i][j];k<=s;k++)
f[i][j][k]=f[i+][j][k-w[i][j]]+f[i+][j-][k-w[i][j]]; }
void print(int i,int j,ll k){//printf("print %d %d %d\n",i,j,k);
if(i==n+n-) return;
if(i<n){
if(j>&&f[i+][j-][k-w[i][j]]){
putchar('L');
print(i+,j-,k-w[i][j]);
}else{
putchar('R');
print(i+,j,k-w[i][j]);
}
}else{
if(f[i+][j][k-w[i][j]]){
putchar('L');
print(i+,j,k-w[i][j]);
}else{
putchar('R');
print(i+,j+,k-w[i][j]);
}
}
}
int main(){
//freopen("1.in","r",stdin);
//freopen("1.out","w",stdout);
while(scanf("%d%d",&n,&s)!=EOF&&(n||s)){
memset(w,,sizeof(w));
for(int i=;i<=n;i++)
for(int j=;j<=n-i+;j++) w[i][j]=read();
for(int i=n+;i<=n+n-;i++)
for(int j=;j<=i-n+;j++) w[i][j]=read();
dp();
int p=;
ll sum=;
for(int i=n;i>=;i--) if(f[][i][s]){p=i;sum+=f[][i][s];} printf("%lld\n",sum);
if(p) printf("%d ",p-),print(,p,s);
putchar('\n');
}
}
UVA 10564 Paths through the Hourglass[DP 打印]的更多相关文章
- UVA 10564 - Paths through the Hourglass (dp)
本文出自 http://blog.csdn.net/shuangde800 题目传送门 题意: 给一个相上面的图.要求从第一层走到最下面一层,只能往左下或右下走,经过的数字之和为sum. 问有多少 ...
- 01背包(类) UVA 10564 Paths through the Hourglass
题目传送门 /* 01背包(类):dp[i][j][k] 表示从(i, j)出发的和为k的方案数,那么cnt = sum (dp[1][i][s]) 状态转移方程:dp[i][j][k] = dp[i ...
- UVA 10564 Paths through the Hourglass(背包)
为了方便打印路径,考虑从下往上转移.dp[i][j][S]表示在i行j列总和为S的方案, dp[i][j][S] = dp[i+1][left][S-x]+dp[i+1][right][S-x] 方案 ...
- UVA - 10564 Paths through the Hourglass
传送门:https://vjudge.net/problem/UVA-10564 题目大意:给你一张形如沙漏一般的图,每一个格子有一个权值,问你有多少种方案可以从第一行走到最后一行,并且输出起点最靠前 ...
- UVA 10564_ Paths through the Hourglass
题意: 由0-9的数字组成一个形如沙漏的图形,要求从第一行开始沿左下或者右下到达最后一行,问有多少种不同的路径,使最后路径上的整数之和为给定的某个数. 分析: 简单计数dp,从最后一行开始,设dp[i ...
- UVA 10564 十 Paths through the Hourglass
Paths through the Hourglass Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & % ...
- uva 10564
Problem FPaths through the HourglassInput: Standard Input Output: Standard Output Time Limit: 2 Seco ...
- UVA 10163 Storage Keepers(两次DP)
UVA 10163 Storage Keepers(两次DP) http://uva.onlinejudge.org/index.php? option=com_onlinejudge&Ite ...
- uva 11584 Partitioning by Palindromes 线性dp
// uva 11584 Partitioning by Palindromes 线性dp // // 题目意思是将一个字符串划分成尽量少的回文串 // // f[i]表示前i个字符能化成最少的回文串 ...
随机推荐
- SQL SERVER 的模糊查询 LIKE
今天写个动态脚本,需要把数据库里面包含“USER_"的表删除掉,突然想不起来如何搜索通配字符了,赶紧查查MSDN,整理了下模糊查询的知识点,留着以后查阅用. LIKE模糊查询的通配符 通配符 ...
- JAVA使用JDBC技术操作SqlServer数据库执行存储过程
Java使用JDBC技术操作SqlServer数据库执行存储过程: 1.新建SQLSERVER数据库:java_conn_test 2.新建表:tb_User 3.分别新建三个存储过程: 1>带 ...
- WindowsAPI调用和OCR图片识别
傻了吧唧的装双系统.成功的干崩了原本的系统.现在重装VS.闲的没事胡扯几句. WindowsAPI在每一台Windows系统上开放标准API供开发人员调用.功能齐全.在这里只介绍三个部分. 1.利用A ...
- 使用C#开发数据库应用系统
第一章 初识Windows程序 01.浅谈控制台应用 解析:控制台应用程序:dos窗口中显示 Windows窗体应用程序:有控件参与的,支持事件的一种程序 02.关于窗体项目的注意点: /*01.一个 ...
- javascript关于继承
上一篇已介绍了组合继承,现在讲讲剩余的几种继承. 原型式继承 调用一个函数,接收这个函数返回来的对象,这个对象的原型就是传入函数的参数对象. 如: function personObject(o){ ...
- 使用javascript改变图片路径
效果预览:http://keleyi.com/keleyi/phtml/jstexiao/16.htm 代码如下: <!DOCTYPE html> <html> <hea ...
- 【blade04】用面向对象的方法写javascript坦克大战
前言 javascript与程序的语言比如C#或者java不一样,他并没有“类”的概念,虽然最新的ECMAScript提出了Class的概念,我们却没有怎么用 就单以C#与Java来说,要到真正理解面 ...
- 如何合理优化WEB前端 高效提升WEB前端性能
对前端开发工程师来说,前端性能优化的重要性是不言而喻的,最为大家所知的是YSLOW的23条优化规则,在我的理解中,性能优化不纯粹是指用户访问网站的速度,也包括开发的效率,这里我总结下我理解中的WEB前 ...
- JavaScript函数的4种调用方法详解
在JavaScript中,函数是一等公民,函数在JavaScript中是一个数据类型,而非像C#或其他描述性语言那样仅仅作为一个模块来使用.函数有四种调用模式,分别是:函数调用形式.方法调用形式.构造 ...
- 写pdf文件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...