• Educational Codeforces Round 76 (Rated for Div. 2) D题


     题意:

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

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

    代码:

     1 #include<bits/stdc++.h>
     2  
     3 using namespace std;
     4  
     5 #define int long long
     6 const int N=22e4;int n;
     7 int arr[N];
     8 int pre[N];
     9 int str[N];
    10 int slove(){
    11     int ans=1;//总天数 
    12     int last_time=-1;
    13     int maxn=0;
    14     for(int i=0;i<n;i++){
    15         maxn=max(maxn,arr[i]);
    16         if(pre[i-last_time]<maxn){
    17             last_time=i-1;
    18             ans++;
    19             maxn=arr[i];
    20         }
    21         if(pre[1]<arr[i]){
    22             return -1;
    23         }
    24     }
    25     return ans;
    26 }
    27 signed  main(){
    28     ios::sync_with_stdio(0);
    29     int _;
    30     cin>>_;
    31     while(_--){
    32         cin>>n;
    33         int maxn1=0,maxn2=0;
    34         for(int i=0;i<=n+10;i++)    
    35             arr[i]=0,str[i]=0,pre[i]=0;
    36         for(int i=0;i<n;i++){
    37             cin>>arr[i];
    38             maxn1=max(maxn1,arr[i]);
    39         }
    40         int m;
    41         cin>>m;
    42         for(int i=0;i<m;i++){
    43             int x,y;
    44             cin>>x>>y;
    45             maxn2=max(maxn2,x);
    46             pre[y]=max(pre[y],x);//相同忍耐值时,攻击力越大 
    47         }
    48         if(maxn1>maxn2){
    49             cout<<"-1"<<'
    ';
    50             continue;
    51         }
    52         for(int i=n-1;i>0;i--){
    53             pre[i]=max(pre[i+1],pre[i]);// 
    54         }
    55         cout<<slove()<<'
    ';
    56     }
    57     return 0;
    58 }
  • 相关阅读:
    Vasya And Password(CodeForces
    Romaji (CodeForces
    Sorting a Three-Valued Sequence(三值的排序)
    Factorials 阶乘
    Factorial(hdu 1124)
    EXTENDED LIGHTS OUT
    kali更换root默认登陆
    api-ms-win-crt-string-l1-1-0.dll丢失解决办法
    vim 缩进
    bash: cd: .ssh/: Permission denied
  • 原文地址:https://www.cnblogs.com/pengge666/p/11856316.html
Copyright © 2020-2023  润新知