【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$ 列长(也就是说能取完一行数),上一行所有数的的和小于下一行。

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

原因是

posted @ 2018-10-12 23:18  大本营  阅读(366)  评论(0编辑  收藏  举报