博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa1366 Martian Mining
阅读量:6614 次
发布时间:2019-06-24

本文共 1271 字,大约阅读时间需要 4 分钟。

首先应该想到一点, 如果一段管道被中途截断了, 那么这段管道就是毫无意义的, 没了它答案也不会变差.

那么, 决策就可以看成每次修一条管道(从下到上或者从右到左), 状态可以定为每次考虑一个矩阵(顺序从小到大)

其次,很明显这个题满足最优子结构性质.

那么就不难写出方程了

1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 const int MAXN = 5e2 + 20; 7 inline int read() 8 { 9 int x = 0; char ch = getchar();10 while(!isdigit(ch)) ch = getchar();11 while(isdigit(ch)) x = x * 10 + ch - '0', ch = getchar();12 return x;13 }14 int N, M;15 int squ[MAXN][MAXN][2];16 int f[MAXN][MAXN];17 18 int main()19 {20 while(cin>>N>>M, N)21 {22 memset(squ, 0, sizeof(squ));23 for(int i = 1; i <= N; i++)24 for(int j = 1; j <= M; j++)25 squ[i][j][0] = squ[i][j - 1][0] + read();26 27 for(int i = 1; i <= N; i++)28 for(int j = 1; j <= M; j++)29 squ[i][j][1] = squ[i - 1][j][1] + read(); 30 31 memset(f, 0, sizeof(f));32 for(int i = 1; i <= N; i++)33 for(int j = 1; j <= M; j++)34 f[i][j] = max(f[i][j], max(f[i][j - 1] + squ[i][j][1], f[i - 1][j] + squ[i][j][0]));35 cout<
<

 

转载于:https://www.cnblogs.com/wsmrxc/p/9258535.html

你可能感兴趣的文章
ZOJ(ZJU) 1002 Fire Net(深搜)
查看>>
专访三桐:阿里人工智能搜索应用的交互式未来
查看>>
Android零基础入门第4节:正确安装和配置JDK, 高富帅养成第一招
查看>>
京东众筹上线仅2天完成目标 可编程机器人HEXA降低机器人开发门槛
查看>>
db file async I/O submit 等待事件优化
查看>>
前端需要了解的 SSO 与 CAS 知识
查看>>
李开复谈未来工作:虽然会被AI取代,但谁说人类非得工作不可?
查看>>
2015.08.21结构体指针
查看>>
PostgreSQL 空间切割(st_split)功能扩展 - 空间对象网格化
查看>>
Intercom的持续部署实践:一天部署100次,1次10分钟
查看>>
做好数据分析必备的5种典型可视化图表
查看>>
Windows I/O模型、同步/异步、阻塞/非阻塞
查看>>
SpringBoot权限控制
查看>>
网络遭受APTs攻击的五个信号
查看>>
C语言算法--统计字符串中单词的个数
查看>>
30万奖金!还带你奔赴加拿大相约KDD!?阿里聚安全算法挑战赛带你飞起!
查看>>
英特尔凌琦:大数据带来的机遇和挑战
查看>>
2017——Linux崛起的时代
查看>>
Devstack — screen 调试工具的使用
查看>>
壮士断腕!WordPress宣布停止使用React
查看>>