首页 > 其他分享 >abc174E 最小化不超过k次操作后木棍的最大长度

abc174E 最小化不超过k次操作后木棍的最大长度

时间:2024-03-16 19:11:07浏览次数:27  
标签:cnt int lo abc174E mid hi 木棍 最小化

有n根木棍,第i根木棍长度为a[i],每次操作可以选一根木棍将其锯成两段,要求总操作次数不超过k。问最终所有木棍最大长度的最小值是多少?
1<=n<=2e5; 0<=k<=1e9; 1<=a[i]<=1e9

最小化最大值,或者反过来最大化最小值,优先考虑二分答案,对于某个特定的长度x,考虑将其锯成最长x一段需要的次数,如果总次数不超过k,那x就在可行域里。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define per(i,a,b) for(int i=b;i>=a;i--)

const int N = 200005;
int k, n, A[N];
int check(int x) {
    int cnt = 0;
    rep(i,1,n) {
        if (A[i] % x == 0)
            cnt += A[i] / x - 1;
        else
            cnt += A[i] / x;
    }
    return cnt <= k;
}
void solve() {
    cin >> n >> k;
    rep(i,1,n) cin >> A[i];
    int lo = 0, hi = 1e10, mid;
    while (lo + 1 < hi) {
        mid = (lo + hi) / 2;
        if (check(mid))
            hi = mid;
        else
            lo = mid;
    }
    cout << hi << "\n";
}

signed main() {
    cin.tie(0)->sync_with_stdio(0);
    int t = 1;
    while (t--) solve();
    return 0;
}

标签:cnt,int,lo,abc174E,mid,hi,木棍,最小化
From: https://www.cnblogs.com/chenfy27/p/18077451

相关文章

  • lc2035 将数组分成两个数组并最小化数组和的差
    给你一个长度为2n的整数数组,需要将它分成两个长度为n的数组,分别求出两个数组的和,并最小化两个数组和之差的绝对值。nums中每个元素都需要放入两个数组之一,求最小的数组和之差。1<=n<=15;-1E7<=nums[i]<=1E7直接暴搜的话最坏时间复杂度是O(2^30),会TLE,可以使用双向dfs优化,每次df......
  • 试题 算法训练 粘木棍
    问题描述有N根木棍,需要将其粘贴成M个长木棍,使得最长的和最短的的差距最小。输入格式第一行两个整数N,M。一行N个整数,表示木棍的长度。输出格式一行一个整数,表示最小的差距样例输入32102040样例输出10数据规模和约定N,M<=7题解:从大到小排序,......
  • winform实现最小化至系统托盘
    NotifyIcon类介绍NotifyIcon是.NET中的一个类,它用于在系统托盘中显示图标。这个类在System.Windows.Forms命名空间下。使用NotifyIcon类,你可以在系统托盘中创建一个图标,当用户点击或右键点击这个图标时,可以触发一些事件。例如,你可以创建一个上下文菜单(右键菜单),或者当用户......
  • SysTrayIcon 改的 python tkinter 最小化至系统托盘,适用TTK
    网上的SysTrayIcon改的,Tk页面最小化至托盘,托盘图标左键单击恢复Tk界面1.点击最小化隐藏至托盘2.托盘图标右键菜单展示,左键返回Tk界面。托盘图标可以自定义,修改了SysTrayIcon更容易调用,Demo窗口加了注释,具体查看_Main类。代码如下:importwin32api,win32con,win32gui_str......
  • ubuntu20.04最小化安装
    ubuntu20.04虚拟机安装镜像下载https://releases.ubuntu.com/focal/ubuntu-20.04.6-live-server-amd64.iso创建虚拟机执行安装过程选择系统语言配置键盘布局配置网络连接此处根据实际网络进行配置,本机VMware网络使用NAT模式,10.100.1.0/24,网关10.100.1.254无需代理......
  • Hive 3.1.3最小化安装
    1.解压mkdir/usr/hivetar-zxvfapache-hive-3.1.3-bin.tar.gz-C/usr/hive2.配置Hive环境变量在/etc/profile.d中配置1.新建hive.shvi/etc/profile.d/hive.shexportHIVE_HOME=/usr/hive/apache-hive-3.1.3-binexportPATH=$PATH:$HIVE_HOME/bin2.授予文件执行权......
  • QT最小化程序到托盘运行
    MinTray说明实现程序关闭时最小化托盘的功能托盘实现显示主页面和退出的功能支持扩展,直接引用TrayIcon类即可,对外暴露接口单例实现,可复用警告注:博主所有资源永久免费,若有帮助,请点赞转发是对我莫大的帮助注:博主本人学习过程的分享,引用他人的文章皆会标注原......
  • WPF 最大化,最小化,关闭,拖拽,双击事件
    十年河东,十年河西,莫欺少年穷学无止境,精益求精代码如下publicMainView(){InitializeComponent();//最小化btnMin.Click+=(s,e)=>{this.WindowState=WindowState.Minimized;};//最大化b......
  • 童程OJ1508 小木棍 困难- 深搜/剪枝
    记忆步骤:1.全局变量应该有木棍数组a和标记数组vis主函数:1.最小木棍长度len,标记是否有答案变量f2.输入,并记录木棍的最大值maxx和全部长度sum3.从大到小排序4.遍历len从maxx到sum,如果sum刚好是len的倍数,那么证明有复原方案,进行深搜dfs函数:1.dfs(已经使用的木棍数量tot,当前复原木棍长......
  • VMware最小化安装Centos7.6-无桌面
    目录安装包工具新建虚拟机安装centos7.6终端登陆系统设置ip地址关闭防火墙关闭SELINUXSELINUX=enforcing硬盘挂载安装包工具VMware®Workstation15Pro15.5.2build-15785246CentOS-7.6-x86_64-DVD-1810.iso链接:https://pan.baidu.com/s/1u2vMvwtpHxbNoRpvLERKmQ提取码:b8jt......