Educational Codeforces Round 76 (Rated for Div. 2) D题
2024-10-06 07:52:37
题意:
给你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 ;
}
最新文章
- 【迁移】—Entity Framework实例详解 转
- 我用VS2012在Nuget中安装Signalr之后报错
- PHP链式操作输出excel(csv)
- Jenkins搭建
- js轮播
- 47. Largest Rectangle in Histogram &;&; Maximal Rectangle
- Java for LeetCode 041 First Missing Positive
- 【LeetCode OJ】Interleaving String
- 杂文:AlphaGo 与 Alan Turing
- 使用腾讯云“自定义监控”监控GPU使用率
- 【转载】c++类的实例化与拷贝
- selenium截取具体元素图片(python版)
- 初学Python——函数
- 【夯实PHP基础】微信小程序开发 2017.02.06
- AsyncTask与ProgressDialog使用笔记(安卓在背景运行耗时任务)
- ref:mysql丢失密码,如何修改?
- KL变换和PCA的数学推导
- 百度语音识别demo:去掉离线识别功能
- eclipse: Program ";g++"; not found in PATH
- ACM提交,C++,G++,C,GCC的区别
热门文章
- JDBC预编译statement(preparedstatement)和statement的比较、execute与executeUpdate的区别
- django 相关配置(pycharm)
- PAT(B) 1039 到底买不买(Java)字符串
- Go实战--golang中使用redis(redigo和go-redis/redis)
- Spring Boot的配置文件-yml文件的集合配置方式
- P1777 帮助_NOI导刊2010提高(03)
- em...刚打完一点cf。。 有点子感悟
- jmeter保存返回数据到csv
- Ubuntu安装opencv3.4.4教程
- 由于找不到MSVCP140.dll,无法继续执行代码。重新安装程序可能会解决此问题。