题意:

给你n个关卡,每个关卡有一个怪物,怪物的攻击力为a【i】,你有n个英雄,每个英雄有一个攻击力,和疲劳值,只要英雄的攻击力比怪物的高就算打过了,同时疲劳减一,一天只能出战一个英雄,一个英雄可以打好几关(只要在疲劳范围内),打不过的话英雄就结束今天的挑战,转到第二天。问最少需要出战多少英雄才能通过所有关卡。

思路:先用一个数组。跑出相同忍耐值时,攻击力越大。然后·跑出这个数组的后缀pre数组,pre数组的含义是:忍耐值一定,攻击力最大。然后通过O(n)的复杂度跑·怪物的数组。当怪物的a【i】值大于pre数组在上一天的攻击力时,进入下一天。【变相的二分】【题目比较难叙述QAQ】

代码:

 #include<bits/stdc++.h>

 using namespace std;

 #define int long long
const int N=22e4;int n;
int arr[N];
int pre[N];
int str[N];
int slove(){
int ans=;//总天数
int last_time=-;
int maxn=;
for(int i=;i<n;i++){
maxn=max(maxn,arr[i]);
if(pre[i-last_time]<maxn){
last_time=i-;
ans++;
maxn=arr[i];
}
if(pre[]<arr[i]){
return -;
}
}
return ans;
}
signed main(){
ios::sync_with_stdio();
int _;
cin>>_;
while(_--){
cin>>n;
int maxn1=,maxn2=;
for(int i=;i<=n+;i++)
arr[i]=,str[i]=,pre[i]=;
for(int i=;i<n;i++){
cin>>arr[i];
maxn1=max(maxn1,arr[i]);
}
int m;
cin>>m;
for(int i=;i<m;i++){
int x,y;
cin>>x>>y;
maxn2=max(maxn2,x);
pre[y]=max(pre[y],x);//相同忍耐值时,攻击力越大
}
if(maxn1>maxn2){
cout<<"-1"<<'\n';
continue;
}
for(int i=n-;i>;i--){
pre[i]=max(pre[i+],pre[i]);//
}
cout<<slove()<<'\n';
}
return ;
}

最新文章

  1. 【迁移】—Entity Framework实例详解 转
  2. 我用VS2012在Nuget中安装Signalr之后报错
  3. PHP链式操作输出excel(csv)
  4. Jenkins搭建
  5. js轮播
  6. 47. Largest Rectangle in Histogram &amp;&amp; Maximal Rectangle
  7. Java for LeetCode 041 First Missing Positive
  8. 【LeetCode OJ】Interleaving String
  9. 杂文:AlphaGo 与 Alan Turing
  10. 使用腾讯云“自定义监控”监控GPU使用率
  11. 【转载】c++类的实例化与拷贝
  12. selenium截取具体元素图片(python版)
  13. 初学Python——函数
  14. 【夯实PHP基础】微信小程序开发 2017.02.06
  15. AsyncTask与ProgressDialog使用笔记(安卓在背景运行耗时任务)
  16. ref:mysql丢失密码,如何修改?
  17. KL变换和PCA的数学推导
  18. 百度语音识别demo:去掉离线识别功能
  19. eclipse: Program &quot;g++&quot; not found in PATH
  20. ACM提交,C++,G++,C,GCC的区别

热门文章

  1. JDBC预编译statement(preparedstatement)和statement的比较、execute与executeUpdate的区别
  2. django 相关配置(pycharm)
  3. PAT(B) 1039 到底买不买(Java)字符串
  4. Go实战--golang中使用redis(redigo和go-redis/redis)
  5. Spring Boot的配置文件-yml文件的集合配置方式
  6. P1777 帮助_NOI导刊2010提高(03)
  7. em...刚打完一点cf。。 有点子感悟
  8. jmeter保存返回数据到csv
  9. Ubuntu安装opencv3.4.4教程
  10. 由于找不到MSVCP140.dll,无法继续执行代码。重新安装程序可能会解决此问题。