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

题解:AT_abc424_e [ABC424E] Cut in Half

首先肯定不可能用模拟做,因为 k≤109k \le 10^9k109

我们可以尝试二分长度为 xxx 的木棒,问题在于如何检查是否为 xxx

我们可以尝试获取在最多只能切 kkk 次的情况下能获得多少根大于等于 xxx 的棍子。

然后就很好统计了,我们只需要在他大于等于的时候一直除二然后计数就行了。

那我们就计算长度大于等于 midmidmid 的木棒和长度大于等于 2×mid2 \times mid2×mid 的木棒,超过了 2×mid2 \times mid2×mid 的显然应该算两次(因为还可以切成两根更小的,这样能保证正确),然后再加上初始就大于等于 midmidmid 的木棒,这样就能精确的算出 midmidmid 的排名,然后根据排名调整 l,rl,rl,r 即可。

代码

#include <bits/stdc++.h>
using namespace std;
namespace hjyowl {
const int N = 1000010;
const long double eps = 1e-18;
long long a[N];
long long n, k, x;
long long checker(long double t) {long long s = 0;for (long long i = 1; i <= n; i++) {long long tt = a[i];if ((long double)tt + eps < t) {continue;}long long cc = 1;long double ccf = (long double)tt;long long u = 0;while (1) {u += cc;if (u >= k) {u = k;break;}if (ccf / 2.0 + eps < t) {break;}ccf /= 2.0;long long r = k - u;if (r <= 0) {break;}if (cc > r / 2) {cc = r;} else {cc <<= 1;}}s += u;if (s >= k) {return k;}}return s;
}
int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int T;cin >> T;while (T--) {cin >> n >> k >> x;long long mx = 0;for (long long i = 1; i <= n; i++) {cin >> a[i];if (a[i] > mx) {mx = a[i];}}long double l = 0, r = (long double)mx;for (int tm = 0; tm < 100; tm++) {long double m = (l + r) * 0.5;const long double eps = 1e-18;long long ss = 0;for (long long i = 1; i <= n; i++) {if ((long double)a[i] + eps >= m) {ss++;}}long long s1 = checker(m);long long s2 = checker(2.0 * m);long long f = ss + 2 * min(k, s2) - min(k, s1);if (f >= x) {l = m;} else {r = m;}}printf("%.15Lf\n", l);// cout << (long double)l << endl;}return 0;
}
}  // namespace hjyowl
int main() { return hjyowl::main(); }
http://www.dtcms.com/a/419792.html

相关文章:

  • 突破!再次新增【钓鱼邮件检测】能力
  • 闵行营销型网站建设tk网站注册
  • 西安做门户网站最好的公司手机app制作用什么软件
  • 【网络安全】二、入门篇:HTTP 协议进阶 ——GET/POST 常用传参方法详解
  • Apache Shiro 技术详解
  • 公众号授权网站莒县住房和城乡规划建设局网站
  • Day73 基本情报技术者 单词表08 操作系统进阶
  • [xboard]15 uboot加载内核启动分析
  • 从微分方程到FIR
  • 免费建立自己的网站代码一元夺宝网站怎么做
  • 网站备案前置审批表格做网站都注意哪些东西
  • 打开无忧管理后台网站装饰设计有限公司
  • Nginx 访问控制、用户认证、HTTPS配置实操手册
  • github repository 一个文件忘记添加到 .gitignore
  • 【STM32项目开源】基于STM32的智能语音分类垃圾桶
  • wordpress建站详细教程网页打不开视频怎么办
  • 【开题答辩全过程】以 基于Java的物流管理系统为例,包含答辩的问题和答案
  • BCEWithLogitsLoss
  • 在线设计网站大全网站建设方案推销
  • CUDA框架
  • 辽阳专业建设网站公司wordpress rss 爬取
  • TypeScript 简介与项目中配置
  • 南宁seo建站seo网站优化排名
  • 【每日一问】老化测试有什么作用?
  • 广州信科做网站dede 门户网站
  • 【JDBC】系列文章第一章,怎么在idea中连接数据库,并操作插入数据?
  • 企业的网站建设朔州网站建设收费
  • 外贸上哪个网站开发客户网站建设费可分摊几年
  • 8. mutable 的用法
  • 做网站 php j2ee做网站投注员挣钱吗