题意:

     一个怪物有N个头,每个头都有半径,然后有M个骑士,每个骑士能砍掉半径小于等于

X[i]的头,花费为X[i],并且一个骑士只能用一次,问砍掉怪物所有头的最小花费。

思路:

      比较简单的贪心题,我是直接把头和骑士都放在一起,然后从大到小排序下,如果

权值一样的让骑士在前面,然后开始枚举每一个点,如果当前点是骑士,那么直接进栈,如

果不是骑士,那么就从栈里取出一个,这个肯定是最省钱而且肯定可以砍掉这个头的,如果

该从栈里取东西的时候栈里空了,那么就完不成任务了。

#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;

}

 

 

UVA11292杀怪的更多相关文章

  1. 2159 ACM 杭电 杀怪 二维费用的背包+完全背包问题

    题意:已知经验值,保留的忍耐度,怪的种数和最多的杀怪数.求进入下一级的最优方案. 思路:用二维费用的背包+完全背包问题 (顺序循环)方法求解 什么是二维费用的背包问题? 问题: 二维费用的背包问题是指 ...

  2. HDU 5281 Senior&#39;s Gun 杀怪

    题意:给出n把枪和m个怪.每把枪有一个攻击力,每一个怪有一个防御力.假设某把枪的攻击力不小于某个怪的防御力则能将怪秒杀,否则无法杀死.一把枪最多仅仅能杀一个怪,不能用多把枪杀同一个怪.每杀一次怪能够得 ...

  3. HDU2159 二维完全背包

    FATE Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  4. HDU-2159FATE(二维完全背包)

    FATE Problem Description 最 近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务.久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完 ...

  5. HDU 2159---FATE---带限制的完全背包

    HDU   2159 Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务.久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一 ...

  6. hdu2159

    #include<bits/stdc++.h> #define MAX 155 using namespace std; struct Node { int exp; int pat; } ...

  7. HDU 1026 (BFS搜索+优先队列+记录方案)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1026 题目大意:最短时间内出迷宫.迷宫里要杀怪,每个怪有一定HP,也就是说要耗一定时.输出方案. 解 ...

  8. 转载:hdu 动态规划题集

    1.Robberies 连接 :http://acm.hdu.edu.cn/showproblem.php?pid=2955     背包;第一次做的时候把概率当做背包(放大100000倍化为整数): ...

  9. HDU 2159 FATE(二维费用背包)

    FATE Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

随机推荐

  1. visual studio 2019 + cmake 实现windows linux跨平台开发环境搭建

    visual studio 2019开始支持cmake跨平台开发. 以前cmake项目需要先生成vs项目,然后vs直接使用vs项目开发.现在可以直接用vs2019创建或打开cmake项目. 使用vis ...

  2. Codeforces Round #575 (Div. 3) D2. RGB Substring (hard version) 【递推】

    一.题目 D2. RGB Substring (hard version) 二.分析 思路一开始就想的对的,但是,用memset给数组初始化为0超时了!超时了! 然后我按照题解改了个vector初始化 ...

  3. Codeforces 976C Nested Segments

    题面: 传送门 C. Nested Segments Input file: standard input Output file: standard output Time limit: 2 secon ...

  4. Java 8的这些新特性,不一样的全新版本(万字长文详细说明)

    目录 1.Lambda表达式 2.Stream API 2.1 入门介绍 2.2.什么是Stream流 2.3.Stream的创建 ①.通过Collection接口获取 ②.由数组创建流 ③.由值创建 ...

  5. Java 多线程 | 并发知识问答总结

    写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...

  6. Line-line Intersection Gym - 102220C

    题目链接:https://vjudge.net/problem/Gym-102220C 题意:求n 条直线两两相交有几对(也可以重合). 思路:用map和pair存所有直线的斜率和与X轴的交点,假设与 ...

  7. winnt.h

    winnt.h https://docs.microsoft.com/en-us/windows/win32/api/winnt/ /*++ BUILD Version: 0091 Increment ...

  8. pwnable.kr 第一题fd

    使用ssh fd@pwnable.kr -p2222连接输入密码guest 1 fd@prowl:~$ ls -al 2 total 40 3 drwxr-x--- 5 root fd 4096 Oc ...

  9. 攻防世界 reverse Newbie_calculations

    Newbie_calculations Hack-you-2014 题目名百度翻译成新手计算,那我猜应该是个实现计算器的题目.... IDA打开程序,发现一长串的函数反复调用,而且程序没有输入,只有输 ...

  10. springboot源码解析-管中窥豹系列之bean如何生成?(十四)

    一.前言 Springboot源码解析是一件大工程,逐行逐句的去研究代码,会很枯燥,也不容易坚持下去. 我们不追求大而全,而是试着每次去研究一个小知识点,最终聚沙成塔,这就是我们的springboot ...