border="0" width="330" height="86" src="">
為了解決日漸增長的人口問題, mstdream 率領乙個小組到達火星開發新的居住地。地球到火星有一架太空電梯,電梯一次最多承載 2 個人,最大載重為 k, 小組一共有 n 個人,第 i 個人重量為 vi 。人們排成一隊等候上電梯。
上電梯的規則是這樣的:
1. 如果電梯是空的,下乙個人可以上去
2. 如果電梯有乙個人,並且下乙個人上電梯不會超重,下乙個人可以上去,否則太空電梯會將前乙個人載到火星後返回接下乙個人
3. 如果電梯有兩個人,下乙個人不能上去。
由於管理出現了失誤! 人們排隊的順序發生了變化.假設人們的順序是未知的, mstdream 想知道,太空電梯最多會跑多少趟?
第一行兩個數 n,k第二行開始 n 行,每行乙個數代表 vi
輸出乙個數,代表最壞情況下太空電梯需要跑的趟數
sample input
6 6
1
2
3
3
4
5
sample output
5
hint
最壞情況下排隊的順序如下:(2)(5 1)(3)(4)(3)
50% n <= 10談一談我的想法 :100% n <= 100000, k <= 1000000000, vi <= k
這種題在考場上一定要寫對拍, 這種簡單題自己是很容易考慮掉一些情況的, 這是我在考場上血的教訓, 由於情況考慮掉了只有30分, 本來單場可以拿很高的分的。說說做法吧, 對於每乙個數隻需要找到與它相加大於 k 的最小數就可以了, 弄個佇列可以很輕鬆的實現。
題解 :
對於讀入的序列直接 sort 一遍, 從頭掃直接找隊尾的元素, 當前最尾的元素滿足與之相加大於 k, 也就是 a[head] + a[tail] > k, 就將隊尾數加到那一位數的旁邊, 如果不滿足就將其加入尾佇列, 因為其無論在什麼位置都不會影響最優答案。最後統計結束。
下面貼出** :
同志們一定要考慮在統計答案時, 佇列裡還有乙個數時要加一。 不然只有三十分。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
inline
int read()
while(ch >= '0' && ch <= '9')
return i * f;
}const
int maxn = 1e5 + 10;
struct point ;
point a[maxn];
long
long k, hou[maxn], now[maxn];
int n, tailh, tailn, ans;
inline
bool comp(const point & x, const point & y)
inline
void solve()
else
if(l + now[i] > k)
l = now[i], c = 1, ++ans;
if(c == 2)
l = 0, c = 0, ++ans;
}if(c > 0) ++ans;
}int main()
else
}else
hou[++tailh] = i;
}else
}int ow = tou;
while(true)
for(int i = 1; i <= tailh; ++i)
now[++tailn] = a[hou[i]].w;
solve();
cout
<< ans;
}
是不是該犒勞自己一曲**呢:just the way you are - bruno marsborder="0" width="330" height="86" src="">
有什麼意見,盡情發表吧。
NOIP2017模擬 太空電梯
2017.8.29 t1 1952 樣例資料 輸入6 6 1 2 3 3 4 5 輸出 分析 基本上是用貪心,就是找正好一胖一瘦沒法一起進電梯的一前一後,如果瘦的無法滿足,就和另外乙個瘦子一起把電梯人數擠滿 注意最後只剩乙個人時也要搭一次電梯 include include include incl...
NOIP模擬 簡單 T1 舉辦比賽
border 0 width 330 height 86 src mstdream 舉辦了一場搶答比賽!這場搶答比賽有 n 支隊伍參賽,第 i 支隊伍將會被分配乙個隨機值 si,每乙個問題,si 值較小的隊伍會擁有優先發言權,於是 mstdream 想知道所有隊伍最小的 si 值,以便統計 但是,由...
T1 奇怪的電梯(BFS)
題目背景 呵呵,有一天我做了乙個夢,夢見了一種很奇怪的電梯。大樓的每一層樓都可以停電梯,而且第 i 層樓 1 i n 上有乙個數字 ki 0 ki n 電梯只有四個按鈕 開,關,上,下。上下的層數等於當前樓層上的那個數字。當然,如果不能滿足要求,相應的按鈕就會失靈。例如 3 3 1 2 5 代表了 ...