路径条数很好找。记录最小路径,就记录到各点的最小字符串,存储起来。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <iomanip>
#include <cstring>
#include <map>
#include <queue>
#include <set>
#include <cassert>
#include <stack>
#include <bitset>
#define mkp make_pair
using namespace std;
const double EPS=1e-;
typedef long long lon;
const lon SZ=,INF=0x7FFFFFFF,mod=;
lon n,k,arr[SZ][SZ],dp[SZ][SZ][];
string str[SZ][SZ][]; void init()
{
memset(dp,,sizeof(dp));
for(int i=;i<=*n-;++i)
{
for(lon j=;j<=abs(n-i)+;++j)
{
cin>>arr[i][j];
}
}
for(lon j=;j<SZ;++j)
{
if(j&)dp[][j][]=;
}
} string toStr(lon x)
{
if(x==)return "";
string res="";
for(;x;)
{
res+=''+x%;
x/=;
}
reverse(res.begin(),res.end());
return res;
} bool cmp(const string &x,const string &y)
{
int pos1=x.find(" ");
int pos2=y.find(" ");
if(pos1!=pos2)return pos1<pos2;
else return x<y;
} void work()
{
for(lon i=;i<=*n-;++i)
{
for(lon j=;j<=abs(n-i)+;++j)
{
lon cur=arr[i][j];
for(lon p=arr[i][j];p<=k;++p)
{
if(i<=n)
{
dp[i][j][p]+=dp[i-][j][p-cur];
dp[i][j][p]+=dp[i-][j+][p-cur];
if(i==)
{
str[i][j][p]=toStr(j-)+" ";
}
else if(dp[i-][j][p-cur]&&dp[i-][j+][p-cur])
{
if(cmp(str[i-][j][p-cur],str[i-][j+][p-cur]))
{
str[i][j][p]=str[i-][j][p-cur]+"R";
}
else
{
str[i][j][p]=str[i-][j+][p-cur]+"L";
}
}
else if(dp[i-][j][p-cur])
{
str[i][j][p]=str[i-][j][p-cur]+"R";
}
else if(dp[i-][j+][p-cur])
{
str[i][j][p]=str[i-][j+][p-cur]+"L";
}
}
else
{
dp[i][j][p]+=dp[i-][j-][p-cur];
dp[i][j][p]+=dp[i-][j][p-cur];
if(i==)
{
str[i][j][p]=toStr(j-)+" ";
}
else if(dp[i-][j-][p-cur]&&dp[i-][j][p-cur])
{
if(cmp(str[i-][j-][p-cur],str[i-][j][p-cur]))
{
str[i][j][p]=str[i-][j-][p-cur]+"R";
}
else
{
str[i][j][p]=str[i-][j][p-cur]+"L";
}
}
else if(dp[i-][j-][p-cur])
{
str[i][j][p]=str[i-][j-][p-cur]+"R";
}
else if(dp[i-][j][p-cur])
{
str[i][j][p]=str[i-][j][p-cur]+"L";
}
}
}
}
}
lon res=;
char tmp=(char)(''+);
string minstr="~~~~~~ ";
for(lon j=;j<=n;++j)
{
res+=dp[*n-][j][k];
if(dp[*n-][j][k])
{
//cout<<" "<<str[2*n-1][j][k]<<" "<<(str[2*n-1][j][k]=="")<<endl;
minstr=min(minstr,str[*n-][j][k],cmp);
}
}
cout<<res<<endl;
if(res)cout<<minstr<<endl;
else cout<<endl;
} int main()
{
std::ios::sync_with_stdio();
//freopen("d:\\1.txt","r",stdin);
lon casenum;
//cin>>casenum;
//cout<<casenum<<endl;
//for(lon time=1;time<=casenum;++time)
for(lon time=;cin>>n>>k,n;++time)
{
init();
work();
}
return ;
}

uva10564的更多相关文章

  1. [置顶] 刘汝佳《训练指南》动态规划::Beginner (25题)解题报告汇总

    本文出自   http://blog.csdn.net/shuangde800 刘汝佳<算法竞赛入门经典-训练指南>的动态规划部分的习题Beginner  打开 这个专题一共有25题,刷完 ...

  2. UVA - 10564 Paths through the Hourglass

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

随机推荐

  1. Selenium Webdriver弹出框的种种类型

    普通弹出框 div 一般这种 弹出框都属于dom的一部分,我们查看一下页面源码就可以定位到改弹出框了,然后定位下右上角的那个关闭, 这里有id,所以很方便通过 dr.findElement(By.id ...

  2. topcoder srm 480 div1

    problem1 link 直接模拟即可. problem2 link 首先,网关一定是安装在client与server之间的链路上.而不会安装在client与client之间的链路上.对于一条路径c ...

  3. Python3 tkinter基础 Checkbutton anchor for生成多个控件并西对齐

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  4. python bytes类型

    python3中二进制数据则由bytes类型表示,8位一字节 格式化打印文件的二进制编码 with open('spiderman.mkv', "rb") as f: print( ...

  5. 【NOIP 2015】Day2 T3 运输计划

    Problem Background 公元 \(2044\) 年,人类进入了宇宙纪元. Description 公元\(2044\) 年,人类进入了宇宙纪元. $L $国有 \(n\) 个星球,还有 ...

  6. python3.6配置libsvm2.2

    参考自:https://blog.csdn.net/weixin_35884839/article/details/79398085 由于需要使用到libsvm,所以开始配这个,所幸一次性就成功了. ...

  7. HashMap的实现原理-----哈希讲解

    哈希,英文名Hash.他就像是一个隔壁家的孩子一样,伴随着码工们的成长.听到他们的名字,我们都觉得很高大上. 在写程序的时候,一般我们都是这样被教育的:这个事情搞不定?用哈希呀! 在面试的时候,一般是 ...

  8. C#窗口禁止移动的方法

    1,窗口属性中有locked属性,设置为true. (在自己进行编码的时候并没能找到这个属性,貌似只能在窗口设计时进行设置,故此方法无可控性) 2,窗口属性中有FormBorderStyle属性,设置 ...

  9. node.js模块本地代理模块(将自己本机/局域网)服务 代理到外网可以访问

    npm 模块 localtunnel模块可以. lt --port 7000  其中7000是本地服务端口 会分配一个动态的url. 局域网中查看本地ip用ifconfg 或者在系统偏好设置里面查看网 ...

  10. 【BZOJ】3576: [Hnoi2014]江南乐

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3576 很显然,这是一个multi-nim游戏. 注意:1.一个点的SG值就是一个不等于它的 ...