日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UVA11292杀怪

發(fā)布時(shí)間:2025/6/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UVA11292杀怪 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題意:
???? 一個(gè)怪物有N個(gè)頭,每個(gè)頭都有半徑,然后有M個(gè)騎士,每個(gè)騎士能砍掉半徑小于等于

X[i]的頭,花費(fèi)為X[i],并且一個(gè)騎士只能用一次,問砍掉怪物所有頭的最小花費(fèi)。

思路:
????? 比較簡單的貪心題,我是直接把頭和騎士都放在一起,然后從大到小排序下,如果

權(quán)值一樣的讓騎士在前面,然后開始枚舉每一個(gè)點(diǎn),如果當(dāng)前點(diǎn)是騎士,那么直接進(jìn)棧,如

果不是騎士,那么就從棧里取出一個(gè),這個(gè)肯定是最省錢而且肯定可以砍掉這個(gè)頭的,如果

該從棧里取東西的時(shí)候棧里空了,那么就完不成任務(wù)了。

?

?

?

#include<stack>
#include<stdio.h>
#include<algorithm>


#define N 20000 + 20000 + 5

using namespace std;

typedef struct
{
?? int x ,k;
}NODE;

NODE node[N];

bool camp(NODE a ,NODE b)
{
?? return a.x > b.x || a.x == b.x && a.k > b.k;
}

int main ()
{
??? int n ,m ,i ,Ans ,ss;
??? while(~scanf("%d %d" ,&n ,&m) && n + m)
??? {????????????
??????? for(i = 1 ;i <= n ;i ++)
??????? scanf("%d" ,&node[i].x) ,node[i].k = 0;
??????? for(i = 1 ;i <= m ;i ++)
??????? scanf("%d" ,&node[i+n].x) ,node[i+n].k = 1;
??????? sort(node + 1 ,node + n + m + 1 ,camp);
??????? ss = 0;
??????? if(m < n) Ans = 0;
??????? else
??????? {
??????????? stack<int>sk;
??????????? for(i = 1 ;i <= n + m ;i ++)
??????????? {
??????????????? if(node[i].k) sk.push(node[i].x);
??????????????? else
??????????????? {
????????????????????? if(sk.empty()) break;
????????????????????? else
????????????????????? {
???????????????????????? ss += sk.top();
???????????????????????? sk.pop();
????????????????????? }
??????????????? }
???????????????
??????????? }
??????????? if(i == n + m + 1) Ans = 1;
??????????? else Ans = 0;
??????? }
??????? Ans ? printf("%d\n" ,ss) : puts("Loowater is doomed!");???
????? }
????? return 0;
}

?


?

總結(jié)

以上是生活随笔為你收集整理的UVA11292杀怪的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。