174 条题解
-
0cbw05201 LV 3 @ 2006-10-17 16:41:01
谁给一个pascal的编码啊?
谢了 -
02006-10-13 20:26:33@
分层更新。。
先往同一层右更新,再左更新。最后上更新 -
02006-10-07 17:09:42@
以层划分阶段
同层间进行更新 -
02006-10-02 13:45:21@
样例里好像多了个3啊,还有,为什么没有pascal的代码呢?怎么解啊
-
02006-09-24 17:00:35@
我为什么要办证阿
我是专门伪造证件的阿
Bellman-ford? -
02006-09-14 19:37:23@
我的程序自己测的数据都是错的,交上去却过了??
-
02006-09-03 06:29:37@
汗 好象Vijos不支持SpecialJudge
我不敢交这题了... 反正URAL是AC了
-
02006-08-25 14:43:09@
何为双重DP?
有什么例题么?能否告诉小弟 -
02006-08-20 11:28:25@
丫的简单的2次动归,
在ans满足最优且有多种情况时,输出路径不唯一。
强烈鄙视!!!!!!!!!!!!!!!!!! -
02006-08-15 19:46:42@
什么是双重DP啊
可否说的清楚些
我写了个程序 说不上是什么 感觉没错 可只56分
我可以将程序贴出来吗
大牛们 帮帮忙 指点一下迷津
哦 这里好象不行
放在讨论里把 -
02006-07-27 19:32:13@
fco的是标准dp法,不是水法........
我也如此的 -
02006-05-21 12:36:03@
我用的水法:
对于min,先计算从楼下来,再把j从1到n比较一次,再从n到1比较一次,
结果就过了 -
02006-05-18 22:01:53@
终于过了 原来是数据范围搞错了 结果8个数据超时!
-
-12017-06-28 21:06:25@
AC70纪念
#include<bits/stdc++.h>
using namespace std;
long long f[105][505],a[105][505];
int m,n;
stack<int> st;
int main()
{
cin>>m>>n;
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++)cin>>a[i][j];
}
memset(f,0x3f,sizeof(f));
//f[1][1]=0;
for(int j=1;j<=n;j++)f[1][j]=a[1][j];
for(int i=2;i<=m;i++){
for(int j=1;j<=n;j++)f[i][j]=f[i-1][j]+a[i][j];
for(int k=2;k<=n;k++)f[i][k]=min(f[i][k],f[i][k-1]+a[i][k]);
for(int k=n-1;k>=1;k--)f[i][k]=min(f[i][k],f[i][k+1]+a[i][k]);
}
long long ans=(1<<30)-1,p;
for(int i=1;i<=n;i++){
if(f[m][i]<ans){
ans=f[m][i];
p=i;
}
}
//cout<<p<<endl;
//cout<<ans<<endl;
int i=m,j=p;
st.push(p);
while(i>1){
if(f[i][j]==f[i-1][j]+a[i][j])i--;
else if(f[i][j]==f[i][j-1]+a[i][j])j--;
else j++;
st.push(j);
}
//st.push(j);
while(!st.empty()){
int v=st.top();
st.pop();
cout<<v<<endl;
}
}