记录编号 |
163877 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[IOI 1999] 花店橱窗 |
最终得分 |
100 |
用户昵称 |
forever |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.022 s |
提交时间 |
2015-05-27 08:12:17 |
内存使用 |
0.43 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[102][102],f[102][102],n,m;
int b[102][102],op[105];
int main()
{ freopen("hana.in","r",stdin);
freopen("hana.out","w",stdout);
cin>>n>>m;
f[0][0]=0;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
{
cin>>a[i][j];
f[i][j]=-0x3fffffff;
}
for(int i=1;i<=n;++i)
f[1][i]=a[1][i];
int anss=0,d;
for(int i=1;i<=n;++i)
for(int j=i;j<=m-n+i;++j)
for(int k=1;k<j;++k)//从前往后找最佳方案;
if(f[i-1][k]+a[i][j]>f[i][j])
{
f[i][j]=f[i-1][k]+a[i][j];
if(f[i][j]>anss&&i==n)
{
anss=f[i][j];
d=j;
}
b[i][j]=k;
}
cout<<anss<<endl;
for(int i=n;i>=1;--i)
{
op[i]=d;
d=b[i][d];//寻找上一个节点;;
}
for(int i=1;i<=n-1;++i)
cout<<op[i]<<" ";
cout<<op[n];
//system("pause");
}