UVA - 10564

题意:

要求从第一层走到最下面一层,只能往左下或右下走
问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径。

f[i][j][k]从下往上到第i层第j个和为k的方案数
上下转移不一样,分开处理
没必要判断走出沙漏
打印方案倒着找下去行了,尽量往左走
 
沙茶的忘注释掉文件WA好多次
 
#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 打印]的更多相关文章

  1. UVA 10564 - Paths through the Hourglass (dp)

    本文出自   http://blog.csdn.net/shuangde800 题目传送门 题意: 给一个相上面的图.要求从第一层走到最下面一层,只能往左下或右下走,经过的数字之和为sum. 问有多少 ...

  2. 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 ...

  3. 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] 方案 ...

  4. UVA - 10564 Paths through the Hourglass

    传送门:https://vjudge.net/problem/UVA-10564 题目大意:给你一张形如沙漏一般的图,每一个格子有一个权值,问你有多少种方案可以从第一行走到最后一行,并且输出起点最靠前 ...

  5. UVA 10564_ Paths through the Hourglass

    题意: 由0-9的数字组成一个形如沙漏的图形,要求从第一行开始沿左下或者右下到达最后一行,问有多少种不同的路径,使最后路径上的整数之和为给定的某个数. 分析: 简单计数dp,从最后一行开始,设dp[i ...

  6. UVA 10564 十 Paths through the Hourglass

     Paths through the Hourglass Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & % ...

  7. uva 10564

    Problem FPaths through the HourglassInput: Standard Input Output: Standard Output Time Limit: 2 Seco ...

  8. UVA 10163 Storage Keepers(两次DP)

    UVA 10163 Storage Keepers(两次DP) http://uva.onlinejudge.org/index.php? option=com_onlinejudge&Ite ...

  9. uva 11584 Partitioning by Palindromes 线性dp

    // uva 11584 Partitioning by Palindromes 线性dp // // 题目意思是将一个字符串划分成尽量少的回文串 // // f[i]表示前i个字符能化成最少的回文串 ...

随机推荐

  1. 【Java每日一题】20161221

    package Dec2016; public class Ques1221 { } class Parent{ public void test(){ System.out.println(&quo ...

  2. Javaweb学习笔记——使用Jdom解析xml

    一.前言 Jdom是什么? Jdom是一个开源项目,基于树形结构,利用纯java的技术对XML文档实现解析,生成,序列化以及多种操作.它是直接为java编程服务,利用java语言的特性(方法重载,集合 ...

  3. 纯CSS3实现3D跳动小球

    请使用Chrome,火狐的浏览器查看本页面,使用IE将看不到效果.如果在本页看不到一个跳动的小球,请确定您的浏览器支持CSS3,或者访问http://keleyi.com/a/bjac/iphgrtq ...

  4. iOS多图片下载

    iOS多图片下载.在cell里面下载图片.做了缓存优化. (app.icon是图片地址) // 先从内存缓存中取出图片 UIImage *image = self.images[app.icon]; ...

  5. Android自定义控件7--自定义开关--绘制界面内容

    本文实现全自定义控件--自定义开关 本文地址:http://www.cnblogs.com/wuyudong/p/5922316.html,转载请注明源地址. 自定义开关 (View),本文完成下面内 ...

  6. 了解HTML 元素分类

    HTML中包含大量的标签, 这些标签在我们使用中发现会有小小的差别, 有的标签用了之后不会有太大的布局变化, 只是语义化, 而有的标签却会重起一行, 相当于自己回车了一次, 这就是不同标签元素的分类不 ...

  7. NSError

    -(NSString * )backErrorString{ //    self.code; //http://blog.csdn.net/linkai5696/article/details/59 ...

  8. fetch_20newsgroups 数据集导入失败: no handlers could be fetch_20newsgroups

    最简单的办法 下载'20news-bydate.pkz', 放到C:\\Users\[Current user]\scikit_learn_data 下边就行. 实际上 scikit learning ...

  9. sshfs 实现普通用户可读写

    先实现普通用户免密码host1可登入host2host1# yum install fuse sshfs; 如果装不上,需要安装epep源 --enablerepo=epelhost1# su - e ...

  10. Echarts 之二——地市联动数据统计

    一.简介 通过地图可以更直观地展示各个地区的统计数据,能够更清楚地进行数据分析.有些场景下,我们不仅仅需要对每个地市进行统计分析.更需要对地市一下的区县进行数据统计,并进行联动.此事我们可以通过Ech ...