时间限制: 1 s

空间限制: 128000 KB

题目等级 : 钻石 Diamond

 题目描述 Description

菜菜看到了一个游戏,叫做方格游戏~

游戏规则是这样的:

在一个n*n的格子中,在每个1*1的格子里都能获得一定数量的积分奖励,记左上角为(1,1),右下角为(n,n)。游戏者需要选择一条(1,1)到(n,n)的路径,并获得路径上奖励的积分。对于路径当然也有要求啦,要求是只能往坐标变大的方向走【从(x,y)到(x+1,y)或者(x,y+1)】,走过2n-1个区域到达(n,n)。当然,获得的积分最高的就能取胜啦。

这时,菜菜看到了他的好友月月,于是邀请她来玩双人版的。双人版的规则就是在单人版的基础上加上一条两人的路线不能相同。月月知道菜菜的很聪明,怕输得太惨,就不太愿意和他玩。菜菜可慌了,于是定义了一个公平值D,这个公平值等于俩人所选择的路径所能获得的积分一一对应相减的差的绝对值之和,即D=sigma (|kxi-kyi|)|(kx,ky分别为菜菜,月月走过的每一个区域的丛林系数)。不过这可是个庞大的计算任务,菜菜找到了你,请你帮忙计算公平值的最大值。

输入描述 Input Description

第一行,一个正整数n

接下来的n行,每行n个整数,表示丛林中每个区域的公平值

输出描述 Output Description

一个整数Dmax,即公平值的最大值

样例输入 Sample Input

4

1 2 3 4

1 5 3 2

8 1 3 4

3 2 1 5

样例输出 Sample Output

13

数据范围及提示 Data Size & Hint

对于20%的数据,保证0<n≤20

对于50%的数据,保证0<n≤50

对于100%的数据,保证0<n≤100且对于所有的i,j保证|Kij|≤300

分类标签 Tags 点此展开

代码

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
][],dp[][][];
int main(){
    cin>>n;
    ;i<=n;i++){
        ;j<=n;j++){
            cin>>a[i][j];
        }
    }
    ;i<=n;i++)
        ;j<=n;j++)
            ;k<=*n;k++)
                dp[i][j][k]=-;
    dp[][][]=;
    ;k<=*n;k++){
        ;j<=n;j++){
            ;i<=n;i++){
                if(k-i>n || k-j>n) continue;
                 || k-j<) break;
                ][j][k-],dp[i][j][k-]),max(dp[i][j-][k-],dp[i-][j-][k-]))+abs(a[i][k-i]-a[j][k-j]);
            }
        }
    }
    cout<<dp[n][n][*n];
}

思路:

状态压缩,四维会爆!改成三维!

本题是一道典型的动态规划题。

我们首先来设计状态,用f[i][j][k]表示第i步时,菜菜的路径在横坐标为j的区域,月月的路径在横坐标为k的格子上时,当前公平值的最大值。这样三个值用来表示状态已经足够,因为菜菜和月月的位置可以用(j,i-j+1)和(k,i-k+1)来表示。

状态转移方程根据两人移动的方法设置如下:

f[i][j][k] = max{f[i-1][j-x][k-y]} + |a[j][i-j+1] - a[k][i-k+1]|,  x,y = 0,1}

这样,本题就解决了,本题的时间复杂度为O(n3)。

千万要注意在循环的时候是先循环k再循环j最后i  也就是说要倒着循环

codevs——2853 方格游戏(棋盘DP)的更多相关文章

  1. codevs 2853 方格游戏--棋盘dp

    方格游戏:http://codevs.cn/problem/2853/ 这和传纸条和noip方格取数这两个题有一定的相似性,当第一眼看到的时候我们就会想到设计$dp[i][j][k][l]$(i,j表 ...

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

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

  3. codevs 2853:方格游戏

    (排版没搞好,这一行用来卖萌~) 题目描述 Description 菜菜看到了一个游戏,叫做方格游戏~ 游戏规则是这样的: 在一个n*n的格子中,在每个1*1的格子里都能获得一定数量的积分奖励,记左上 ...

  4. 炮(棋盘DP)

    一直以为自己写的就是状态压缩,结果写完才知道是个棋盘dp 首先看一下题目 嗯,象棋 ,还是只有炮的象棋 对于方案数有几种,我第一个考虑是dfs,但是超时稳稳的,所以果断放弃 然后记得以前有过和这个题差 ...

  5. 求次短路 codevs 1269 匈牙利游戏

    codevs 1269 匈牙利游戏 2012年CCC加拿大高中生信息学奥赛  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题目描述 Descriptio ...

  6. 「 CODE[VS] P2853 」 方格游戏

    题目大意 给定一张 $n\times n$ 的网格.每个格子上都有一个系数 $a$,先下 $A$ 和 $B$ 两人选择两条 $(1,1)\rightarrow (n,n)$ 路径.要求着两条路径不能相 ...

  7. P2016 战略游戏——树形DP大水题

    P2016 战略游戏 树形DP 入门题吧(现在怎么是蓝色标签搞不懂): 注意是看见每一条边而不是每一个点(因为这里错了好几次): #include<cstdio> #include< ...

  8. [JLOI2013]卡牌游戏 概率DP

    [JLOI2013]卡牌游戏 概率DP 题面 \(dfs\)复杂度爆炸,考虑DP.发现决策时,我们只用关心当前玩家是从庄家数第几个玩家与当前抽到的牌是啥.于是设计状态\(f[i][j]\)表示有\(i ...

  9. P1006 传纸条[棋盘DP]

    题目来源:洛谷 题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接 ...

随机推荐

  1. jq相关细节-1

    animate/动画 所有用于动画的属性必须是数字的,除非另有说明:这些属性如果不是数字的将不能使用基本的jQuery功能.(例如,width, height或者left可以执行动画,但是backgr ...

  2. models管理类抽取基类

    Models类 models.py # coding:utf-8 from django.db import models from db.Base_model import Base_Model f ...

  3. APK无源码使用Robotium简单总结

    1.使用re-sign.jar对待测包进行重签名,并记录下包名和主Activity名. 2.在Eclipse中点击File-New-Other 选择Android下的Android Test Proj ...

  4. Android SDK 目录详解(转)

    Android SDK目录结构和工具介绍是本文要介绍的内容,主要是来了解并学习Android SDK的内容,具体关于Android SDK内容的详解来看本文. Android SDK目录下有很多文件夹 ...

  5. Python基础-week06 面向对象编程进阶

    一.反射 1.定义:指的是通过字符串来操作类或者对象的属性 2.为什么用反射? 减少冗余代码,提升代码质量. 3.如何用反射? class People: country='China' def __ ...

  6. php 实现栈与队列

    <?php class queueOp{ /* * 队尾入队 * Return:处理之后队列的元素个数 */ public function tailEnquque($arr,$val){ re ...

  7. 3种jQuery弹出大图效果

    本实例用到了jquery.imgbox.pack.js库.直接看代码: <!DOCTYPE html> <html lang="en"> <head& ...

  8. [Python]Pandas简单入门(转)

    本篇文章转自 https://colab.research.google.com/notebooks/mlcc/intro_to_pandas.ipynb?hl=zh-cn#scrollTo=zCOn ...

  9. BZOJ 1051:[HAOI2006]受欢迎的牛(强连通分量)

    受欢迎的牛Description每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么 ...

  10. table单元格内容过多换行显示

    <table class="am-table am-table-striped am-table-hover table-main am-table-compact " st ...