原创 IOI2011 ricehub

Task: n塊稻田,每塊稻田一個位置pi,稻田位置可能重疊.現在可以設置一個米倉,一塊稻田運送糧食的代價就是運送的距離,現在給出花費t,求出在t內最多能運送多少糧食. n≤1e5,pi≤1e9,t≤2e15.

原创 BZOJ2795/POI2012 A horrible poem

Task 給出一個由小寫英文字母組成的字符串S,再給出q個詢問,要求回答S某個子串的最短循環節。 如果字符串B是字符串A的循環節,那麼A可以由B重複若干次得到。 n<=500,000, q<=2,000,000. Solution

原创 BZOJ2801/POI2012 Minimalist Security

Task 給出一個N個頂點、M條邊的無向圖,邊(u,v)有權值w(u,v),頂點i也有權值p(i), 並且對於每條邊(u,v)都滿足p(u)+p(v)>=w(u,v)。 現在要將頂點i的權值減去z(i),其中0<=z(i)<

原创 BZOJ2796/POI2012 Fibonacci Representation

Task Fib數列0,1,1,2,3,5,8,13,21。 給出一個數字,用FIB數列各項加加減減來得到。例如 10=5+5 19=21-2 求出通過加減得到K的最少項數. 1<=K<=10^17. Solution

原创 BZOJ1531/POI2005 Bank notes

裸的多重揹包,利用二進制進行優化: 假設有12枚面額爲3的硬幣,可以把它轉化爲 面值爲3,6,12,15的硬幣分別1枚.這樣就把物品總數減少到log件. #include<cstdio> #include<cstrin

原创 BZOJ2794/POI2012 Cloakroom

Task 有n件物品,每件物品有三個屬性a[i], b[i], c[i] .(a[i]<b[i]) 再給出q個詢問,每個詢問由非負整數m, k, s組成,問是否能夠選出某些物品使得: 1. 對於每個選的物品i,滿足a[i]<=m且b

原创 BZOJ153/POI2005 A Journey to Mars

確定了起點和方向之後,旅行的過程就確定了,到達i點的花費<=到i點之間的油料數量就是題目的限制條件. 由於是繞圈問題,我們可以把序列複製相接,轉化成序列上的問題. 設sum[j] 表示到j 之前所得油料數量dis[j]

原创 BZOJ2798/POI2012 Squarks

Task 設有n個互不相同的正整數{X1,X2,…Xn},任取兩個Xi,Xj(i≠j),能算出Xi+Xj。現在所有取法共n*(n-1)/2個和,要你求出X1,X2,…Xn。 3<=n<=300, 每個正整數不超過10^8 So

原创 BZOJ1529/POI2005 Piggy banks

根據圖中的信息,可以構造出一棵基環外向樹.每個節點指向存放自己鑰匙的節點.對於每一個連通塊,其中必定會出現一個環,只要將環上任意一個存錢罐打破,那麼這整個聯通塊中的所有存錢罐都能打開了. 因此答案就是構圖後聯通塊的個數. #includ

原创 BZOJ1526/POI 2005 Bankomat

所有可能的輸入方案一共有10000種,我們可以對每一個進行檢驗.對每個錄像求出對應的f[i][k]表示第i個字符以後第一個字符k的位置,預處理出f數組之後就可以對每個數字進行O(1)檢驗了. 由於無法同時求出每個串的f數組,因此

原创 BZOJ2798/POI 2012 Bidding

Task A和B兩個人在玩一個遊戲,這個遊戲是他們輪流操作一對整數(x,y)。 初始時(x,y)=(1,0),可以進行三種操作: 1. 將(x,y)變成(1,x+y)。 2. 將(x,y)變成(2x,y)。 3. 將(x

原创 BZOJ2800/POI2012 Leveling Ground

Task 給出n個整數X_1,X_2,…X_n,再給出兩個正整數a、b,可以進行下面四種操作: 1. 選擇正整數l,r (1<=l<=r<=n),將X_l,X_{l+1},…,X_r都加上a。 2. 選擇正整數l,r (1<=l<=

原创 BZOJ1527/POI 2005 Point

相似點集有一個性質,重心在點集中的位置是相同的,可以通過點集的重心判斷現點集是否能還原成原點集. 如果兩個點集的點數不同,肯定是不相似的. 移動:直接根據重心的位置,確定現點集的移動方式,使得兩個點集的重心重合. 縮放:根據兩

原创 BZOJ1537/POI2005 The Bus

假設dp[i][j]表示在(i,j)位置能夠接到的最多乘客數量,我們會發現很多的狀態是無效的,因此只要記錄到達站點的狀態.由於只能向北或向東走,只可能通過西南的站點到達(i,j),也就是所有滿足a<=i&&b<=j的站點(a,b).這樣就

原创 BZOJ1539/POI2005 Double-row

由於數據保證有一組方案達到目標,那麼相同高度的士兵個數不超過2. 每列交換的次數最多是1,多次交換是無意義的. 那麼假如身高相同的兩個士兵在同一行中,它們所在的列數a,b中一定有一列要進行交換,且只有一列. 那麼假如身