Gravatar
霖:404
积分:164
提交:72 / 278
不会输出路径

题目 77 [IOI 1994] 数塔
2019-01-04 22:16:37
Gravatar
帅气的背影
积分:59
提交:21 / 120
回复 @ranto :
.....

题目 77 [IOI 1994] 数塔
2017-10-13 11:27:26
Gravatar
HATSUNEMIKU
积分:0
提交:0 / 5
警告 本题有DALAO出没!!!![size=35][/size]

题目 77 [IOI 1994] 数塔
2017-10-05 14:42:14
Gravatar
ascrodia
积分:8
提交:3 / 16
回复 @bilibili :
楼上大佬
在下默默飘过

题目 77 [IOI 1994] 数塔
2017-10-05 10:46:14
Gravatar
ascrodia
积分:8
提交:3 / 16
。。。。。。。。。

Gravatar
bilibili
积分:149
提交:64 / 223
数据规模错了,没有一次ac,引以为戒

题目 77 [IOI 1994] 数塔
2017-10-05 10:08:12
Gravatar
_WA自动机
积分:400
提交:156 / 412
数据规模坑。。数组应该开[100][100][3]..

Gravatar
据说这是zzy
积分:267
提交:104 / 466
gg

题目 77 [IOI 1994] 数塔
2017-07-05 18:42:09
Gravatar
JustWB
积分:617
提交:222 / 519
1A的快感!

Gravatar
AntiLeaf
积分:3396
提交:1527 / 4369

Gravatar
Tbnlkegc
积分:199
提交:94 / 96
第一发动归留念

Gravatar
HeHe
积分:1192
提交:426 / 866
我感觉我写了个暴力
输出路径好费脑子。。

Gravatar
kZime
积分:1101
提交:334 / 677
成功
找到最长路之后又向上push了这条路
顺便练习栈

Gravatar
5458
积分:164
提交:79 / 125
无聊时自己想了个打印解方法 速度当然没楼上的大神们快- -
深夜又无聊于是乎决定在这里水一贴
用动归的时候已经把每个节点的最大路径值算出来了,
在打印解得时候每次只需要选择比较大的路径值就行(忘了咋推的了 占坑以后补)
从(1,1)开始选择下一行的左边(i+1)(j)或者右边(j+1)(j+1)
比如样例每个状态为
86
57 73
39 46 65
18 27 39 32
12 07 13 24 11
选择的顺序应该是86 73 65 39 24
记录选择的点(用个数组),打印数塔中原来的数据
会发现i是逐层递增的,不需要记录
对于j
d[i+1][j+1]>d[i+1][j]或d[i+1][j+1]<d[i+1][j]
第一种情况时需要把j+1来记录 说明选择的是右边的点 记入数组
第二个则j不需要变 选择的是左边的点 记入数组
打印相应的解就行了
int j=1; now[1]=1; //从点(1,1)开始记录
for(int i=1;i<=n-1;i++){
if(d[i+1][j+1]>d[i+1][j]) j++;
now[m++]=j;
}
for(int i=1;i<=n;i++)
printf("%d ",a[i][now[i]]);

Gravatar
皮波Forever
积分:452
提交:115 / 167
辣鸡记忆化上榜了,不说什么了

Gravatar
Hzoi_
积分:1680
提交:530 / 743
本来不输出路径的话还可以递推,输出路径的话...略麻烦

Gravatar
xbwcan
积分:377
提交:132 / 257
输出路径其实可以很简单。

Gravatar
啊吧啦吧啦吧
积分:544
提交:169 / 323

Gravatar
Satoshi
积分:3003
提交:678 / 1922
你们不好好听课!!!!!!!1

题目 77 [IOI 1994] 数塔
2015-07-13 10:01:43
Gravatar
1azyReaper
积分:777
提交:185 / 380
0