「 CODE[VS] P2853 」 方格游戏
题目大意
给定一张 $n\times n$ 的网格。每个格子上都有一个系数 $a$,先下 $A$ 和 $B$ 两人选择两条 $(1,1)\rightarrow (n,n)$ 路径。要求着两条路径不能相同。并且要计算出两条路径每一个相对应的格子上的系数的差的绝对值之和。
要求选择路径是满足下列条件:
只能选择坐标增加的方向。
解题思路
棋盘 DP。
既然是在一个棋盘中。并且已经规定了行走的方向。所以在移动的格子的数量相同时。两个路径停留的点到 $(1,1)$ 这个点的曼哈顿距离(横坐标$+$纵坐标)是相同的。而且知道了横坐标和曼哈顿距离就可以求出点的纵坐标。
设 $DP[i][j][k]$ 表示两条路径停留点的横坐标分别是 $i$ 和 $j$,距离 $(1,1)$ 这个点的曼哈顿距离是 $k$。
我们考虑枚举曼哈顿距离和两条路径所停留点的横坐标。这样通过横坐标和曼哈顿距离就可以求出纵坐标。如题所说,每一个点只能被他上面或者左边的点到达,所以能够得到下面的方程
$$dp[i][j][k] = max\{dp[i][j-1][k-1],dp[i-1][j][k-1],dp[i][j][k-1],dp[i-1][j-1][k-1]\}+abs(a[i][k-i]-a[j][k-j])$$
附上代码
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int INF = ;
int n, a[][], dp[][][];
inline int ABS(int a) {
return a> ? a : -a;
}
inline int MAX(int x, int y) {
return x>y ? x : y;
}
int main() {
scanf("%d", &n);
for(int i=; i<=n; i++)
for(int j=; j<=n; j++)
scanf("%d", &a[i][j]);
dp[][][] = ;
for(int k=; k<=*n; k++) {
for(int j=; j<=n; j++) {
for(int i=; i<=n; i++) {
if(k-i > n || k-j > n) continue;
if(k-i < || k-j < ) break;
else dp[i][j][k] = MAX(MAX(dp[i-][j][k-], dp[i][j-][k-]), MAX(dp[i][j][k-], dp[i-][j-][k-])) + ABS(a[i][k-i]-a[j][k-j]);
}
}
}
printf("%d", dp[n][n][*n]);
}
「 CODE[VS] P2853 」 方格游戏的更多相关文章
- LibreOJ #6007. 「网络流 24 题」方格取数 最小割 最大点权独立集 最大流
#6007. 「网络流 24 题」方格取数 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
- Vue+WebSocket+ES6+Canvas 制作「你画我猜」小游戏
Vue+WebSocket+ES6+Canvas 制作「你画我猜」小游戏 转载 来源:jrainlau 链接:https://segmentfault.com/a/1190000005804860 项 ...
- Libre 6007 「网络流 24 题」方格取数 / Luogu 2774 方格取数问题 (网络流,最大流)
Libre 6007 「网络流 24 题」方格取数 / Luogu 2774 方格取数问题 (网络流,最大流) Description 在一个有 m*n 个方格的棋盘中,每个方格中有一个正整数.现要从 ...
- LibreOJ #6191. 「美团 CodeM 复赛」配对游戏
二次联通门 : LibreOJ #6191. 「美团 CodeM 复赛」配对游戏 /* LibreOJ #6191. 「美团 CodeM 复赛」配对游戏 概率dp */ #include <cs ...
- 「区间DP」「洛谷P1043」数字游戏
「洛谷P1043」数字游戏 日后再写 代码 /*#!/bin/sh dir=$GEDIT_CURRENT_DOCUMENT_DIR name=$GEDIT_CURRENT_DOCUMENT_NAME ...
- 【刷题】LOJ 6007 「网络流 24 题」方格取数
题目描述 在一个有 \(m \times n\) 个方格的棋盘中,每个方格中有一个正整数. 现要从方格中取数,使任意 \(2\) 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数 ...
- LG4819/BZOJ2438 「中山市选2011」杀人游戏 Tarjan缩点+概率
问题描述 LG4819 BZOJ2438 题解 发现如果有一些人之间认识关系形成环,只需要问一个人就能把控整个环. \(\mathrm{Tarjan}\)缩点. 缩点之后所有入度为\(0\)的点,必须 ...
- 「洛谷P1080」「NOIP2012提高组」国王游戏 解题报告
P1080 国王游戏 题目描述 恰逢 \(H\)国国庆,国王邀请\(n\)位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 \( ...
- Solution -「NOI 2021」「洛谷 P7740」机器人游戏
\(\mathcal{Description}\) Link. 自己去读题面叭~ \(\mathcal{Solution}\) 首先,参悟[样例解释 #2].一种暴力的思路即为钦定集合 \ ...
随机推荐
- 使Android 自带SDK 完美支持HTML5 之 html5webview
HTML5出来之后,webkit 大部分都支持了,但是由于历史原因,支持限度有限,我在Android 4.0使用 hao123的客户端访问youxi.cn期望可以万网手机HTML5游戏但是有些失望,进 ...
- ViewPager嵌套ViewPager后子ViewPager滑动不正常问题
ViewPager嵌套ViewPager后,滑动事件没法在子ViewPager里面响应. 解决办法是自定义子ViewPager. 以下代码是转载的,经本人测试,可以用!!! 转载地址:http://b ...
- BZOJ_3667_Rabin-Miller算法_Mille_Rabin+Pollard rho
BZOJ_3667_Rabin-Miller算法_Mille_Rabin+Pollard rho Description Input 第一行:CAS,代表数据组数(不大于350),以下CAS行,每行一 ...
- [noi.ac_D1T2]sort
https://www.zybuluo.com/ysner/note/1289967 题面 定义"翻转排序":每次操作均为把区间\([l,r]\)中所有数倒过来,即\(swap(a ...
- bzoj1597 [Usaco2008 Mar]土地购买——斜率优化DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1597 就是斜率优化水题... 然而WA了十几遍,正负号处理真让人心累... 还是该负就负,别 ...
- 杂项-Java:JSP
ylbtech-杂项-Java:JSP 1.返回顶部 1. JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Micros ...
- openStack Aio 环境的neutron agent-list和cluster 环境 CLI结果对比
- jquery plupload上传插件
http://www.jianshu.com/p/047349275cd4 http://www.cnblogs.com/2050/p/3913184.html demo地址: http://chap ...
- c语言小项目-使用mysql数据库的图书管理系统
VS2013通过MySQL方式连接到MySQL MySQL官网上C++的API有两个.一个是很成熟的mysql++,另一个是MySQL Connector/C++,近两年才出的,模仿JDBC做的,封装 ...
- Poj 1236 Network of Schools (Tarjan)
题目链接: Poj 1236 Network of Schools 题目描述: 有n个学校,学校之间有一些单向的用来发射无线电的线路,当一个学校得到网络可以通过线路向其他学校传输网络,1:至少分配几个 ...