hdu 4544 湫湫系列故事——消灭兔子 优先队列+贪心

将兔子的血量从小到大排序,箭的威力也从小到大排序,

对于每只兔子将威力大于血量的箭加入队列,写个优先队列使得出来数位价钱最少。。

#include<stdio.h>
#include<queue>
#include<algorithm>
#include<iostream>
#include<functional>
using namespace std;

const int maxn=100010;
struct tt
{
	int d;
	int p;
	bool operator<(const tt&t) const{
		 return d>t.d||(d==t.d&&p<t.p);
	}
} pt[maxn];
int b[maxn];
priority_queue<int , vector<int> , greater<int> > q;
int main()
{
    int n,m,i,j;
	while(~scanf("%d%d",&n,&m))
	{
		for(i=1;i<=n;i++) scanf("%d",&b[i]);
		for(i=1;i<=m;i++) scanf("%d",&pt[i].d);
		for(i=1;i<=m;i++) scanf("%d",&pt[i].p);
		sort(b+1,b+1+n,greater<int>());
		sort(pt+1,pt+1+m);
		while(!q.empty())
			q.pop();
		__int64 ans=0;
		bool flag=1;
		for(i=1,j=1;i<=n;i++)
		{
			while(j<=m&&pt[j].d>=b[i])
			{
				q.push(pt[j].p);
				j++;
			}
			if(!q.empty())
			{
				ans=ans+q.top();
				q.pop();
			}
			else
			{
				flag=0;
				break;
			}
		}
		if(flag)
			printf("%I64d\n",ans);
		else
			printf("No\n");
	}
	return 0;
}

hdu 4544 湫湫系列故事——消灭兔子 优先队列+贪心,布布扣,bubuko.com

时间: 2024-10-10 06:46:16

hdu 4544 湫湫系列故事——消灭兔子 优先队列+贪心的相关文章

HDU - 4544 湫湫系列故事――消灭兔子 2013腾讯编程马拉松复赛第三场

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

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

湫湫系列故事--消灭兔子 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 2985    Accepted Submission(s): 984 Problem Description 湫湫减肥 越减越肥! 最近,减肥失败的湫湫为发泄心中郁闷,在玩一个消灭免子的游戏. 游戏规则很简单,用箭杀死免子即可. 箭是一种消耗品,已知有M种不同类型

HDU-4544 湫湫系列故事——消灭兔子

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

【HDOJ】4544 湫湫系列故事——消灭兔子

贪心,普通贪心两层循环TLE了,然后用优先级队列维护内层. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 #include <queue> 6 #include <algorithm> 7 using namespace std; 8 9 #define MAXN 100005 10 11 typedef st

hdu 4502 吉哥系列故事——临时工计划

吉哥系列故事--临时工计划 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 2921    Accepted Submission(s): 1128 Problem Description 俗话说一分钱难倒英雄汉,高中几年下来,吉哥已经深深明白了这个道理,因此,新年开始存储一年的个人资金已经成了习惯,不过自从大学之后他不好意思再向大人要

HDU 4513 吉哥系列故事——完美队形II(Manacher)

Problem Description 吉哥又想出了一个新的完美队形游戏! 假设有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] ... h[n],吉哥希望从中挑出一些人,让这些人形成一个新的队形,新的队形若满足以下三点要求,则就是新的完美队形: 1.挑出的人保持原队形的相对顺序不变,且必须都是在原队形中连续的: 2.左右对称,假设有m个人形成新的队形,则第1个人和第m个人身高相同,第2个人和第m-1个人身高相同,依此类推,当然如果m是奇数,中间那个人可以任意: 3.从左到中间那

HDU 4512 吉哥系列故事——完美队形(LCIS)

Problem Description 吉哥这几天对队形比较感兴趣. 有一天,有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] ... h[n],吉哥希望从中挑出一些人,让这些人形成一个新的队形,新的队形若满足以下三点要求,则称之为完美队形: 1.挑出的人保持他们在原队形的相对顺序不变: 2.左右对称,假设有m个人形成新的队形,则第1个人和第m个人身高相同,第2个人和第m-1个人身高相同,依此类推,当然,如果m是奇数,中间那个人可以任意: 3.从左到中间那个人,身高需保证递增,如

Hdu 4507 吉哥系列故事——恨7不成妻 (数位DP)

题目链接: Hdu 4507 吉哥系列故事——恨7不成妻 题目描述: 中文题面不描述. 解题思路: 从数据范围可看出是数位DP.根据题目给的限制,如果是求满足限制的数的数目的话,就很简单了.但是这个题目是让求满足题目中限制的数的平方和.我们可以求出区间中满足题目中限制的数的数目,和这些数的和,然后从这两个东西推出这些数的平方和. 假设现在我们已经递归出后面的x-1位满足题目限制的数的数目(num),和(sum),平方和(ssum),当前x位枚举为i,就可以推出当前节点改变为Num += num,

HDU 4502 吉哥系列故事——临时工计划(DP)

Problem Description 俗话说一分钱难倒英雄汉,高中几年下来,吉哥已经深深明白了这个道理,因此,新年开始存储一年的个人资金已经成了习惯,不过自从大学之后他不好意思再向大人要压岁钱了,只能把唯一的希望放到自己身上.可是由于时间段的特殊性和自己能力的因素,只能找到些零零碎碎的工作,吉哥想知道怎么安排自己的假期才能获得最多的工资. 已知吉哥一共有m天的假期,每天的编号从1到m,一共有n份可以做的工作,每份工作都知道起始时间s,终止时间e和对应的工资c,每份工作的起始和终止时间以天为单位