题意:

在一个n*m的矩阵中有两只虫子,一只从左上角向右下角移动,另外一只从左下角向右上角移动。

要求:

1.第一只虫子每次只能向左或者向下移动一格,另外一只只能向上或者向右移动一格。

2.两只虫子的路径最多只能重合一点。

3.求解两只虫子路径中除去重合那点其余各点的权值之和最大。

思路:

1.显然这题需要枚举所有可能的相交的点。

2.将问题转化成从四个角向可能的交点的四条路的权值最大。

3.为了保证路径只能有一个交点,我们考虑从可能的交点的上面的点通往上侧的两个角,左面的点通往左侧的两个角以此类推(参考大神的思想)。

4.用递推式子f[i][j]=max(f[i-1][j],f[i][j-1])+map[i][j].(这里只是写了其中一种情况(从左上角到该点的情况,其他三种情况类似))。

坑点:

边界上的点一定不可能作为唯一的交点。

#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
int pho[][];
int pho1[][];
int pho2[][];
int pho3[][];
int pho4[][]; int main()
{
int n,m;
memset(pho,,sizeof(pho));
memset(pho1,,sizeof(pho1));
memset(pho2,,sizeof(pho2));
memset(pho3,,sizeof(pho3));
memset(pho4,,sizeof(pho4));
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
scanf("%d",&pho[i][j]);
}
}
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
pho1[i][j]=max(pho1[i-][j],pho1[i][j-])+pho[i][j];
}
}
for(int i=n;i>=;i--)
{
for(int j=m;j>=;j--)
{
pho2[i][j]=max(pho2[i+][j],pho2[i][j+])+pho[i][j];
}
}
for(int i=n;i>=;i--)
{
for(int j=;j<=m;j++)
{
pho3[i][j]=max(pho3[i+][j],pho3[i][j-])+pho[i][j];
}
}
for(int i=;i<=n;i++)
{
for(int j=m;j>=;j--)
{
pho4[i][j]=max(pho4[i-][j],pho4[i][j+])+pho[i][j];
}
}
int ans=-;
bool ok=;
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
ans=max(ans,pho1[i-][j]+pho2[i+][j]+pho3[i][j-]+pho4[i][j+]);
ans=max(ans,pho1[i][j-]+pho2[i][j+]+pho3[i+][j]+pho4[i-][j]);
}
}
printf("%d\n",ans);
}

CodeForces 429B【dp】的更多相关文章

  1. CodeForces 106C 【DP】

    题意: n g dough  m种商品? 每种有ai stuffing, 拿bi stuffing + ci dough -> di tugriks rest c0 dough -> d0 ...

  2. CodeForces 761C 【DP】

    总结:能这么DP就这么写! 多练位运算标记. #include<bits/stdc++.h> using namespace::std; const int N=55; const int ...

  3. Codeforces 358D【DP】

    思路:  dp[i][0] 代表取的时候左边没有 dp[i][1] 代表取的时候右边没有 dp[i][2] 代表取的时候左右都没有 dp[i][3] 代表取的时候左右都有 然后自己转移吧= =. 注意 ...

  4. CodeForces 13C【DP】

    题意: 给你n个数,每次只能让一个数+1,或者-1,目标是最终使这个序列构成一个非递减的序列: n是5e3,复杂度n^2内.值是1e9: 思路: 可以发现子结构是保证一个区间的非递减, 如果只是dp[ ...

  5. CodeForces 687C【DP】

    题意: 给你n个数,然后让这些数相加组合,然后在这些组合的数里可以再相加组合搞出给定 k,输出这些组合的数. 思路: DP. //在枚举到第i个coin的时,dp[i][j],i 肯定能被a[i]组合 ...

  6. [CodeForces - 1225E]Rock Is Push 【dp】【前缀和】

    [CodeForces - 1225E]Rock Is Push [dp][前缀和] 标签:题解 codeforces题解 dp 前缀和 题目描述 Time limit 2000 ms Memory ...

  7. Kattis - honey【DP】

    Kattis - honey[DP] 题意 有一只蜜蜂,在它的蜂房当中,蜂房是正六边形的,然后它要出去,但是它只能走N步,第N步的时候要回到起点,给出N, 求方案总数 思路 用DP 因为N == 14 ...

  8. HDOJ 1423 Greatest Common Increasing Subsequence 【DP】【最长公共上升子序列】

    HDOJ 1423 Greatest Common Increasing Subsequence [DP][最长公共上升子序列] Time Limit: 2000/1000 MS (Java/Othe ...

  9. HDOJ 1501 Zipper 【DP】【DFS+剪枝】

    HDOJ 1501 Zipper [DP][DFS+剪枝] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...

随机推荐

  1. Oracle PL/SQL 编程手册(SQL大全)

    一.SQLPLUS 1引言 SQL命令 以下17个是作为语句开头的关键字: alterdroprevoke auditgrantrollback* commit*inse ...

  2. 四次元新浪微博客户端Android源码

    四次元新浪微博客户端Android源码 源码下载:http://code.662p.com/list/11_1.html [/td][td] [/td][td] [/td][td] 详细说明:http ...

  3. 10道有关ios的题

    1.你使用过Objective-C的运行时编程(Runtime Programming)么?如果使用过,你用它做了什么?你还能记得你所使用的相关的头文件或者某些方法的名称吗? 2.你实现过多线程的Co ...

  4. 作为一个iOS Developer 为什么我不用Swift?

    1.开始 在去年这个时候接手了一个iOS项目,项目主用Swift语言进行开发,对于部分第三方Objective C开源库则使用bridge的方式进行调用 当时项目的规模大概是不超过15个页面,功能也比 ...

  5. Linux-RedHat7.2 安装.net core2.0

    1.添加dotnet产品Feed sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo sh -c 'ech ...

  6. 《少年先疯队》第九次团队作业:Beta冲刺第三天

    3.1 今日完成任务情况 姚玉婷:酒店系统中剩余功能的完善 马丽莎:酒店系统中管理员功能的测试 张   琼:酒店系统中会员功能的测试 孙苗坤:酒店系统中其余管理功能的测试文档的编写 3.2 成员贡献时 ...

  7. Spring-02 Java配置实现IOC

    Java配置 Spring4推荐使用java配置实现IOC Spring boot也推荐采用java配置实现IOC 在实际项目中,一般采用注解配置业务bean,全局配置使用Java配置. Java配置 ...

  8. spring boot 在idea中实现热部署

    1)在pom中直接引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifac ...

  9. delphi 新版数组操作

    https://www.cnblogs.com/xalion/p/4283491.html

  10. C++ new delete(一)

    在C#.Java這種managed語言,因為有garbage collection,所以完全不用考慮free()或delete,但在C/C++,有時候要delete的,有時又不用,到底哪些改delet ...