当前位置: 首页 > news >正文

【二分】CF1623 C

Problem - 1623C - Codeforces

题意:

 

思路:

肯定是二分,我们去二分最小值,然后check的时候最小值要大于mid

check的时候要让最小值尽可能大

注意到我们不需要去管最大值,只需要最小值尽可能大就好了,因此倒着考虑,直接把大数减到mid大小,分给前面即可

注意在取d的时候要和原来的取min,我因为没看清题意调了一会,结果发现加了个min就过了

Code:

#include <bits/stdc++.h>#define int long longusing i64 = long long;constexpr int N = 2e5 + 10;
constexpr int mod = 998244353;int n;
int a[N], b[N];bool check(int mid) {for (int i = 1; i <= n; i ++) {b[i] = a[i];}for (int i = n; i >= 3; i --) {if (b[i] < mid) return false;int d = std::min((b[i] - mid) / 3, a[i] / 3);if (d > 0) {b[i] -= 3 * d;b[i - 2] += 2 * d;b[i - 1] += d;}}return b[1] >= mid && b[2] >= mid;
}
void solve() {std::cin >> n;for (int i = 1; i <= n; i ++) {std::cin >> a[i];}int l = 0, r = 1e9;int ans = 0;while(l <= r) {int mid = l + r >> 1;if (check(mid)) {ans = mid;l = mid + 1;}else {r = mid - 1;}}std::cout << ans << "\n";
}
signed main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);int t = 1;std::cin >> t;while(t --) {solve();}return 0;
}

http://www.lryc.cn/news/116756.html

相关文章:

  • redis五大类型分析--list(1)
  • 【多重信号分类】超分辨率测向方法——依赖于将观测空间分解为噪声子空间和源/信号子空间的方法具有高分辨率(HR)并产生准确的估计(Matlab代码实现)
  • 【Express.js】集成Websocket
  • MachineLearningWu_14/P65-P69_Multiclass
  • 深入理解高并发编程 - SimpleDateFormat 类的线程安全问题
  • 接口幂等性实现方式
  • redis高可用之持久化
  • Cocos Creator 3.8 后期效果 Shader 编写(2/2) 进阶篇
  • 【JS自用模板】自动点击选课的操作模板
  • TENNECO EDI 项目——X12与XML之间的转换
  • C++项目:在线五子棋对战(网页版)
  • flutter遇到的小问题记录
  • Golang bitset 基本使用
  • sql 分组讨论,二级分组(非2个字段分组),使用 窗口函数和普通分组实现
  • 业务中如何过滤敏感词
  • 用服务器搭建网站需要做什么
  • clickhouse 删除操作
  • C 语言中,「.」与「->」有什么区别?
  • github pages 用法详解 发布自己的网站
  • 坤简炫酷的JQuery轮播图插件
  • C# 条件编译
  • IntelliJ IDEA如何重新弹出git身份验证窗口
  • 【雕爷学编程】Arduino动手做(200)---WS2812B幻彩LED灯带4
  • 【雕爷学编程】Arduino动手做(201)---DFRobot 行空板03
  • Spring中Bean的“一生”(生命周期)
  • 安卓:LitePal操作数据库
  • 【JavaEE初阶】了解JVM
  • 基于vue2.0和elementUi的vue农历日期组件vue-jlunar-datepicker(插件)
  • Python爬虫——selenium_元素定位
  • 短视频内容平台(如TikTok、Instagram Reel、YouTube Shorts)的系统设计