博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces 429B Working out
阅读量:6910 次
发布时间:2019-06-27

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

题意:一个从左下到右上,一个从左上到右下,要求只相交一次,求整个路径和的最大值

思路:发现可以枚举交点,然后算到四个角的值,而且,边界上面的点不可能作为交点。

1 #include
2 #include
3 #include
4 #include
5 #include
6 int n,m,f1[1005][1005],f2[1005][1005],f4[1005][1005],f3[1005][1005]; 7 int a[1005][1005]; 8 int read(){ 9 int t=0,f=1;char ch=getchar();10 while (ch<'0'||ch>'9'){
if (ch=='-') f=-1;ch=getchar();}11 while ('0'<=ch&&ch<='9'){t=t*10+ch-'0';ch=getchar();}12 return t*f;13 }14 int main(){15 n=read();m=read();16 for (int i=1;i<=n;i++)17 for (int j=1;j<=m;j++)18 a[i][j]=read();19 for (int i=1;i<=n;i++)20 for (int j=1;j<=m;j++)21 f1[i][j]=std::max(f1[i-1][j],f1[i][j-1])+a[i][j];22 for (int i=1;i<=n;i++)23 for (int j=m;j>=1;j--)24 f2[i][j]=std::max(f2[i-1][j],f2[i][j+1])+a[i][j];25 for (int i=n;i>=1;i--)26 for (int j=1;j<=m;j++)27 f3[i][j]=std::max(f3[i+1][j],f3[i][j-1])+a[i][j];28 for (int i=n;i>=1;i--)29 for (int j=m;j>=1;j--)30 f4[i][j]=std::max(f4[i+1][j],f4[i][j+1])+a[i][j];31 int ans=0;32 for (int i=2;i

 

转载于:https://www.cnblogs.com/qzqzgfy/p/5624817.html

你可能感兴趣的文章
人人都能掌握的Java服务端性能优化方案
查看>>
Android入门第一关:Android四大组件
查看>>
记一次混淆算法逆向分析
查看>>
header的安全配置指南
查看>>
W3C CSS Transforms摘译
查看>>
Logo设计的简要可行步骤
查看>>
ES6之Set和Map
查看>>
动画-仿微博弹簧动画
查看>>
[译] 单向用户界面架构
查看>>
shell script
查看>>
聊聊rocketmq的KVConfigManager
查看>>
实现立方体旋转
查看>>
学习牵引力UI设计,改变了青春梦想!
查看>>
ES6 系列之 Babel 是如何编译 Class 的(下)
查看>>
CAS 无锁式同步机制
查看>>
前端人员必看周刊和公众号
查看>>
SSProgressHUD - 加载动画提示、文字和图片提示、进度加载提示、可自定义、方便的API调用...
查看>>
实现一个简化版的vue-router
查看>>
Flv封装格式
查看>>
Android RecyclerView实现头部悬浮吸顶效果
查看>>