题意:

湫湫系列故事——消灭兔子

                                                                        Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
                                                                        Total Submission(s): 1539 Accepted Submission(s): 525

Problem Description
湫湫减肥
  越减越肥!
  
  最近,减肥失败的湫湫为发泄心中郁闷,在玩一个消灭免子的游戏。
  游戏规则很简单,用箭杀死免子即可。
  箭是一种消耗品,已知有M种不同类型的箭可以选择,并且每种箭都会对兔子造成伤害,对应的伤害值分别为Di(1 <= i <= M),每种箭需要一定的QQ币购买。
  假设每种箭只能使用一次,每只免子也只能被射一次,请计算要消灭地图上的所有兔子最少需要的QQ币。
Input
输入数据有多组,每组数据有四行;
第一行有两个整数N,M(1 <= N, M <= 100000),分别表示兔子的个数和箭的种类;
第二行有N个正整数,分别表示兔子的血量Bi(1 <= i <= N);
第三行有M个正整数,表示每把箭所能造成的伤害值Di(1 <= i <= M);
第四行有M个正整数,表示每把箭需要花费的QQ币Pi(1 <= i <= M)。

特别说明:
1、当箭的伤害值大于等于兔子的血量时,就能将兔子杀死;
2、血量Bi,箭的伤害值Di,箭的价格Pi,均小于等于100000。

Output
如果不能杀死所有兔子,请输出”No”,否则,请输出最少的QQ币数,每组输出一行。
Sample Input
3 3 1 2 3 2 3 4 1 2 3 3 4 1 2 3 1 2 3 4 1 2 3 1
Sample Output
6 4

思路:
       这个题目比较好想,显然是个小贪心,首先我们先出路血最多的兔子,对于血最多的兔子我们只要在能杀死他的剑里面选一个最便宜的就行了,然后在杀血第二多的,以此类推,如果发现杀某一个兔子的时候没有剑可用了,那么就直接on了,先选血多的兔子是为了防止选择少的时候选择了价钱少而忘记了首先要保证所有兔子被杀死,直接模拟会TLE的,我用的优先队列(别的容器什么的也可以只要别N^2就行了),先把所有的兔子和剑放在一起排序,遇到剑就把他的攻击存进队列里,遇到兔子就取一个之前qq币最少的,不用考虑是否能杀死,排序后后面的兔子肯定会被前面的剑杀死,还多就是注意一下数据的大小,一开始开了个int的ans,wa了一次。


#include<stdio.h>
#include<queue>
#include<algorithm>#define N 222222
using namespace std;typedef struct NODE
{__int64 hp ,cost;
}NODE;typedef struct A
{__int64 x;friend bool operator < (A x ,A y){return x.x > y.x;}
}A;A xin ,tou;NODE node[N];bool camp(NODE a ,NODE b)
{return a.hp > b.hp || a.hp == b.hp && a.cost > b.cost;
}int main ()
{int n ,m ,i;__int64 num;while(~scanf("%d %d" ,&n ,&m)){for(i = 1 ;i <= n ;i ++){scanf("%I64d" ,&node[i].hp);node[i].cost = -1;}for(i = 1 ;i <= m ;i ++)scanf("%I64d" ,&node[i+n].hp);for(i = 1 ;i <= m ;i ++)scanf("%I64d" ,&node[i+n].cost);sort(node + 1 ,node + n + m + 1 ,camp);priority_queue<A>q;__int64 ans = 0;   for(i = 1 ;i <= n + m ;i ++){if(node[i].cost != -1){xin.x = node[i].cost;q.push(xin);}else{if(q.empty()){ans = -1;break;   }tou = q.top();q.pop();ans += tou.x;}}ans == -1 ? puts("No") : printf("%I64d\n" ,ans);}return 0;
}

hdu4544 优先队列(小贪心)相关推荐

  1. Dream City(01背包+小贪心)acm寒假集训日记21/12/30

    题目如下: AC代码如下: #include<iostream> #include<algorithm> #include<cstring> #include< ...

  2. 【Comet OJ - Contest #5 - C】迫真小游戏(优先队列,贪心构造,树,字典序)

    题干: H君喜欢在阳台晒太阳,闲暇之余他会玩一些塔防小游戏. H君玩的小游戏可以抽象成一棵 nn 个节点的有根树,树以 11 为根,每个点的深度定义为其到根的简单路径上的点数(根的深度为 11). H ...

  3. Java基于优先队列的贪心算法,java

    关于这篇博客 这篇博客是在我读<你不知道的JavaScript-上卷>的时候,遇到的我觉得需要记录下来的知识. 刚好又能够配合之前我写的这篇执行上下文与执行上下文栈博客中关于变量提升与函数 ...

  4. codeforces 贪心+优先队列_贪心(贪婪),在你们家乡话中怎么说·

    原创作品,抄袭.洗稿必究!(欢迎转发) 闲话我们家乡方言中"贪心(贪婪)"的几种不同说法 大美宜丰之---城里的森林 一.在我们老家方言中,"贪心(贪婪)"主要 ...

  5. hdu4932 小贪心

    题意:      给了一些处在x轴上的点,要求我们用长度相等的线段覆盖所有点,线段和线段之间不能重叠,问线段最长可以使多长. 思路:       一开始一直在想二分,哎!感觉这个题目很容易就往二分上去 ...

  6. 鱼塘钓鱼 优先队列 多路归并排序 贪心

    鱼塘钓鱼 优先队列 多路归并排序 贪心 优先队列介绍 贪心思想:不会回头 解题思想:枚举0-N-1目的地鱼塘k, 如图 从上到下 选t(钓鱼的时间)个数,使和最大 #include<iostre ...

  7. 【CodeForces - 722D】Generating Sets(二分,贪心)

    题干: You are given a set Y of n distinct positive integers y1, y2, ..., yn. Set X of n distinct posit ...

  8. LeetCode 1705. 吃苹果的最大数目(优先队列)

    文章目录 1. 题目 2. 解题 1. 题目 有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果. 在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后( ...

  9. 【2018.12.15】【考试总结】【模拟+逆序对+树状数组+贪心+multiset】爆零之旅

    这是我悲惨的接近爆零的一次考试,但是本蒟蒻不能放弃,还是要总结的QAQ 答题卡 [题目背景] 八月是个悲惨的月份.先不谈炎热的天气,对于新生来说,八月意味着军训: 而对于高二高三的同学来说,八月意味着 ...

最新文章

  1. Android的EditText自动获取焦点并弹出输入法问题
  2. 【译】Celeste 手感的 10 个设计细节
  3. Leecode11. 盛最多水的容器——Leecode大厂热题100道系列
  4. Android实现动画Dialog
  5. mysql排插问题_MySQL一次数据插入故障记录
  6. 【操作系统】互斥:软件解决方法
  7. access如何保存小数点后_如何把示波器当记录仪用
  8. 【车道线检测】基于matlab Hough变换视频车道线检测 【含Matlab源码 274期】
  9. suse 查看java版本_如何查看当前Linux的版本
  10. 我的第一篇cnds文章
  11. class文件拒绝访问
  12. echarts入门教程(超级详细带案例)
  13. 译文 [ROM][多国语言][2015.06.11] Lenovo S750 (MTK6589) - andrea_d86-lenovos750-4.2.2
  14. php页眉,phpword页眉页脚
  15. 高等数学(预备知识之两角和差、二倍角与半角公式)
  16. 微信最新数据:每天有 10.9 亿人打开微信,7.8 亿人进入朋友圈
  17. 假如生产环境出现CPU占用过高,如何排查与定位
  18. 机器学习(1)——Python数据处理与绘图
  19. 移动端excel导出_Excel格式的手机端和电脑端转换方法,一键就可以实现,不知可惜...
  20. shell命令三剑客之grep命令详解

热门文章

  1. copy和mutablecpy区别
  2. linux下ssh登录PIX防火墙
  3. No identifier specified for entity
  4. 20秒搭建web服务器,跨平台(mac,window)
  5. 获取分组后取某字段最大一条记录(求每个类别中最大的值的列表)
  6. Linux文件大小排序
  7. HTTP错误代码对应
  8. 回顾2013 - 技术上
  9. 动物为什么会预知地震,地震后为什么会下雨?
  10. Linux云服务器下Tomcat部署超详细