首页 > 其他分享 >牛客小白月赛104 C-小红打怪

牛客小白月赛104 C-小红打怪

时间:2024-11-10 13:30:21浏览次数:1  
标签:打怪 int sum mid 回合 牛客 攻击 104

小红打怪
答案有单调性,使用二分答案来做

但是当时没有想到用二分,而是卡在怎么处理这三种攻击了。

可以把进行x回合的攻击,分为先进行x回合的全体打击,再进行x回合的范围打击,最后验证剩余血量够不够x回合的单体打击

贪心的处理范围打击:对每一对相邻且都大于0的血量,这样最多只会浪费一点,举个例子对于0 0 1 2 3,进行两回合的打击会剩 0 0 0 1 3 然后0 0 0 0 2,如果只是对\(min(a_i,a_{i+1})\)处理,就会有很多点攻击浪费在尸体上

#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
using pii=pair<int,int>;
int a[100005];
int b[100005];

bool check(int mid)
{
    for(int i=1;i<=n;i++)  b[i]=a[i]-mid; //进行a类的攻击
    int c=mid;
    for(int i=1;i<n;i++)
    {
        if(b[i]>0&&b[i+1]>0){//这样贪心保证了,这两次的攻击不会浪费有浪费在尸体上
        //别取等 ,取等就不是最优的去贪了
        
            int w=min({b[i],b[i+1],c});
            b[i]-=w,b[i+1]-=w,c-=w;//进行b类的攻击
            if(c==0) break;
        }
    }
    
    
    int sum=0;
    for(int i=1;i<=n;i++)
    {
        if(b[i]>0) sum+=b[i]; //剩余的总的怪兽的体力
    }

    //此时mid为进行c类攻击的次数
    //变量名c是b类攻击还可以使用的次数
    return sum<=mid+c;
    
}



void solve()
{
    int n;
    cin>>n;
    
    for(int i=1;i<=n;i++) cin>>ve[i];
    int ans=0;
    int l=1,r=1e9;
    while(l<=r)
    {
        int mid=l+r>>1;
        if(check(mid)){
            ans=mid;
            r=mid-1;
        }else l=mid+1;
        
    }
    
    cout<<ans;
    
}

int main() {
  
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
  
    int t=1;
    //cin>>t;
    while(t--) solve();
    
    return 0;
}

标签:打怪,int,sum,mid,回合,牛客,攻击,104
From: https://www.cnblogs.com/swjswjswj/p/18537885

相关文章

  • 2024牛客网最新版Java面试题大全带答案 1400多题(限时分享)
    都知道IT行业是高薪人员的聚集地,但想要成为高薪程序员却并不容易。月薪20k是Java程序员的一个门槛,想要突破就必须掌握更多的技能。因为程序员职业发展很快,即使是相同起点的人,经过几年的工作或学习,会迅速拉开极大的差距,所以技术人保持学习,提升自己,才能够扛得住不断上赶的......
  • 104.力扣(leetcode)二叉树的最大深度(JAVA)
    一、目标给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。二、代码分析总代码:/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeN......
  • 牛客小白月赛104(A~D)
    比赛链接:https://ac.nowcoder.com/acm/contest/94879#question牛客还是经典暴力时要求代码贼多啊A.小红购买装备题目描述:小红准备去打地下城,在进入地下城之前首先需要购买合适的装备。已知商店共有\(n\)件装备,每种装备提供\(a_i\)的攻击和\(b_i\)的防御,价格为\(c_i\),小红身上......
  • 每日OJ题_牛客_BC157素数回文_数学_C++_Java
    目录牛客_BC157素数回文_数学题目解析C++代码Java代码牛客_BC157素数回文_数学素数回文_牛客题霸_牛客网描述:现在给出一个素数,这个素数满足两点:1、  只由1-9组成,并且每个数只出现一次,如13,23,1289。2、  位数从高到低为递减或递增,如2459,87631。请你判断一下,这......
  • 牛客小白月赛 104 ACM 游寄
    我去,打上ACM了。开场把F丢给yx。看A,一眼背包,再看一眼,原来只卖一次,直接找最大的做完了。看B,直接无脑1-pow((1-w),10)-pow(w,9),不对,改成1-pow((1-w),10)-pow(w,9)*w,还不对,改成1-pow((1-w),10)-pow(w,9)*w*9,还不对,然后看了两分钟后觉得脑子不清醒,做后面去了。看C,一眼......
  • Leecode热题100-104.二叉树中的最大路径和
    二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。示例......
  • 20240913 ARC104
    20240913ARC104感觉后四题价值都很高,dp还是弱项,待加强。APlusMinus水,略。BDNASequence只有对应的两种字符数量相等才能满足条件,直接\(O(n^2)\)枚举子串可过。用unordered_map开桶能做到\(O(n)\)。CFairElevator赛时没想到dp,乱搞做法差1个点就过了。考......
  • 104_api_intro_education_exam-question-similarity
    考题相似度AI分析API数据接口基于AI的相似度评估,专有AI模型,包含评估详情。1.产品功能基于自有专业模型进行AI智能分析;提供详细的相似度评分和结果描述;高效的模型分析性能;全接口支持HTTPS(TLSv1.0/v1.1/v1.2/v1.3);全面兼容AppleATS;全国多节点CDN部......
  • 牛客周赛 Round 66 G
    G.小苯的数位MEX思路比较模板的数位dp,虽然我不会代码#include<bits/stdc++.h>usingnamespacestd;#defineendl'\n'usingll=longlong;usingull=unsignedlonglong;usingpii=pair<int,int>;usingpiii=pair<int,pii>;usingpll=pair&l......
  • 【教学类-12-10】20241104《连连看竖版6*6 (3套题目空心图案)中2班
    【教学类-12-09】20230228《连连看竖版6*6(3套题目空心图案(中班教学)》(中班主题《玩具总动员》)-CSDN博客文章浏览阅读121次。【教学类-12-09】20230228《连连看竖版6*6(3套题目空心图案(中班教学)》(中班主题《玩具总动员》)https://blog.csdn.net/reasonsummer/article/details......