18118 勇者鬥惡龍
description
有n個頭的惡龍,你希望僱一些騎士把它殺死(即砍掉所有頭)。村里有m個騎士可以僱傭,乙個能力值為x的騎士可以砍掉惡龍
乙個直徑不超過x的頭,且需要支付x個金幣。如何僱傭騎士才能砍掉惡龍的所有頭,且需要支付的金幣最少?注意,乙個騎士只
能砍乙個頭(且不能被僱傭兩次)
輸入格式
多組資料,每組資料的第一行為正整數n和m(1<=n,m<=200000);以下n行每行為乙個整數,即惡龍每個頭的直徑;以下m行每行為
乙個整數,即每個騎士的能力。輸入結束標誌n=m=0;
輸出格式
輸出格式:每組資料,輸出最少花費,無解輸出"loowater is doomed!"
輸入樣例
2 3547
842 15510
0 0輸出樣例
11loowater is doomed!
這題的做法是暴力+貪心。
這道題目的話,如果用的是c++寫,如果你用的是流輸入和輸出,一定會超時,因為這道題目的資料輸入量太過龐大,所以我們改用scanf。
那麼這道題目怎麼做呢?首先因為要使得使用的金幣最少,所以我們對士兵和龍排個順序,從小到大。然後乙個迴圈代表士兵,乙個乙個找符合小於士兵能力值的龍(每次都選第乙個滿足符合條件的士兵),然後用money來記錄花費的金幣,然後繼續找符合下一條龍的。
這題的思想就是貪心,如何使得自身的利益最大化。
**如下:
#include
#include
using
namespace std;
#define ll long long
int n,m;
int dragon[
200005
],soldier[
200005];
intmain()
sort
(dragon+
1,dragon+
1+n)
;sort
(soldier+
1,soldier+
1+m)
;int k=1;
for(
int i=
1; i<=m; i++)}
if(k-
1==n)
printf
("%lld\n"
,money)
;else
printf
("loowater is doomed!\n");
}return0;
}
description
校賽結束了,每乙個參賽選手由3個資料項構成(通過題數,用時分鐘數,姓名),排名按照通過題數排序
通過題數多的排前,同題數的,罰時少的排前。如果題數相同,罰時也相同,而按資料讀取的先後排。
給你n個參賽選手的資料,按排序先後,輸出姓名
輸入格式
第乙個數為n,(n<=500000)
此後,每行乙個參賽選手的資料,通過題數,用時分鐘數,姓名,前兩者為整型數,姓名為字串(不多於20個字元)
輸出格式
姓名排名
輸入樣例
43 5 jon
5 100 smith
3 5 tom
6 95 hel
輸出樣例
helsmith
jontom
提示由於有500000個資料,輸入和輸出務必使用scanf和printf
我想說,老哥,這題是真的nb,這個考到了sort的不穩定性,如果用sort是過不了這題的,所以我們改用stable_sort。
那麼這道題目怎麼寫呢?我們定義乙個結構體,裡面存有ac題數,ac時間和名字。
我們只需要將這個結構體陣列按規定的規則排序就行了,按ac優先、時間其次(少的強)、原本的次序。按這個順序排序就可以得到答案了。
**如下:
#include
#include
using
namespace std;
#define ll long long
typedef
struct
node;
bool
cmp(node x,node y)
node str[
500005];
intmain()
內蒙古 山西 遊記(7 17 7 24) 二周目
一早起來心情還是極差的,因為好不容易放個假,但是從開始到現在十多天 我都沒有試過睡過8 00啊!好了,不吐槽造成這個事實的旅行和 都懂得那個原因 早上還是包頭市內 自由行 開始了愉快的逛街 中午隨便找了一些東西吃。下午終於開始了正式的行程 參觀北方兵器城。這是乙個以軍工軍事為主題的公園,裡面倒是擺著...
程式設計師面試寶典一周目第二天
1.c 11識別的基本資料型別 double float void char int bool wchar t 更廣泛的char型別 long short unsigned sign 2.關於指標引數交換變數 這是乙個有趣的問題。void swap1 int x,int y void swap2 i...
第八周專案二計算加班費
問題及 檔名稱 test.cpp 完成日期 2014年10月16日 版本號 v1.0 問題描述 求加班費 輸入描述 輸入兩個整數分別表示每小時工資和工作時間 程式輸出 乙個數表示小賀的工資 include using namespace std int main int rate,hour,s co...