2018 10 12 冥土追魂

2022-05-02 04:09:07 字數 1350 閱讀 8482

原題

有一天 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_$。

輸出共乙個數,表示在你的**下,misaka最終能拿走呱太的數量。

輸入3 2 4

5 73 2

8 5輸出

17$1≤ n, m ≤ 1000, 1 ≤ k ≤ n x m, 1 ≤ a_ ≤ 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$ 列長(也就是說能取完一行數),上一行所有數的的和小於下一行。

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

原因是

2018 10 12 校內模擬賽

分析 題一 一道模擬題 但模擬也是有很多坑的 寫出一道題後,一定要自己試很多很多很多組不同的資料 比如這道題,幾乎我試的每一組資料都找出了我程式的bug,好險 分析 題二 好題!應該是和松鼠聚會這道題本質一樣的 首先我們需要推導出任意兩個點 x,y a,b 之間能夠到達彼此所需要走的最短步數,由於可...

2018 10 12測試T1 字元處理

傳送門 題目描述 媽媽的工作是英語翻譯,經常和英語字串打交道,今天媽媽給了 tom 乙個只有小寫字母構成的字串,需要 tom 做以下工作 要是連續出現相同的小寫字母,則把他們替換成這個字母的大寫形式,後面緊跟相同字母的個數,並把它之前跟之後的兩段字串調換,例如出現 bcaaaaaaef,則新字串變成...

什麼是介面的冥等性,怎麼實現

在分布式架構 soa 微服務化 裡面,一套系統會由多個子系統進行組成,形成乙個產品。在進行服務的拆分後,會存在子系統之間的呼叫 利用rpc協議完成通訊 系統之間的通訊會存在乙個問題 單體架構不存在 業務在完成乙個方法的呼叫後,單體架構只會出現兩種情況 成功 失敗,但是在分布式架構裡面涉及到遠端通訊,...