時間限制: 1 sec 記憶體限制: 128 mb
提交: 78 解決: 38
[提交][狀態][討論版]
卡門——農夫約翰極其珍視的一條holsteins奶牛——已經落了到「垃圾井」中。「垃圾井」是農夫們扔垃圾的地方,它的深度為d (2 <= d <= 100)英呎。
卡門想把垃圾堆起來,等到堆得與井同樣高時,她就能逃出井外了。另外,卡門可以通過吃一些垃圾來維持自己的生命。
每個垃圾都可以用來吃或堆放,並且堆放垃圾不用花費卡門的時間。
假設卡門預先知道了每個垃圾扔下的時間t(0第一行為2個整數,d 和 g (1 <= g <= 100),g為被投入井的垃圾的數量。
第二到第g+1行每行包括3個整數:t (0 < t <= 1000),表示垃圾被投進井中的時間;f (1 <= f <= 30),表示該垃圾能維持卡門生命的時間;和 h (1 <= h <= 25),該垃圾能墊高的高度。
如果卡門可以爬出陷阱,輸出乙個整表示最早什麼時候可以爬出;否則輸出卡門最長可以存活多長時間。
20 45 4 9
9 3 2
12 6 10
13 1 1
13卡門堆放她收到的第乙個垃圾:height=9;
卡門吃掉她收到的第二個垃圾,使她的生命從10小時延伸到13小時;
卡門堆放第3個垃圾,height=19;
卡門堆放第4個垃圾,height=20。
揹包問題。每個垃圾可以選擇堆/吃。
我們設f[i]表示在i高度時能存活的最大時間。
如果a[i].t(垃圾下落的時間)<=f[i];則有 吃:f[i]+=a[i].e; 堆f[j+a[i].h]=max(f[j+a[i].h],f[j]);
#include #include using namespace std;struct data
;bool cmp(data a,data b)
f[j+a[i].h]=max(f[j+a[i].h],f[j]);
f[j]+=a[i].e;}}
}cout
}
訓練 9 13 訓練賽
a.hdu 6230 乙個合法的子串 s 3n 2 滿足條件即1 2n 1 為以n為回文中心的回文串,n 3n 2為以2n 1為中心的回文串。故我們可以通過尋找回文中心對,來判斷相應合法子串的個數。利用manacher求出每個位置的最長回文半徑,則若i,j滿足條件 i j 則應有 p i geqsl...
訓練賽 詠歎
安師大附中訓練題目 給定乙個1到n的排列a,對其進行氣泡排序 counter 0 while a不是公升序的 counter counter 1 for i 1 to n 1 if a i a i 1 then swap a i a i 1 endifend forend while那麼經過幾輪排序...
訓練賽 浣熊
從前有乙隻可愛的小浣熊居住在美麗的森林裡。他聽說小鸚鵡要旅行到另乙隻鸚鵡家做客,也想邀請朋友們來自己家。為此,小浣熊想建一棟新房子。他找到了一塊比較大的平地,不過這塊地上還是有一些地方不能建屋。不妨把這塊空地看作是由n行m列等大小的正方形格仔組成。現在,小熊已經把不能建房子的地方都標記了出來,他想找...