贪心就好
一开始理解错题意了,以为可以随便找怪兽打,题目要求是挨着一个个的打
枚举每个耐力值,求出该耐力值下英雄最大的攻击力
代码:
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll a[200005],u[200005];
int main()
{
ll n,m,t;
cin>>t;
while(t--)
{
ll x,y;
cin>>n;
ll gmx=-1;
for(int i=0;i<n;i++)
{cin>>a[i];gmx=max(gmx,a[i]);u[i]=0;}
u[n]=0;
cin>>m;
for(int i=0;i<m;i++)
{
cin>>x>>y;
u[y]=max(u[y],x);
}
for(int i=n-1;i>=1;i--)
{u[i]=max(u[i],u[i+1]);}
if(u[1]<gmx)
{cout<<"-1"<<endl;
continue;}
ll time=0,cnt=0,df=-1,i=0;
while(i<n)
{
cnt++;
df=max(df,a[i]);
if(u[cnt]>=df)
{i++;}
else
{
df=-1;
cnt=0;
time++;
}
}
if(cnt!=0)
{time++;}
cout<<time<<endl;
}
return 0;
}