原创 ZOJ 3684 Destroy

首先中心應當位於整棵樹的直徑上,先從任意點開始搜一條最長路徑,該路徑的終點必是直徑的一段,以上結論由反證可推出矛盾。再從端點開始深搜可得直徑,遍歷該路徑即可得到中心點所在。接下來以中心點爲根節點,開始DP即可。 #include <m

原创 ZOJ 3689 D Digging

雖然一看就是DP問題,但是每個Coffin是唯一的,修了一次就不能再修了。這樣更新每個時間對應的最高賞金時要考慮那些Coffin還沒修的問題,這就很麻煩了。但事實上,對於一個最優的安排中修建的Coffin,是有嚴格的時間先後順序的。 考慮

原创 騰訊編程馬拉松複賽第三場 1 & 2 & 5

調完了ZOJ月賽的E題,忽然發現騰訊的比賽已經開始了。不過因爲之前的比賽都是1AC帶倆不是WA就是TLE的,倒也沒怎麼着急。第一題貌似也沒那麼赤裸裸地送分了,但是整體的難度倒是降低了不少,最後一次來個小小的安撫麼。一場初賽加三場複賽,都十

原创 ZOJ 3593 One Person Game

令c = a+b, d = A-B,則等價於求{|x|+|y| | ax+by=d || ax+cy=d || bx+cy=d}。對於ax+by=d,用擴展歐幾里得算法求得axx+byy=gcd(a,b),是否有解可由d是否爲gcd的倍數

原创 ZOJ 3725 Painting Storages

採用遞推:當N<M時,必不存在滿足條件的方法,因而結果爲0;N=M時,方案數恰好爲1。N>M時,若1到N-1滿足條件,則N可以任意染色,方案數爲C(N-1)*2;否則,必有1到N-M-1不滿足條件,N-M爲藍,N-M+1到N-1爲紅,這時

原创 關於STL中map的key

某些時候可能要用一個數組作爲map的key,這時候有一些細節需要注意。 struct key { int a[5]; }; 首先,用自定義類型做key時,要重載<操作符。格式如下(括號外的const少了會報錯的): bool op

原创 CDOJ 1638 Easy Problem

Problem:http://www.acm.uestc.edu.cn/problem.php?pid=1638 用一個二維數組表示到達某曾某個樓梯口所用的時間,然後從底層向高層DP即可。對每個左邊的樓梯口,上到更高一層後,可以送完所有物

原创 ZOJ 3681 E - Cup 2

又是DP問題,又是內存不夠,可惜這道題卻能用map過掉。將M分解成a*b,則dp[M]=min(dp[a]*(b/2+1), dp[b]*(a/2+1))。(a|b)/2+1是level1中最少支持意大利的組數。 #include <

原创 ZOJ 3687 B The Review Plan I

因爲限制數M比較小,可以直接對不滿足條件的情況進行搜索。若某次搜索的結果中有違反了k個限制,則這樣的排列數爲(n-k)!,再根據k的奇偶性,判斷是應當加還是減。當k爲0時顯然要取加號,於是k爲奇時取減號。 #include <stdi

原创 ZOJ 3686 A A Simple Tree Problem

開始想了一個錯誤的算法,對每個節點保存它的子樹中的節點數目和其中爲一的數目,操作某節點時向上更新其祖先的數據(log N),查詢時直接輸出。當時忽略了操作同時也需要更新後代的數據,這樣的最壞複雜度是N,肯定是不行的。但直接交上去不是WA而

原创 ZOJ 3607 Lazier Salesgirl

簡單題,線性遍歷一遍就好。但要注意如果ave(p)計算到第i個顧客爲止,那麼第i+1個顧客來到時必須睡着。 #include <stdio.h> #include <memory.h> int c[1001]; int sum[10

原创 ZOJ 3682 E - Cup 3

二維DP,用a[i][j]表示前i個廣場容納j個球迷的方案數,這裏的球迷或爲Barcelona,或爲Madrid。由於題目保證兩隊人數與廣場總容量相等,則可選擇人數較少的隊DP。不過這樣的話用來存儲中間結果的二維數組過大,爲200*100

原创 ZOJ 3678 The Toy of Flandre Scarlet

題目大意是有L*W*H個1*1*1的小方塊,堆成長L,寬W,高H的玩具。每個小方塊上有一個數字,每次我們可以讓某相鄰的兩個小方塊,同時加上或減去一個相同的數字。問經過若干步後能不能使所有數字均爲0。 顯然可以轉化成圖來考慮。假設A, B,

原创 ZOJ Monthly March 2013 E & H

這是第二次參加ZOJ月賽吧,兩次都是爲了準備校賽。第一次也是去年的這個時間,三個人去了機房,用個把小時看完題後,走了兩個。我多呆了半個小時,終於忍受不了機房的鍵盤鼠標聲和題目的複雜程度,也離開了。在刷這次月賽前,做了一下上次月賽的題目,能

原创 ZOJ 3688 C The Review Plan II

據說是錯排公式的擴展,叫做限位排列。遞推公式如下: 但是因爲對1000000007取了模,所以其中的除法不一定能除盡,當然在數學意義上是能夠除盡的。可以用費馬小定理去掉除法: 若P爲質數,則 a^p = a mod P,即 a^