CodeForces 429B【dp】
题意:
在一个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】的更多相关文章
- CodeForces 106C 【DP】
题意: n g dough m种商品? 每种有ai stuffing, 拿bi stuffing + ci dough -> di tugriks rest c0 dough -> d0 ...
- CodeForces 761C 【DP】
总结:能这么DP就这么写! 多练位运算标记. #include<bits/stdc++.h> using namespace::std; const int N=55; const int ...
- Codeforces 358D【DP】
思路: dp[i][0] 代表取的时候左边没有 dp[i][1] 代表取的时候右边没有 dp[i][2] 代表取的时候左右都没有 dp[i][3] 代表取的时候左右都有 然后自己转移吧= =. 注意 ...
- CodeForces 13C【DP】
题意: 给你n个数,每次只能让一个数+1,或者-1,目标是最终使这个序列构成一个非递减的序列: n是5e3,复杂度n^2内.值是1e9: 思路: 可以发现子结构是保证一个区间的非递减, 如果只是dp[ ...
- CodeForces 687C【DP】
题意: 给你n个数,然后让这些数相加组合,然后在这些组合的数里可以再相加组合搞出给定 k,输出这些组合的数. 思路: DP. //在枚举到第i个coin的时,dp[i][j],i 肯定能被a[i]组合 ...
- [CodeForces - 1225E]Rock Is Push 【dp】【前缀和】
[CodeForces - 1225E]Rock Is Push [dp][前缀和] 标签:题解 codeforces题解 dp 前缀和 题目描述 Time limit 2000 ms Memory ...
- Kattis - honey【DP】
Kattis - honey[DP] 题意 有一只蜜蜂,在它的蜂房当中,蜂房是正六边形的,然后它要出去,但是它只能走N步,第N步的时候要回到起点,给出N, 求方案总数 思路 用DP 因为N == 14 ...
- HDOJ 1423 Greatest Common Increasing Subsequence 【DP】【最长公共上升子序列】
HDOJ 1423 Greatest Common Increasing Subsequence [DP][最长公共上升子序列] Time Limit: 2000/1000 MS (Java/Othe ...
- HDOJ 1501 Zipper 【DP】【DFS+剪枝】
HDOJ 1501 Zipper [DP][DFS+剪枝] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...
随机推荐
- Web服务器安全设置
Web服务器安全方面一直重视程度不够,是各种网站经常被黑的主要原因.下面笔者总结了一下关于怎样保证Web服务器安全的措施,希望能给那些服务器尚存在漏洞的用户提供一些帮助. 本文主要以Windows s ...
- Oracle AWR报告的生成
生成AWR报告需要dbms_workload_repository包的权限. 一.以oracle用户登录到数据库服务器 二.进入SQLPLUS 三.执行脚本 @?/rdbms/admin/awrrpt ...
- MFC技术积累——基于MFC对话框类的那些事儿2
3. 绘图 3.1 对话框资源编辑 首先通过添加控件的方式来创建一个简单的绘图对话框如图所示,创建步骤为: 第一.在VC++6.0软件环境的灰色空白区域右击,选中Controls,然后会弹出一个控件对 ...
- C# 递归读取XML菜单数据
在博客园注册了有4年了,很遗憾至今仍未发表过博客,趁周末有空发表第一篇博客.小生不才,在此献丑了! 最近在研究一些关于C#的一些技术,纵观之前的开发项目的经验,做系统时显示系统菜单的功能总是喜欢把数据 ...
- springboot设置接口超时
springboot 设置接口超时 1.配置文件 application.properties中加了,意思是设置超时时间为20000ms即20s, spring.mvc.async.request-t ...
- Django 路由 —— Djangon如何处理一个请求
Django URL路由概述 一个干净优雅的URL方案是高质量Web应用程序中的一个重要细则Django可以让你设计URL,无论你想要什么,没有框剪限制要为应用程序设计URL,您可以非正式地创建一个名 ...
- 在Eclipse中设置自动补全
在Eclipse中菜单中,Window->Preferences->Java->Editor->Content Assist中的Auto activation triggers ...
- 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)
*题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数) public class 第三十九题按条件计算 ...
- 小程序01 微信小程序介绍和开发准备
前言 火爆的微信小程序:跳一跳.摩拜单车.美柚.大众点评.滴滴出行 背景 为什么会有小程序? 微信最早推出公众号和服务号,公众号和服务号所传播的网页经常出现加载缓慢甚至页面空白的情况. 微信小程序的诞 ...
- 洛谷P2802 回家
贱呼呼的搜索题 这个最贱的还是在于路途的标记,大部分的题目路途的标记是直接标记即可也就是说我走过了这个点,那么这个点标记上以后不再走,这个题不是,我走过了,但是我可能回了血我又继续走 所以说我们标记的 ...