鬥惡龍問題

2022-09-13 21:36:11 字數 748 閱讀 4015

問題:有一條 n 個頭的惡龍,需要僱一些騎士把它殺死(砍掉所有頭)。現有 m 個騎士可僱傭,乙個能力值為 x 的騎士可以砍掉惡龍乙個直徑不超過 x 的頭,且需要支付 x 個金幣。求如何僱傭騎士才能砍掉惡龍的所有頭,且需要支付的金幣最少。(注,乙個騎士只能砍乙個頭)

要求:輸入格式:輸入包含多組資料。每組資料的第一行為正整數 n 和 m(1<=n,m<=20000);以下n行每行為乙個整數,即惡龍每個頭的直徑;以下m行每行為乙個整數,即每個騎士的能力。輸入結束標誌為n=m=0。 輸出格式:對於每組資料,輸出最少花費。若無解,輸出「loowater is doomed!」。

分析:把僱傭的騎士按照能力大小從小到大排序,所有頭按照直徑從小到大排序,乙個乙個砍,若騎士不能砍掉當前需要砍的頭,就不僱傭。

#include#include

using

namespace

std;

const

int maxn=20000+5; //

定義乙個常整型變數,變數的值不能改變

inta[maxn], b[maxn];

intmain()

if(curprintf(

"loowate is doomed!\n");

else

printf(

"%d\n

",cost);

}return0;

}

勇者鬥惡龍

一 勇者鬥惡龍 你的王國有一條n個頭的惡龍,你希望顧一些騎士把他殺死 即砍掉所有的頭 村中有m個騎士可以僱傭,乙個能力值位x的騎士可以砍掉惡龍乙個直徑不超過x的頭,且需要支付x個金幣。如何僱傭騎士才能砍掉惡龍的所有的頭,且需要支付的金幣最少?注意,乙個騎士只能砍乙個頭 且不能被僱傭兩次 輸入格式 輸...

勇者鬥惡龍

你的王國裡有一條n個頭的惡龍,你希望僱傭一些騎士把它殺死 砍掉所有的頭 村里有m個騎士可以僱傭,乙個能力值為x的騎士可以砍掉惡龍乙個致敬不超過x的頭,且需要支付x個金幣。如何僱傭騎士才能砍掉惡龍的所有頭,且需要支付的金幣最少?注意,乙個騎士只能砍乙個頭 且不能被僱傭兩次 輸入格式 輸入包含多組資料。...

勇者鬥惡龍

有n個頭的惡龍,你希望僱一些騎士把它殺死 即砍掉所有頭 村里有 個騎士可以僱傭,乙個能力值為x的騎士可以砍掉惡龍 乙個直徑不超過x的頭,且需要支付x個金幣。如何僱傭騎士才能砍掉惡龍的所有頭,且需要支付的金幣最少?注意,乙個騎士只能砍乙個頭 且不能被僱傭兩次 輸入格式 多組資料,每組資料的第一行為正整...