首先不得不承認這題寫殘疾了,本來是優先佇列隨便搞一下就過了(確保彈出來的箭能殺死兔子),這裡貼一下當時另一種貪心思想寫的,運用了並查集,對於箭貪心,每次殺能殺死的最大的兔子之後得到解,這裡要用並查集動態維護一下x的箭殺什麼兔子,亂搞一氣也算過了。
#include #include #include #include using namespace std;
int n,m,nn;
int rib[50005];
struct aarr[50005];
int index[100005];
int f[50005];
int vis[50005];
int cc[50005];
bool operator < (a a1,a a2)
for(int i=0;i>arr[i].a>>arr[i].qb;
}sort(arr,arr+m);
sort(rib,rib+n);
for(int i=0;i<50005;i++)
int num=0;
int n=0;
for(int i=0;i<100005;i++){
if(num
51nod 1191 貪心 優先佇列
有n只兔子,每只有乙個血量b i 需要用箭殺死免子。有m種不同型別的箭可以選擇,每種箭對兔子的傷害值分別為d i 為p i 1 i m 假設每種箭只能使用一次,每只免子也只能被射一次,計算要消滅地圖上的所有兔子最少需要多少q幣。如不能殺死所有兔子,請輸出no solution。特別說明 1 當箭的傷...
51NOD 1191 消滅兔子
1191 消滅兔子 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 有n只兔子,每只有乙個血量b i 需要用箭殺死免子。有m種不同型別的箭可以選擇,每種箭對兔子的傷害值分別為d i 為p i 1 i m 假設每種箭只能使用一次,每只免子也只能被射一次,計算要消滅地...
51 Nod 1191消滅兔子
1 秒131,072 kb 40 分 4 級題 有n只兔子,每只有乙個血量b i 需要用箭殺死免子。有m種不同型別的箭可以選擇,每種箭對兔子的傷害值分別為d i 為p i 1 i m 假設每種箭只能使用一次,每只免子也只能被射一次,計算要消滅地圖上的所有兔子最少需要多少q幣。如不能殺死所有兔子,請輸...