题目来源: 2013腾讯马拉松赛第三场

基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题

有N只兔子,每只有一个血量B[i],需要用箭杀死免子。有M种不同类型的箭可以选择,每种箭对兔子的伤害值分别为D[i],价格为P[i](1 <= i <= M)。假设每种箭只能使用一次,每只免子也只能被射一次,计算要消灭地图上的所有兔子最少需要多少Q币。如不能杀死所有兔子,请输出No Solution。
特别说明:1、当箭的伤害值大于等于兔子的血量时,能将兔子杀死;2、血量B[i],箭的伤害值D[i],箭的价格P[i],均小于等于100000。
 
Input
第1行:两个整数N,M,中间用空格分隔(1 <= N, M <= 50000),分别表示兔子的个数和箭的种类。
第2 - N + 1行:每行1个正整数(共N行),表示兔子的血量B[i](1 <= B[i] <= 100000)。
第N + 2 - N + M + 1行:每行2个正整数(共M行),中间用空格分隔,表示箭所能造成的伤害值D[i],和需要花费的Q币P[i](1 <= D[i], P[i] <= 100000)。
Output
输出最少需要多少Q币才能消灭所有的兔子。如果不能杀死所有兔子,请输出"No Solution"。
Input示例
3 3
1
2
3
2 1
3 2
4 3
Output示例
6
 
优先队列+贪心
血量从大到小排序
伤害从大到小排序
把每次伤害大于等于血量的弹进优先队列 
若队列为空则杀不死
#include <algorithm>
#include <cstdio>
#include <queue>
#define N 50005
int n,m,B[N];
using namespace std; struct node
{
int D,P;
bool operator<(node a)const
{
return P>a.P;
}
}Arrow[N];
priority_queue<node>q;
bool use[N];
int B_cmp(int a,int b){return a>b;}
bool A_cmp(node a,node b){return a.D>=b.D;}
int main(int argc,char *argv[])
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;++i) scanf("%d",&B[i]);
for(int i=;i<=m;++i) scanf("%d%d",&Arrow[i].D,&Arrow[i].P);
sort(B+,B++n,B_cmp);
sort(Arrow+,Arrow++m,A_cmp);
int j=,ans=;
for(int i=;i<=n;++i)
{
for(;j<=m;++j)
{
if(Arrow[j].D>=B[i]) q.push(Arrow[j]);
else break;
}
if(q.empty()) {printf("No Solution\n");return ;}
else {ans+=q.top().P;q.pop();}
}
printf("%d",ans);
return ;
}
 

51nod 1191 消灭兔子的更多相关文章

  1. 51 Nod 1191消灭兔子

    1191 消灭兔子 1 秒 131,072 KB 40 分 4 级题 有N只兔子,每只有一个血量B[i],需要用箭杀死免子.有M种不同类型的箭可以选择,每种箭对兔子的伤害值分别为D[i],价格为P[i ...

  2. 【51NOD】消灭兔子

    [算法]贪心 #include<cstdio> #include<algorithm> #include<cstring> #include<queue> ...

  3. 51nod 1191:消灭兔子 贪心+优先队列

    1191 消灭兔子 题目来源: 2013腾讯马拉松赛第三场 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 有N只兔子,每只有一个血量B[i],需要 ...

  4. 湫湫系列故事——消灭兔子(hdu4544)

    湫湫系列故事--消灭兔子 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tota ...

  5. 【51nod 1191】消灭兔子

    Description 有N只兔子,每只有一个血量B[i],需要用箭杀死免子.有M种不同类型的箭可以选择,每种箭对兔子的伤害值分别为D[i],价格为P[i](1 <= i <= M).假设 ...

  6. 51nod 拉勾专业算法能力测评消灭兔子 优先队列+贪心

    题目传送门 这道题一开始想了很久...还想着写网络流 发现根本不可能.... 然后就想着线段树维护然后二分什么的 最后发现优先队列就可以了 代码还是很简洁的啦 233 就是把兔子按血量从大到小排序一下 ...

  7. hdu 4544——消灭兔子

    游戏规则很简单,用箭杀死免子即可.  箭是一种消耗品,已知有M种不同类型的箭可以选择,并且每种箭都会对兔子造成伤害,对应的伤害值分别为Di(1 <= i <= M),每种箭需要一定的QQ币 ...

  8. HDU - 4544 湫湫系列故事——消灭兔子(优先队列+贪心)

    题目: 最近,减肥失败的湫湫为发泄心中郁闷,在玩一个消灭免子的游戏. 游戏规则很简单,用箭杀死免子即可. 箭是一种消耗品,已知有M种不同类型的箭可以选择,并且每种箭都会对兔子造成伤害,对应的伤害值分别 ...

  9. HDU 4544 湫湫系列故事——消灭兔子 (优先队列)

    湫湫减肥  越减越肥!    最近,减肥失败的湫湫为发泄心中郁闷,在玩一个消灭免子的游戏.  游戏规则很简单,用箭杀死免子即可.  箭是一种消耗品,已知有M种不同类型的箭可以选择,并且每种箭都会对兔子 ...

随机推荐

  1. [zoj3195]Design the city(LCA)

    解题关键:求树上三点间的最短距离. 解题关键:$ans = (dis(a,b) + dis(a,c) + dis(b,c))/2$ //#pragma comment(linker, "/S ...

  2. Spring入门第十课

    Spring表达式语言:SpEL Spring表达式语言(简称SpEL)是一个支持运行时查询和操作对象图的强大的表达式语言. 语法类似于EL:SpEL使用#{...}作为定界符,所有在大括号中的字符都 ...

  3. HDU - 3499 Flight 双向SPFA+枚举中间边

    Flight Recently, Shua Shua had a big quarrel with his GF. He is so upset that he decides to take a t ...

  4. 字符串反转reverse

    我们有一串字符串,比如: DECLARE @Source VARCHAR(MAX)= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 现想把它反转显示: ZYXWVUTSRQPONMLKJI ...

  5. 日期和时间-time时间模块

    时间的检测 #时间的检测 #导入时间模块 import time #返回当前时区与格林尼治所在时区的相差秒数(推荐) print(time.timezone) #输出结果:-28800 #返回当前时区 ...

  6. hammerjs jquery的选项使用方法,以给swipe设置threshold和velocity为例

    先包含hammer.min.js和 jquery.hammer.js,然后: var $ele = $('#ele'); //复用jquerydom对象,建个变量 $ele.hammer().on(& ...

  7. vue路由的四种传值

    第一种:props 配置: 组件内定义: props: ['id'] 路由映射配置,开启props:true : { path: '/user/:id', component: User, props ...

  8. vue教程3-webpack搭建项目

    vue-cli https://cli.vuejs.org/zh/ vue-cli是vue的命令行工具,对于创建项目,安装各种组件,运行项目都极为方便,是在开发vue中的必备工具 vue-cli基于n ...

  9. JavaScript 与 CSS 滚动实现最新指南

    一些(网站)滚动的效果是如此令人着迷但你却不知该如何实现,本文将为你揭开它们的神秘面纱.我们将基于最新的技术与规范为你介绍最新的 JavaScript 与 CSS 特性,(当你付诸实践时)将使你的页面 ...

  10. poj3264_Balanced Lineup

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 42349   Accepted: 19917 ...