p1315構建雙塔 dp

2022-05-26 22:09:09 字數 1200 閱讀 9348

from easthong

☆構建雙塔

描述 description

2023年9月11日,一場突發的災難將紐約世界**中心大廈夷為平地,mr. f曾親眼目睹了這次災難。為了紀念「9?11」事件,mr. f決定自己用水晶來搭建一座雙塔。

mr. f有n塊水晶,每塊水晶有乙個高度,他想用這n塊水晶搭建兩座有同樣高度的塔,使他們成為一座雙塔,mr. f可以從這n塊水晶中任取m(1≤m≤n)塊來搭建。但是他不知道能否使兩座塔有同樣的高度,也不知道如果能搭建成一座雙塔,這座雙塔的最大高度是多少。所以他來請你幫忙。

給定水晶的數量n(1≤n≤100)和每塊水晶的高度hi(n塊水晶高度的總和不超過2000),你的任務是判斷mr. f能否用這些水晶搭建成一座雙塔(兩座塔有同樣的高度),如果能,則輸出所能搭建的雙塔的最大高度,否則輸出「impossible」。

輸入格式 input format

輸入的第一行為乙個數n,表示水晶的數量。第二行為n個數,第i個數表示第i個水晶的高度。

輸出格式 output format

輸出僅包含一行,如果能搭成一座雙塔,則輸出雙塔的最大高度,否則輸出乙個字串「impossible」。

樣例輸入 sample input

樣例輸出 sample output

** source

某校noip模擬題

存**到慢慢讀....

1 #include2 #include3 #include4 #include5 #include6

using

namespace

std;

7intn;8

int a[110]={};

9int f[110][2010]={};

10int sum[110]={};

11int sumn=0;12

intmain()

19for(int i=0;i<=sumn;i++)

22 f[0][0]=0;23

for(int i=1;i<=n;i++)

29if(a[i]>j&&f[i-1][a[i]-j]>-1)32

if(j+a[i]<=sumn&&f[i-1][a[i]+j]>-1)35

}36}37

if(f[n][0]>0)40

else

43return0;

44 }

view code

P1315 觀光公交

風景迷人的小城y 市,擁有n 個美麗的景點。由於慕名而來的遊客越來越多,y 市特意安排了一輛觀光公交車,為遊客提供更便捷的交通服務。觀光公交車在第 0 分鐘出現在 1號景點,隨後依次前往 2 3 4 n 號景點。從第 i 號景點開到第 i 1 號景點需要 di 分鐘。任意時刻,公交車只能往前開,或在...

洛谷P1315 觀光公交

題目 模擬 貪心 一開始看到10 5的資料,以為要klogn就敲了個線段樹上去 結果沒考慮後效性,只過了3個點 正解 一開始先處理出每一站的到站時間是對的,而隨著修改到站時間的改變不一定滿足字首關係 假設在某一站有人很晚才出發,那不管先前改變了多少後面的到站時間都是不變的 綜上 還需要維護修改一段距...

洛谷P1315 觀光公交

題目 如果沒有氮氣加速器,則該題為乙個模擬題。但是本題存在氮氣加速器,所以我們需要考慮貪心策略。題目要求我們使所有人等待的時間最短,因此我們需要算出每段路徑 路徑即為車站之間的 d 對時間的貢獻多少,取其中最多的減去就好了。首先我們需要求出每個車站最遠向右影響到什麼地方,然後算出這段地方的影響總人數...