NOIP複習篇
打地鼠是這樣的一個遊戲:地面上有一些地鼠洞,地鼠們會不時從洞裡探出頭來很短時間後又縮回洞中。玩家的目標是在地鼠伸出頭時,用錘子砸其頭部,砸到的地鼠越多分數也就越高。
遊戲中的錘子每次只能打一隻地鼠,如果多隻地鼠同時探出頭,玩家只能通過多次揮舞錘子的方式打掉所有的地鼠。你認為這錘子太沒用了,所以你改裝了錘子,增加了錘子與地面的接觸面積,使其每次可以擊打一片區域。如果我們把地面看做m*n的方陣,其每個元素都代表一個地鼠洞,那麼錘子可以覆蓋R*C區域內的所有地鼠洞。但是改裝後的錘子有一個缺點:每次揮舞錘子時,對於這R*C的區域中的所有地洞,錘子會打掉恰好一隻地鼠。也就是說錘子覆蓋的區域中,每個地洞必須至少有1只地鼠,且如果某個地洞中地鼠的個數大於1,那麼這個地洞只會有1只地鼠被打掉,因此每次揮舞錘子時,恰好有R*C只地鼠被打掉。由於錘子的內部結構過於精密,因此在遊戲過程中你不能旋轉錘子(即不能互換R和C)。
你可以任意更改錘子的規格(即你可以任意規定R和C的大小),但是改裝錘子的工作只能在打地鼠前進行(即你不可以打掉一部分地鼠後,再改變錘子的規格)。你的任務是求出要想打掉所有的地鼠,至少需要揮舞錘子的次數。
Hint:由於你可以把錘子的大小設定為1*1,因此本題總是有解的。
相關推薦
NOIP複習篇
打地鼠是這樣的一個遊戲:地面上有一些地鼠洞,地鼠們會不時從洞裡探出頭來很短時間後又縮回洞中。玩家的目標是在地鼠伸出頭時,用錘子砸其頭部,砸到的地鼠越多分數也就越高。 遊戲中的錘子每次只能打一隻地鼠,如果多隻地鼠同時探出頭,玩家只能通過多次揮舞錘子的方式打掉所有的地鼠。你認為這錘子太沒用了,所以你
NOIP複習篇———動態規劃
今年是國際數學聯盟確定的“2000——世界數學年”,又恰逢我國著名數學家華羅庚先生誕辰90週年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的一個好朋友XZ也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目: 設有一個長度為N的數字串,要求選手使用K個乘號將它分成K
NOIP複習模擬賽day1
首先先bb一下day1的題目名字怎麼都這麼鬼才...... 1.兩情 (sweethearts.pas/c/cpp) 【問題描述】小 W 將要去和小 K 約會啦!但聰(ao)明(jiao)的小 K 並不想讓小 W 那麼容易知道他們的約會地點。於是小 W 收到了一條資訊:“給定兩個數的和
NOIP複習模擬賽day5
前言 今天的題目真TM的♂...... 題目 1.小半 (half.pas/c/cpp) 【問題描述】 “釋然、慵懶、盡歡, 時間風乾後你與我再無關, 沒答案,怎麼辦,看不慣自我欺瞞。” 燈火闌珊,釋然的少年寫下了n個正整數,它們的乘積為p。 月色旖旎,少年忽然想到,如果把p再
設計模式應試複習篇(九)——11種行為型模式的類圖結構(7~11種)
7、觀察者模式 1)觀察者模式包含如下角色 Subject:目標又稱為主題,它是指被觀察的物件。在目標中定義了一個觀察者集合,一個觀察目標可以接受任意數量的觀察者來觀察,它提供一系列方法來增加和刪除觀察者物件,同時它定義了通知方法notify()。目標類可以是介面,也可以是抽象類或具體類。
設計模式應試複習篇(八)——11種行為型模式的類圖結構(1~6種)
1、職責鏈模式 1)職責鏈模式包含如下角色: Handler:抽象處理者角色,它定義了一個處理請求的介面,一般設計為抽象類,由於不同的具體處理者處理請求的方式不同,因此在其中定義了抽象請求處理方法。因為每一個處理者的下家還是一個處理者,因此在抽象處理者中定義了一個抽象處理者型別的物件(如結構
設計模式複習篇——單例模式
單例模式的的使用場景:建立比較耗資源的、全域性呼叫的類。 單例特點: 1.構造方法私有化。 2.有一個靜態的方法用來獲取物件或者一個靜態物件。 3.執行緒安全,確保單例類物件有且只有一個,尤其在多執行緒環境下。 4.確保反序列化時不會重構物件 六種單例模式的實現: 1.餓漢模式
NOIP複習提綱(持續更新)
1.LCA 預處理(O(nlogn)) 單次查詢O(logn) NKOJ2447 #include<cstdio> #include<cmath> #include<iostream> using namespace s
設計模式應試複習篇(七)——舉例說明11種行為型模式的適用情景
1、職責鏈模式 很多情況下,在一個軟體系統中可以處理某個請求的物件不止一個,比如我們在學校提交請假的申請表,輔導員、系主任、院長和校長都可以處理申請表,他們可以構成一條處理申請表的鏈式結構,申請表沿著這條鏈進行傳遞,這條鏈就稱為職責鏈。職責鏈可以是一條直線、一個環或者一個樹
noip複習:聯賽常用模板
快速排序: #include<bits/stdc++.h> using namespace std; #define maxn 100000 #define read(x) scanf("
SVM中對偶問題的理解——複習篇
近段複習到SVM,對SVM中的對偶問題又進行了進一步的理解: 對於為什麼要引入對偶問題: 這涉及到凸優化的知識:首先是我們有不等式約束方程,這就需要我們寫成min max的形式來得到最優解。而這種寫成這種形式對x不能求導,所以我們需要轉換成max min的形式,這時候,x
理解:L1正則先驗分佈是Laplace分佈,L2正則先驗分佈是Gaussian分佈——複習篇
L1、L2正則化來源推導 L1L2的推導可以從兩個角度: 帶約束條件的優化求解(拉格朗日乘子法) 貝葉斯學派的:最大後驗概率 1.1 基於約束條件的最優化 對於模型權重係數w的求解釋通過最小化目標函式實現的,也就是求解: 首先,模型的複雜度可以用VC來衡量。通
資料結構複習篇:用棧實現遞迴
也許大家會疑問:複習完棧應該到隊列了吧。我開始也是這樣想的,但用棧實現遞迴,是一個難點。說實話,我以前學習的時候,就在這一處卡住了,當時我煩躁了好幾天,但可能由於突然被什麼東西轉移了注意力,所以就這樣跳過去了。不知道用棧實現遞迴,也確實不大影響後面的學習,但我可以肯定,如果你
【NOIp複習】圖論演算法模板合集
最小生成樹 Kruskal //Kruskal struct edge{ int from,to,val; }e[maxn]; bool operator < (const
關於Java基礎的複習總結(一)入門篇
千里之堤,毀於雙十一。 主題內容源於當初學Java的幾個筆記本。週末整理換季衣物的時候找到的。重新整理一遍,上傳儲存下來,也是對基礎的複習總結。同時紀念當年初學Java的日子。 1、java發展史 1995誕生於sun公司,被oracle公司收購 開源,免費的 1996年,推出jdk1
NOIP複賽複習(十五)動態規劃鞏固與提高
經典例題:數字金字塔(Luogu 1216) 寫一個程式來查詢從最高點到底部任意處結束的路徑,使路徑經過數字的和最大。每一步可以走到左下方的點也可以到達右下方的點。 我們現在這裡討論搜尋如何實現: 狀態:目前在第x行第y列
NOIP複賽複習(十四)字串演算法鞏固與提高
一、Trie樹 1.定義: 通過字串建成一棵樹,這棵樹的節點個數一定是最少的。例如:4個字串"ab","abc","bd","dda"對應的trie樹如下: 其中紅色節點表示存在一個字串是以這個點結尾的。 一個性質:在樹上,兩個點u,
NOIP複賽複習(十三)圖論演算法鞏固與提高
一、圖的儲存 1、鄰接矩陣 假設有n個節點,建立一個n×n的矩陣,第i號節點能到達第j號節點就將[i][j]標記為1(有權值標記為權值), 樣例如下圖: /*無向圖,無權值*/ i
NOIP複賽複習(十二)數論演算法鞏固與提高
一、數論 1.數 整數、自然數(大於等於0的整數)、正整數(大於0的整數)、負整數、非負整數、非正整數、非零整數、奇數偶數。 2.整除性 設a,b∈Z,如果存在c∈Z並且a=bc,則
NOIP複賽複習(十一)基礎演算法鞏固與提高
一、倍增演算法: 定義:用f[i][j]表示從i位置出發的2j個位置的資訊綜合(狀態) 一個小小的問題:為什麼是2j而不是3j,5j,…?因為,假設為kj,整個演算法的時間複雜度為(k-1)logk,當k=2時,時間複雜度最小。 這個演算法的三個應用: