题意:

R∗C的鱼塘,R,C≤100,多次操作,每次操作两种类型 R*C的鱼塘, R,C\leq 100, 多次操作, 每次操作两种类型
第一种为(a,b),(c,d),第二种为(x,y),第一种操作的两个减去,第二种操作的一个加上 第一种为(a, b), (c,d),第二种为(x,y), 第一种操作的两个减去, 第二种操作的一个加上
定于元组严格小于为a<c,b<d.操作限制条件为,比如两次操作: 定于元组严格小于为a
(a,b),(c,d),(x,y);(a′,b′),(c′,d′),(x′,y′);须保证(a,b)<(c,d)<(a′,b′)<(c′,d′)且(x,y)<(x′,y′) (a, b), (c,d),(x,y); (a', b'), (c',d'),(x',y'); 须保证(a,b)
不同类型的操作没有关系,求最大收益 不同类型的操作没有关系, 求最大收益

分析:

赤果果的dp 赤果果的dp
考虑状态maxv[i][j][k]:=(1,1)到(i,j)选择k个格子的最大获利,minv[i][j][k]:=最小获利 考虑状态maxv[i][j][k]:=(1,1)到(i,j)选择k个格子的最大获利, minv[i][j][k]:= 最小获利
转移先拷贝之前的状态 转移先拷贝之前的状态
maxv[i][j][k]=max(maxv[i−1][j][k],maxv[i][j−1][k]) maxv[i][j][k] = max(maxv[i-1][j][k],maxv[i][j-1][k])
选择(i,j)这个格子的话,maxv[i][j][k]=max(maxv[i][j][k],maxv[i−1][j−1][k−1]+a[i][j]) 选择(i,j)这个格子的话, maxv[i][j][k]=max(maxv[i][j][k], maxv[i-1][j-1][k-1] + a[i][j])
minv转移同理 minv转移同理

代码:

//
//  Created by TaoSama on 2015-12-11
//  Copyright (c) 2015 TaoSama. All rights reserved.
//
//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include <algorithm>
#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iomanip>
#include <iostream>
#include <map>
#include <queue>
#include <string>
#include <set>
#include <vector>using namespace std;
#define pr(x) cout << #x << " = " << x << "  "
#define prln(x) cout << #x << " = " << x << endl
const int N = 1e2 + 10, INF = 0x3f3f3f3f, MOD = 1e9 + 7;int n, m, a[N][N];
int maxv[N][N][N], minv[N][N][N];inline void getMax(int &x, int y) {x = max(x, y);
}inline void getMin(int &x, int y) {x = min(x, y);
}int main() {
#ifdef LOCALfreopen("C:\\Users\\TaoSama\\Desktop\\in.txt", "r", stdin);
//  freopen("C:\\Users\\TaoSama\\Desktop\\out.txt","w",stdout);
#endifios_base::sync_with_stdio(0);int t; scanf("%d", &t);while(t--) {scanf("%d%d", &n, &m);for(int i = 1; i <= n; ++i)for(int j = 1; j <= m; ++j)scanf("%d", &a[i][j]);memset(minv, 0x3f, sizeof minv);memset(maxv, 0, sizeof maxv);for(int i = 0; i <= n; ++i)maxv[i][0][0] = minv[i][0][0] = 0;for(int i = 0; i <= m; ++i)maxv[0][i][0] = minv[0][i][0] = 0;for(int i = 1; i <= n; ++i) {for(int j = 1; j <= m; ++j) {for(int k = 1; k <= min(n, m); ++k) {getMin(minv[i][j][k], min(minv[i - 1][j][k], minv[i][j - 1][k]));getMin(minv[i][j][k], minv[i - 1][j - 1][k - 1] + a[i][j]);getMax(maxv[i][j][k], max(maxv[i - 1][j][k], maxv[i][j - 1][k]));getMax(maxv[i][j][k], maxv[i - 1][j - 1][k - 1] + a[i][j]);}}}int ans = 0;for(int i = 1; i <= min(n, m) >> 1; ++i)getMax(ans, maxv[n][m][i] - minv[n][m][i << 1]);printf("%d\n", ans);}return 0;
}

UVALive 6848 Fishing(dp)相关推荐

  1. 【UVALive 7505】Hungry Game of Ants(DP)

    [UVALive 7505]Hungry Game of Ants(DP) 题目大意: 一条链上n只蚂蚁,第i只蚂蚁的weight为i.每只蚂蚁会选择一个初始方向,向左或向右.两只蚂蚁相遇时,大体重的 ...

  2. 求三角形最大面积(DP)

    求三角形最大面积(DP) 在OJ上奇迹般WA了:WA:70. Why? #include <iostream> #include <string.h> using namesp ...

  3. LeetCode 编辑距离 II(DP)

    1. 题目 给你两个单词 s 和 t,请你计算出将 s 转换成 t 所使用的最少操作数. 你可以对一个单词进行如下两种操作: 删除一个字符 替换一个字符 注意: 不允许插入操作 题目保证有解 示例: ...

  4. LeetCode 1220. 统计元音字母序列的数目(DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个整数 n,请你帮忙统计一下我们可以按下述规则形成多少个长度为 n 的字符串: - 字符串中的每个字符都应当是小写元音字母('a', 'e', 'i ...

  5. LeetCode 265. 粉刷房子 II(DP)

    文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成 k 种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同. 当然,因为市场上不同颜色油 ...

  6. LeetCode 256. 粉刷房子(DP)

    文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成红色.蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其与相邻的两个房子颜色不能相同. 当然,因 ...

  7. LeetCode 1223. 掷骰子模拟(DP)

    1. 题目 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数. 不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 i 的次数不能超过 rollMax[i](i 从 1 开始 ...

  8. LeetCode 1155. 掷骰子的N种方法(DP)

    1. 题目 这里有 d 个一样的骰子,每个骰子上都有 f 个面,分别标号为 1, 2, -, f. 我们约定:掷骰子的得到总点数为各骰子面朝上的数字的总和. 如果需要掷出的总点数为 target,请你 ...

  9. LeetCode 1139. 最大的以 1 为边界的正方形(DP)

    1. 题目 给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量.如果不存在,则返回 0. 示例 1: 输入:grid ...

最新文章

  1. IANA定义的常见服务的端口号列表
  2. C#中保存Gif文件设置透明无效果
  3. 电气工程及其自动化专业英语苏小林翻译_“万千星光 智能点亮” 电气工程及其自动化专业讲座...
  4. linux mysql 主从数据库_linux mysql数据库的主从配置
  5. 数据库表设计索引外键设计_关于索引的设计决策 数据库管理系统
  6. 树莓派服务器证书,【原创】在树莓派3上给Nginx部署免费HTTPS证书
  7. zookeeper之学习(三)zkcli补充
  8. 用JS让文章内容指定的关键字加亮
  9. 第三章 动态规划-基于模型的RL-强化学习理论学习与代码实现(强化学习导论第二版)
  10. 1 Kubernetes快速入门
  11. SpringIOC控制反转之XML配置
  12. Linux 重命名文件和文件夹
  13. Bluedroid 函数分析:BTA_GATTC_Open
  14. 动态改变Input和Textarea值Vue数据没有绑定的解决办法
  15. mysql server has fone away
  16. 电商营销策略介绍,电商营销手段有哪些
  17. 数据同步工具—SeaTunnel简介
  18. Vue.js 技术揭秘
  19. 基于java的学生宿舍公寓管理系统
  20. Tagoram: Real-Time Tracking of Mobile RFID Tags to High Precision Using COTS Devices

热门文章

  1. Android随机验证码的生成
  2. oracle 中几种排序方法
  3. 半监督学习笔记(一):综述,定义,方法
  4. Web前端Lec7-2 - Javascript作用域与闭包
  5. HUE中Oozie执行Sqoop
  6. linux7如何关闭防火墙,Linux下Centos 7如何关闭防火墙?
  7. 动态规划之最长不下降子序列
  8. Google提出用对比学习解决推荐系统长尾问题
  9. 每天一点正能量 - 幸福需要一点点的积累
  10. IDEA--自定义注释模板