SCAU計算智慧型二周目

2021-10-03 18:53:24 字數 2179 閱讀 7011

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...