【2018.10.12】冥土追魂
原题
题目描述
有一天 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】冥土追魂相关推荐
- Wannafly挑战赛26: B. 冥土追魂(思维题)
链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 题目描述 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misa ...
- Wannafly挑战赛26-B 冥土追魂
地址:https://www.nowcoder.com/acm/contest/212/B 思路:对于行列选取,是选择所有行中的最大值的最小值,当是并不能用贪心来做,例如 2 2 2 7 8 1 9 ...
- nowcoder (牛客)Wannafly挑战赛26 B: 冥土追魂 (思维)
链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言104 ...
- wannafly挑战赛26 B 冥土追魂 (思维+排序)
大致题意 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏- Misaka和Kuroko在一个 n x m 的棋盘上玩游戏,每个格子上都放着一些呱太.游戏共进行 k 回合,每一回合 ...
- 20172319 2018.10.12《Java程序设计教程》第6周课堂实践(补写博客)
20172319 2018.10.12 <Java程序设计教程>第6周课堂测验 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...
- Wannafly挑战赛26 B.冥土追魂 贪心
链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 题目描述 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misa ...
- Wannafly挑战赛26:B冥土追魂(模拟?贪心?暴力?)
题目描述 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misaka和Kuroko在一个 n x m 的棋盘上玩游戏,每个格子上都放着一些呱太.游戏共进行 k 回合,每一 ...
- Wannafly挑战赛26 B 冥土追魂(暴力)
题意:链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misaka ...
- Wannafly挑战赛26 B冥土追魂
链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言104 ...
最新文章
- 定时自动按键软件_[按键精灵手机版教程]QUI界面也可以如此炫酷
- 首位植入脑机接口的患者通过Twitter发布信息
- Putty基础教程之(一).入门命令学习及编写HTML
- linux日志使用方法,Linux 日志终极指南
- python所有算法_Python实现的各种常见分布算法示例
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- Django基础—— 19.Form
- 斯特林数-斯特林反演
- HDU1198-----并查集
- VS清理中间文件bat脚本
- 广告关闭php,电脑右下角的广告怎么去掉
- binder机制原理android,Binder机制1---Binder原理介绍
- 比较全的OA系统功能模块列表
- 微信小程序开发(十五)小程序使用scrollview实现滚动导航栏
- 搜狐新闻文本分类数据集
- java forward方法_JAVA的服务重定向:使用forward()方法转发请求和使用sendRedirect()方法重定向的区别...
- 拍摄完的图片怎么添加水印?这两个方法简单又有效
- Python量化交易平台:JQData | API使用文档(转)
- 剑指offe面试题8 旋转数组的最小数字 (java实现)
- eclipse新建javaweb项目——javaweb系列(一)