题目连接:

https://codeforces.com/contest/1257/problem/D

题目大意:

n个怪兽,m个英雄,每个怪兽有一定的能力值,每个英雄有一定的能力值和一定的耐力值。耐力值得含义是每天可以击杀怪兽的最多数目。当英雄的能力值大于怪兽的能力值时,英雄可以击杀怪兽,然后问击杀

所有的怪兽所需要的最短时间,如果不能击杀所有怪兽,输出-1;

思路:主要是一个对一个mx数组的理解mx[i]的含义是在耐力值为i的情况下,英雄的最大能力。

#include<bits/stdc++.h>
using namespace std;
const int N=2E5+;
int arr[N];
int mx[N];
int p[N],abi[N];
void solve(){
int n;
scanf("%d",&n);
for(int i=;i<=n;i++) mx[i]=;
for(int i=;i<=n;i++) scanf("%d",&arr[i]);
int m;
scanf("%d",&m);
for(int i=;i<=m;i++){
scanf("%d%d",&abi[i],&p[i]);
mx[p[i]]=max(mx[p[i]],abi[i]);
}
//一天可以击杀i个的英雄一定可以击杀i-1个。
//即mx[i]指的是耐力值大于等于i的英雄的最大能力。
for(int i=n-;i>=;i--) mx[i]=max(mx[i],mx[i+]);
int day=,j=;
bool flag=false;
for(int i=;i<=n;){
day++;
flag=false ;
int maxn=;
int tmp=i;
//一天可以击杀的最大数量,找到这几个怪兽的最大能力,然后在mx数组中查找击杀x个怪兽英雄的最大能力。
while(){
maxn=max(arr[i],maxn);
if(maxn>mx[i-tmp+]) break;
i++;
flag=true;
}
if(!flag) break;
}
if(!flag) day=-;
printf("%d\n",day);
return ;
} int main(){
cin.tie();
int t;
scanf("%d",&t);
while(t--) solve();
return ;
}

D - Yet Another Monster Killing Problem的更多相关文章

  1. Educational Codeforces Round 76 (Rated for Div. 2) D. Yet Another Monster Killing Problem 贪心

    D. Yet Another Monster Killing Problem You play a computer game. In this game, you lead a party of

  2. Educational Codeforces Round 76 (Rated for Div. 2) D. Yet Another Monster Killing Problem

    You play a computer game. In this game, you lead a party of mm heroes, and you have to clear a dunge ...

  3. 【CF1257D】Yet Another Monster Killing Problem【贪心】

    题意:给定一些怪物,每天可以选一个勇士进去打怪,每个勇士每天只能打不超过si个怪物,每个勇士只能打能力值≤pi的怪物,问最少多少天打完所有怪物 题解:贪心,每天尽可能多的去打怪,那么存一个对于长度为i ...

  4. Educational Codeforces Round 76 (Rated for Div. 2)

    传送门 A. Two Rival Students 签到. Code /* * Author: heyuhhh * Created Time: 2019/11/13 22:37:26 */ #incl ...

  5. CF Educational Round 78 (Div2)题解报告A~E

    CF Educational Round 78 (Div2)题解报告A~E A:Two Rival Students​ 依题意模拟即可 #include<bits/stdc++.h> us ...

  6. HDU 6326.Problem H. Monster Hunter-贪心(优先队列)+流水线排序+路径压缩、节点合并(并查集) (2018 Multi-University Training Contest 3 1008)

    6326.Problem H. Monster Hunter 题意就是打怪兽,给定一棵 n 个点的树,除 1 外每个点有一只怪兽,打败它需要先消耗 ai点 HP,再恢复 bi点 HP.求从 1 号点出 ...

  7. HDU 6326 Problem H Monster Hunter

    \(\mathtt{Problem H}\) \(\mathtt{Monster}\) \(\mathtt{Hunter}\) \(\mathcal{Description}\) 题目 给定一棵 \( ...

  8. hdu4970 Killing Monsters (差分数列)

    2014多校9 1011 http://acm.hdu.edu.cn/showproblem.php?pid=4970 Killing Monsters Time Limit: 2000/1000 M ...

  9. 周赛-Killing Monsters 分类: 比赛 2015-08-02 09:45 3人阅读 评论(0) 收藏

    Killing Monsters Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...

随机推荐

  1. java触发full gc的几种情况概述

    前言 近期被问及这个问题,在此记录整理一下. System.gc()方法的调用 此方法的调用是建议JVM进行Full GC,虽然只是建议而非一定,但很多情况下它会触发 Full GC,从而增加Full ...

  2. Linux基础篇学习——Linux文件系统之文件存储与读取:inode,block,superblock

    Linux文件类型 代表符号 含义 - 常规文件,即file d directory,目录文件 b block device,块设备文件,支持以"block"为单位进行随机访问 c ...

  3. 什么是CPU load

    最近经常收到告警,CPU load大于阈值告警.查看系统的CPU是12核,告警阈值设置的是8.对于CPU load一直有个模糊的概念,具体是什么意思还真搞不明白,趁这个机会好好搞搞究竟. 1.查看CP ...

  4. varchar int 查询 到底什么情况下走索引?

    一个字符类型的.一个int类型的,查询的时候到底会不会走索引,其实很多工作了几年的开发人员有时也会晕,下面就用具体事例来测试一下. 1.  准备工作 先准备2张表,以备后续测试使用. 表1:创建表te ...

  5. 从零开始发布一个ArcGIS Server地图服务

    @ 目录 一.软件环境搭建 1.数据库安装 1.1.Oracle(可选) 1.1.1.安装Oracle服务端 1.1.2.安装Oracle客户端 1.2.PostgreSQL(可选) 1.2.1.安装 ...

  6. ArcGIS Server的安装

    1.双击ArcGIS Server安装目录下的Setup.exe. 2.点击“Next”. 3.选择“I accept the license agreement”,点击“Next”. 4.点击“Ch ...

  7. iOS 构建静态库

    一..a 文件静态库打包 打开 Xcode 创建一个新的 Static Library 工程,取名 MyStaticLibrary. 创建工程完毕后,系统自动创建了一个同名类,添加一个方法用于测试. ...

  8. Codeforces Round #625 (1A - 1D)

      A - Journey Planning 题意: 有一列共 n 个城市, 每个城市有美丽值 b[i], 要访问一个子序列的城市, 这个子序列相邻项的原项数之差等于美丽值之差, 求最大的美丽值总和. ...

  9. 什么情况下JVM内存中的一个对象会被垃圾回收?

    新生代满了会触发 Young GC,老年代满了会触发 Old GC.GC时会回收对象,那么具体是什么样的对象会被垃圾回收器回收呢? 可达性分析算法,判断是否被 GC Roots 引用 判断引用类型:强 ...

  10. 【线段树基础】NKOJ 1321 数列操作

    时间限制 : 10000 MS   空间限制 : 165536 KB 问题描述 假设有一列数{Ai}(1≤i≤n),支持如下两种操作:将Ak的值加D.(k, D是输入的数)输出As+As+1+…+At ...