原题

题目描述

有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏....

Misaka和Kuroko在一个 $n * m$ 的棋盘上玩游戏,每个格子上都放着一些呱太。游戏共进行 $k$ 回合,每一回合 Kuroko会选有呱太的一行 i,在这之后Misaka会选择一列 $j$ ,并拿走格子 $(i, j)$ 上的所有呱太,Misaka希望自己拿走的呱太尽可能多,而Kuroko不想让Misaka拿走很多呱太,所以她希望拿走的呱太尽可能少。

在一旁围观的恒温死神希望预测结果,请你预测在双方都采取最优策略的情况下,Misaka最终能拿走呱太的数量。

输入描述

第一行三个数 $n, m, k$。
接下来 $n$ 行,每行 $m$ 个数,第 $i$ 行第 $j$ 个数表示棋盘第 $i$ 行第 $j$ 列上的呱太数量 $a_{i,j}$。

输出描述

输出共一个数,表示在你的预测下,Misaka最终能拿走呱太的数量。

示例1

输入

3 2 4
5 7
3 2
8 5

输出

17

备注

$1≤ n, m ≤ 1000, 1 ≤ k ≤ n x m, 1 ≤ a_{i,j} ≤ 10^9$

题解

讲道理,这题现场WA的人可真多。

看懂题意,第一眼就能看出来是个贪心。

因为先选的人要让后取的人取到的数尽可能小,很容易想到每次取 剩余的数的最大值 最小的一行。

但直接交上去却WA了一波,一时没想通为啥错了。

后来找到了一组 hack 数据:

2 3 3

50 50 50

100 2 1

按照上述贪心做法的结果是150,即先选的人每次钦定第一行。

但如果三次都钦定第二行的话结果是103,反而更小。

为什么呢?第二行有个100挡着,导致第二行的数都不会被取到,而第二行剩下的两个数都是非常小的,也就是说 前面取的数大 不能决定后面取的数的大小。

也就是说取数操作对这一行有后效性,那就不能直接贪心了。

那能dp吗?$k\le 1000000$,二维dp早就上天了。

翻来覆去好像只能贪心啊……

那可能要推点结论。

回顾一下,由于当先选的人钦定一行时,后选的人肯定会选这行最大的那个数,

因此把每行的数排个序,每行肯定都是从前往后选的。

然后针对上面的 hack 数据,推出一个不知道对不对的结论:当$k\ge m$时,把一行的数选完,一定比不选完更优。

直观感觉是这样就解决一行的后效性了。

既然这样,为了让后选的人选的数的和尽量小,先选的人肯定要根据每行的和从小到大选。

那为什么这样是正确的呢?

考虑只要两行数的情况,并假设$k\ge$ 列长(也就是说能取完一行数),上一行所有数的的和小于下一行。

那取完上一行肯定是最优的。

原因是

转载于:https://www.cnblogs.com/scx2015noip-as-php/p/9781252.html

【2018.10.12】冥土追魂相关推荐

  1. Wannafly挑战赛26: B. 冥土追魂(思维题)

    链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 题目描述 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misa ...

  2. Wannafly挑战赛26-B 冥土追魂

    地址:https://www.nowcoder.com/acm/contest/212/B 思路:对于行列选取,是选择所有行中的最大值的最小值,当是并不能用贪心来做,例如 2 2 2 7 8 1 9 ...

  3. nowcoder (牛客)Wannafly挑战赛26 B: 冥土追魂 (思维)

    链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言104 ...

  4. wannafly挑战赛26 B 冥土追魂 (思维+排序)

    大致题意 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏- Misaka和Kuroko在一个 n x m 的棋盘上玩游戏,每个格子上都放着一些呱太.游戏共进行 k 回合,每一回合 ...

  5. 20172319 2018.10.12《Java程序设计教程》第6周课堂实践(补写博客)

    20172319 2018.10.12 <Java程序设计教程>第6周课堂测验 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...

  6. Wannafly挑战赛26 B.冥土追魂 贪心

    链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 题目描述 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misa ...

  7. Wannafly挑战赛26:B冥土追魂(模拟?贪心?暴力?)

    题目描述 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misaka和Kuroko在一个 n x m 的棋盘上玩游戏,每个格子上都放着一些呱太.游戏共进行 k 回合,每一 ...

  8. Wannafly挑战赛26 B 冥土追魂(暴力)

    题意:链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misaka ...

  9. Wannafly挑战赛26 B冥土追魂

    链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言104 ...

最新文章

  1. 定时自动按键软件_[按键精灵手机版教程]QUI界面也可以如此炫酷
  2. 首位植入脑机接口的患者通过Twitter发布信息
  3. Putty基础教程之(一).入门命令学习及编写HTML
  4. linux日志使用方法,Linux 日志终极指南
  5. python所有算法_Python实现的各种常见分布算法示例
  6. Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
  7. Django基础—— 19.Form
  8. 斯特林数-斯特林反演
  9. HDU1198-----并查集
  10. VS清理中间文件bat脚本
  11. 广告关闭php,电脑右下角的广告怎么去掉
  12. binder机制原理android,Binder机制1---Binder原理介绍
  13. 比较全的OA系统功能模块列表
  14. 微信小程序开发(十五)小程序使用scrollview实现滚动导航栏
  15. 搜狐新闻文本分类数据集
  16. java forward方法_JAVA的服务重定向:使用forward()方法转发请求和使用sendRedirect()方法重定向的区别...
  17. 拍摄完的图片怎么添加水印?这两个方法简单又有效
  18. Python量化交易平台:JQData | API使用文档(转)
  19. 剑指offe面试题8 旋转数组的最小数字 (java实现)
  20. eclipse新建javaweb项目——javaweb系列(一)

热门文章

  1. 安装Win7 正在启动Windows 卡死
  2. 计算机思维在当今社会的意义,当今社会为什么需要独立思考
  3. 刘强东开课:京东管人只用四张表
  4. 企业邮箱哪家好,什么企业邮箱安全稳定好用?
  5. ChatGPT使用指南:求职外企简历中英文转换
  6. 利用Gis绘制 直方图和趋势分析图
  7. 定制属于你的个性化域名邮箱
  8. (25)打鸡儿教你Vue.js
  9. 需不需要学习编程,成都编程培训怎样?——网优谷
  10. 学不可以已--我一年Java之路的回顾,反思以及展望(上)