先上题目:

P1004 方格取数

下面上ac代码:

///如果先走第一个再走第二个不可控因素太多
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll f[][][][];
ll a[][];
int main()
{
ios::sync_with_stdio(false);
ll n,xx,yy,zz;
cin>>n;
while(scanf("%lld %lld %lld",&xx,&yy,&zz)==&&!(xx==&&yy==&&zz==))
a[xx][yy]=zz;//导入基本数据
//我们需要f[n][n][n][n]作为答案,它表示走完两次的总数
// f[1][1][1][1]=a[1][1];//这里不用赋初值
for(ll i=;i<=n;i++)
for(ll j=;j<=n;j++)
for(ll x=;x<=n;x++)
for(ll y=;y<=n;y++)
{
f[i][j][x][y]=a[i][j]+a[x][y]+max(max(max(f[i-][j][x-][y],f[i-][j][x][y-]),f[i][j-][x-][y]),f[i][j-][x][y-]);
// f[i][j][x][y]=max(f[i][j][x][y],f[i-1][j][x-1][y]+a[i][j]+a[x][y]);
// f[i][j][x][y]=max(f[i][j][x][y],f[i-1][j][x][y-1]+a[i][j]+a[x][y]);
// f[i][j][x][y]=max(f[i][j][x][y],f[i][j-1][x-1][y]+a[i][j]+a[x][y]);
// f[i][j][x][y]=max(f[i][j][x][y],f[i][j-1][x][y-1]+a[i][j]+a[x][y]);
if(i==x&&j==y)
f[i][j][x][y]-=a[i][j];
}
cout<<f[n][n][n][n]<<endl;
}

点击加号展开代码

然后讲思路:

1.如果先走第一个,第一个走完了再走第二个会有很多不可控因素(我就摔在这个坑上)

2.这题其实可以看作两个人同时走

每一回合有四种可能:

@1,两个同时向右走

@2,两个同时向下走

@3,第一个向右走,第二个向下走

@4,第一个向下走,第二个向右走

所以需要四个连环的for循环

用i,j表示第一个的坐标,x,y表示第二个的坐标

如果他们同时相遇,就相当于把一个格子的数字拿了两次,再减掉这一次就好了

也就是:

if(i==x&&j==y)
f[i][j][x][y]-=a[i][j];

这里的减就是数字拿多了,要扣的意思

然后递推式有两种写法:

@1:

 f[i][j][x][y]=max(f[i][j][x][y],f[i-][j][x-][y]+a[i][j]+a[x][y]);
f[i][j][x][y]=max(f[i][j][x][y],f[i-][j][x][y-]+a[i][j]+a[x][y]);
f[i][j][x][y]=max(f[i][j][x][y],f[i][j-][x-][y]+a[i][j]+a[x][y]);
f[i][j][x][y]=max(f[i][j][x][y],f[i][j-][x][y-]+a[i][j]+a[x][y]);

第一种递推式的意思是考虑四种走法哪一种好,找出最大的,为每一格附上当前能有的最大数目,一直递推就是答案了

@2:

f[i][j][x][y]=a[i][j]+a[x][y]+max(max(max(f[i-][j][x-][y],f[i-][j][x][y-]),f[i][j-][x-][y]),f[i][j-][x][y-]);

第二种和第一种一个意思,写法不同而已

最后f[n][n][n][n]就是我们要的答案了

NOIP2000方格取数(洛谷,动态规划递推)的更多相关文章

  1. 棋盘DP三连——洛谷 P1004 方格取数 &&洛谷 P1006 传纸条 &&Codevs 2853 方格游戏

    P1004 方格取数 题目描述 设有N $\times N$N×N的方格图(N $\le 9$)(N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字00.如下图所示(见样例): A ...

  2. P1541 乌龟棋 题解(洛谷,动态规划递推)

    题目:P1541 乌龟棋 感谢大神的题解(他的写的特别好) 写一下我对他的代码的理解吧(哎,蒟蒻就这能这样...) 代码: #include<bits/stdc++.h> #define ...

  3. P1004 方格取数-洛谷luogu-dp动态规划

    题目描述 设有N \times NN×N的方格图(N \le 9)(N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字00.如下图所示(见样例): A 0 0 0 0 0 0 0 0 ...

  4. 方格取数洛谷p1004

    题目描述 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 人数字0.如下图所示(见样例): A 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 ...

  5. AC日记——方格取数 洛谷 P1004

    题目描述 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 人数字0.如下图所示(见样例): A 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 ...

  6. P1060 开心的金明(洛谷,动态规划递推,01背包轻微变形题)

    题目链接:P1060 开心的金明 基本思路: 基本上和01背包原题一样,不同点在于这里要的是最大重要度*价格总和,我们之前原题是 f[j]=max(f[j],f[j-v[i]]+p[i]); 那么这里 ...

  7. P1616 疯狂的采药(洛谷,动态规划递推,完全背包)

    先上题目链接:P1616 疯狂的采药 然后放AC代码: #include<bits/stdc++.h> #define ll long long using namespace std; ...

  8. P1048 采药(洛谷,动态规划递推,01背包原题)

    题目直接放链接 P1048 采药 这题只是01背包+背景故事而已 原题来的 PS:我写了一篇很详细的01背包说明,如果下面ac代码有看不懂的地方可以去看看 对01背包的分析与理解(图文) 下面上ac代 ...

  9. NOIP2000方格取数[DP]

    题目描述 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 人数字0.如下图所示(见样例): A 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 ...

随机推荐

  1. 动态更改Menu

    好像没有现成的api可能获取menu完美方法,只有在创建menu时,用全局的menuItem记下, 在需要修改时修改. 1)全局量: MenuItem  gMenuItem=NULL; 2)//创建菜 ...

  2. [翻译]NUnit---Condition Asserts && Comparisons Asserts && Type Asserts (五)

    网址:http://www.cnblogs.com/kim01/archive/2013/03/31/2991597.html Condition Asserts 测试指定条件的方法称作条件测试,测试 ...

  3. 记录一次Mysql死锁排查过程

    背景 以前接触到的数据库死锁,都是批量更新时加锁顺序不一致而导致的死锁,但是上周却遇到了一个很难理解的死锁.借着这个机会又重新学习了一下mysql的死锁知识以及常见的死锁场景.在多方调研以及和同事们的 ...

  4. 【前端】JavaScript表达式-新手必看

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/6145384.html 一.什么是表达式 表达式就是JavaScript里一个短句,JavaScript解释器会将 ...

  5. ModuleNotFoundError: No module named 'urlparse'

    这是2.x转3.x问题 2.x写法: from urlparse import urlparse   3.x写法: from urllib.parse import urlparse 问题解决.

  6. Dubbo近况

    刚下班看到开发者头条上一篇讲dubbo前世今生的文章,总结的不错,摘录一下. 从2012年10月23日Dubbo 2.5.3发布后,在Dubbo开源将满一周年之际,阿里基本停止了对Dubbo的主要升级 ...

  7. uva10655

    Given the value of a+b and ab you will have to find the value of a n + b n Input The input file cont ...

  8. 不温不火WindowsPhone

    最近在考虑是否转其他平台,如iOS或者Android或者javascript等. 已经以Windows Phone 开发作为工作就一年了(也不算是真正的Windows Phone开发吧,仅仅是开发高德 ...

  9. ruby on rails, api only, 脚手架

    rails new connector_api --api --database=postgresql bundle install rake db:create rails g scaffold i ...

  10. bzoj 3498: PA2009 Cakes【瞎搞】

    参考:https://www.cnblogs.com/spfa/p/7495438.html 为什么邻接表会TTTTTTTLE啊...只能用vector? 把点按照点权从大到小排序,把无向边变成排名靠 ...