首页 > 其他分享 >F. Final Boss(二分,周期)

F. Final Boss(二分,周期)

时间:2024-08-31 10:14:10浏览次数:8  
标签:二分 int mid Boss 回合 攻击 Final

题目来源:https://codeforces.com/contest/1985/problem/F
//
题意:你有n种攻击,每种攻击有周期和攻击力,如果当前回合是x,以为着第i种攻击,下次攻击是x+ci回合。现在有Boss,生命值为h,当h<=0的时候,Boss死亡。一开始所有攻击都没有冷却时间,问最少第几回合Boss死亡。
//
思路:“最开始无脑模拟,tle,这个题和abc的那个周期为5的题很想,但是这个题有n种周期,不是那回事。最后9✌才给我说是二分,我是一点没想到。”二分,二分回合数量,例如mid回合,那么第i种攻击的次数就是((mid-1)/ci)+1,然后*a攻击值,如果总攻击力>mid,r=mid-1,l同理。

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;

void solve(){
    int h,n;
    cin>>h>>n;
    vector<int>a(n+1),c(n+1);
    for(int i=1;i<=n;i++){cin>>a[i];}
    for(int i=1;i<=n;i++){cin>>c[i];}

    int l=1,r=1e12,ans;
    while(l<=r){
        int mid=(l+r)>>1,sum=0;
        for(int i=1;i<=n;i++){
            sum+=a[i]*(((mid-1)/c[i])+1);
            if(sum>h){break;}
        }
        if(sum>=h){
            r=mid-1;
            ans=mid;
        }
        else{
            l=mid+1;
        }
    }
    cout<<ans<<'\n';
}

signed main()
{
    int t;
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}

标签:二分,int,mid,Boss,回合,攻击,Final
From: https://www.cnblogs.com/yongchaoD/p/18389923

相关文章

  • 【2024HVV结束】这是属于网安人的"春晚" 祝还在现场的师傅们一切顺利 小心二阶段的"Bo
    ......
  • C#中的try catch finally(链接)
    下面这篇微软的官方文档,详细讲述了C#中如何使用trycatchfinally来处理异常:Exception-handlingstatements-throw,try-catch,try-finally,andtry-catch-finally其中这个地方有说到,不管是在try代码块中发生了异常,还是在catch代码块中发生了异常,finally代码块的代码都会执......
  • 二分法查+范围内临近值查找
        1uint16FindPosition(uint8arr[],uint16length,uint8target)2{3uint16low=0;4uint16high=length-1;5uint16closest_position=0xFFFF;67if(target<arr[0]||target>arr[length-1])8{9......
  • 代码随想录算法训练营,29日 | 704. 二分查找,27. 移除元素,977.有序数组的平方,209.长度最
    数组基础文档讲解︰代码随想录(programmercarl.com)1.连续空间、相同类型元素2.元素只能覆盖3.二维数组的地址连续吗(C++连续,Java不连续)704.二分查找题目链接:704.二分查找文档讲解︰代码随想录(programmercarl.com)视频讲解︰二分查找日期:2024-08-29思路:第一反应是想到二分查......
  • 【C++二分查找】2271. 毯子覆盖的最多白色砖块数
    本文涉及的基础知识点C++二分查找LeetCode2271.毯子覆盖的最多白色砖块数给你一个二维整数数组tiles,其中tiles[i]=[li,ri],表示所有在li<=j<=ri之间的每个瓷砖位置j都被涂成了白色。同时给你一个整数carpetLen,表示可以放在任何位置的一块毯子的长度......
  • AT_ddcc2017_final_d なめらかな木 题解
    首先考虑暴力DP,设\(f(i,v_1,v_2,now)\)为已经将前\(i\)个数填入,\(i\)填在\(v_1\),\(j\)填在\(v_2\)点,已经填完点的状态是\(now\)(状压一下存在一个longlong里)的方案数。转移时直接枚举下一个点暴力转移,只需要保证新的点没有被访问过,并且填上新点后,\(v_1\)的所有邻接......
  • LeetCode-Python-1539. 第 k 个缺失的正整数(二分)
    给你一个 严格升序排列 的正整数数组 arr 和一个整数 k 。请你找到这个数组里第 k 个缺失的正整数。示例1:输入:arr=[2,3,4,7,11],k=5输出:9解释:缺失的正整数包括[1,5,6,8,9,10,12,13,...]。第5个缺失的正整数为9。示例2:输入:arr=[1,2,3,4],k=2......
  • PHP8面向对象快速入门三 类的继承 类方法属性重写和final关键字 parent调用父类的方法
    在PHP中,类的继承(继承)是一种机制,允许一个类继承另一个类的属性和方法,从而实现代码的重用和扩展。继承可以帮助你创建一个基于现有类的新类,保留原有类的特性并增加或修改其功能。classAnimal{public$name='dongwu';protected$age=1;private......
  • AT cf17 final J Tree MST
    ATcf17finalJTreeMST考场上想出的黑题,然而写挂了……思路考场推出boruvka算法,会的直接跳过就好。结论:一个点向另外一个点连出的最小边,一定在最小生成树上。证明:参考Kruskal生成树的流程,若当前边(最小边)不在最小生成树上,表明边的两端已经在同一个连通块中。那么存在一......
  • Java中final关键字的学习
    final关键字目录final关键字1.修饰变量2.修饰方法3.修饰类4.修饰方法参数注意事项示例在Java编程语言中,final关键字是一个非常重要的概念,它用于表示一个变量、方法或类是不可变的或不能被进一步修改的。以下是final关键字的几种常见用法:1.修饰变量常量:final修饰的变量......