Voltage Keepsake CodeForces - 801C (思维+二分)

题目链接

这是一道很棒的二分题。

思路:

首先先思考什么情况下是可以无限的使用,即输出-1.

我们思考可知,如果每一秒内所有设备的用电量总和小于等于充电器每秒可以充的电,那么这一群设备就可以无限使用。

接下来分析不是无限使用的情况:

题目要求的是满足某个情况的最大值。

很像二分的类型,二分题目往往就是求某一个满足情况的最值,这样我们只需要寻找上限和下限,并对每一次mid值进行检验是否满足,这样的模型时间度一般为O(  N*Log( L ))

L代表的是总区间的长度,而N代表的是完成一次判定需要的时间,一般题目可以O(N)进行暴力判断一个值是否满足情况。

 

那么接下来我们来分析此题目,分析在条件区间内是否单调,显然可知的单调的,因为随着设备使用的最大时间的变大,对充电器每秒可以充的电值的要求也变大。

判定的话,我们即要判断该最大使用时间的情况下,需要充电器每秒可以充值多少电,如果这个充电量小于等于题目给定的P值,那么就代表数据给的充电器可以满足这个任务,那么区间就可以选到 Mid-R这个区间进行再次查找。

 

本题目要求精度准确到至少1e-4,我开的eps为1e-6,保险一点,

然后区间我们定为 0~ 1e10

这个区间是需要自己分析的,左区间值0,不用多说,右区间值即最大的值,需要用题目的数据范围进行分析,初始我认为P的最大值为1e9,那么上限也应该是1e9,但是wa了一次,改成1e10就AC了。

然后我再次分析了一下数据范围,当极限数据,1e5个设备,每一个耗能为1,自带1e5的电,充电器的功率为1e5-1 ( 不 -1 的话就可以无限使用了)

这个数据情况下,我们可以知道,答案是大于1e9,小于1e10的,所以我们以1e10做峰值。

带精度问题的二分的方法有两种,可以见这篇博客。点我

附上我的AC代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <vector>
#define rep(i,x,n) for(int i=x;i<n;i++)
#define repd(i,x,n) for(int i=x;i<=n;i++)
#define pii pair<int,int>
#define pll pair<long long ,long long>
#define gbtb std::ios::sync_with_stdio(false)
#define MS0(X) memset((X), 0, sizeof((X)))
#define MSC0(X) memset((X), '\0', sizeof((X)))
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define gg(x) getInt(&x)
#define eps 1e-6
using namespace std;
typedef long long ll;
inline void getInt(int* p);
const int maxn=1000010;
const int inf=0x3f3f3f3f;
/*** TEMPLATE CODE * * STARTS HERE ***/
struct node
{int h;int x;
}a[maxn];
int n,p;
bool check(double mid)
{double need=0.0000;double sum=0.00000;repd(i,1,n){need=mid*a[i].x-a[i].h;if(need>0.0000000){sum+=need;}else{}}return 1.000000*mid*p-sum>0.000000;
}
int main()
{gg(n),gg(p);ll sum=0ll;repd(i,1,n){gg(a[i].x);gg(a[i].h);sum+=(1ll*a[i].x);}if(sum<=p){printf("-1\n");}else{double l=0.0000;double r=1e10;double mid;double ans;while(r-l>eps){mid=(r+l)/2.00000;if(check(mid)){l=mid;ans=l;}else{r=mid-eps;}}printf("%.5lf\n", ans);}return 0;
}inline void getInt(int* p) {char ch;do {ch = getchar();} while (ch == ' ' || ch == '\n');if (ch == '-') {*p = -(getchar() - '0');while ((ch = getchar()) >= '0' && ch <= '9') {*p = *p * 10 - ch + '0';}}else {*p = ch - '0';while ((ch = getchar()) >= '0' && ch <= '9') {*p = *p * 10 + ch - '0';}}
}
View Code

 

 

转载于:https://www.cnblogs.com/qieqiemin/p/10236751.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux网络服务-LAMP之Php基于Apache的模块实现

一、概述 首先&#xff0c;如标题所示我接下来的实验就是搭建一个LAMP平台然后实现一个Blog站点的实现&#xff0c;那"Php基于Apache的模块实现"这又是神马意思呢&#xff0c;我们知道Apache与Php的结合方式有常见的三种&#xff1a;基于module、基于CGI、基于Fa…

4G DTU使用教程

摘自&#xff1a;https://www.bilibili.com/video/BV1uP4y187bw?spm_id_from333.999.0.0 目录了解4G DTUATK - M750模组使用NET模式(网络透传)使用HTTP模式使用阿里云透传模式使用百度云透传模式使用OneNET模式透传模式了解4G DTU 4G DTU对比传统的4G模组更简单易用&#xff…

Kalman Filter

原理介绍 https://pan.baidu.com/s/15zDz8TeM8PKMsH231a0fOw 简单的例子 https://www.jianshu.com/p/d3b1c3d307e0 下图中“对应例子”就是所引用简书博客提到的例子。预测-校正交替运行。 博客&#xff1a;自动驾驶基础之——如何写卡尔曼滤波器&#xff1f; https://mp.weixi…

专注

"选择不做一件事情,有时候比做更难."我很喜欢这句话,一个公司要专注于自己的项目.即使对于一个项目而言,也要专注.因为公司发展初期各种资源是有限的,必须把资源集中在一点上.但有时候项目的定位牵扯到项目的战线问题.既要达到定位,又要控制利用好自己的资源,这个确实…

移远EC20 4G模块LTE开发板三网通模块 MQTT阿里云物联网

摘自&#xff1a;移远EC20 4G模块LTE开发板三网通模块 MQTT阿里云物联网STM32代码-电脑看 地址&#xff1a;https://www.bilibili.com/video/BV1EJ411P7CR?fromsearch&seid6590774415258771438&spm_id_from333.337.0.0 摘自&#xff1a;STM32开发板NB-IOT移远BC26 NB模…

在 LinearLayout里addView一个图表

2019独角兽企业重金招聘Python工程师标准>>> activity_main.xml <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_width"fill_parent"and…

准备写个nhibernate的学习笔记

经理说要用这个做数据层管理。先找点资料 C C 先&#xff5e;&#xff01; 有心得就慢慢贴上来转载于:https://www.cnblogs.com/marsforest/archive/2005/04/19/140670.html

Home Assistant 安装Samba和SSH server 插件

安装 Samba 插件 Samba 是 SMB/CIFS 网络协议的重新实现, 它作为 NFS 的补充使得在 Linux 和 Windows 系统中进行文件共享、打印机共享更容易实现。 Smaba 服务是必装的一个插件&#xff0c;Hass.io 通过它与局域网内的其他设备进行文件共享&#xff0c;是之后编辑 Hass.io 配置…

涂鸦WIFI模组方案(模组 SDK)

摘自&#xff1a;涂鸦智能模组 SDK 开发系列课程 地址&#xff1a;https://www.bilibili.com/video/BV1Kq4y1o728?p1 摘自&#xff1a;涂鸦智能模组SDK开发系列课程——Wi-Fi接入 地址&#xff1a;https://blog.csdn.net/sandwich_iot/category_11289915.html?spm1001.2014.3…

IOS静态库生成及测试

目录&#xff1a;1 生成静态库(.a文件)2 测试静态库文件1 生成静态库文件&#xff1a;1.1创建静态库项目static_library1.2 添加方法&#xff1a; - (int)getMax:(int)a b:(int)b;-(int)getMin:(int)a b:(int)b;(void)print;实现这些方法1.3 编译前选择IOS Device和模拟器&am…

整几个题给大家玩玩,看看“下盘功夫”怎样

不用编译器&#xff0c;回复你的答案。 感觉现在很多程序员老在追遂各种各样的新名词、新术语&#xff0c;别人把几个英语单词整一块&#xff0c;取出第一个字母&#xff0c;X除外&#xff0c;这年头&#xff0c;X牛啊&#xff0c;不在第一也优先取它&#xff0c;然后好像记住…

1-9-假期训练心得(dp+bfs)

题目一&#xff1a;传送门 思路&#xff1a;就是简单的bfs&#xff0c;注意仔细审题&#xff0c;加上对转弯次数的判断。 题目二&#xff1a;传送门 思路&#xff1a;简单dp&#xff0c;记录每一秒每个位置接到的大饼的数量。 状态转移方程&#xff1a;dp[i][j]max(dp[i][j] , …

Jlink commander、MCU GD32启动方式、Bootloader

摘自&#xff1a;学会如何使用jlink commander等 地址&#xff1a;https://www.bilibili.com/video/BV18b4y1C76i?spm_id_from333.999.0.0 摘自&#xff1a;Jlink使用技巧系列教程索引 地址&#xff1a;https://blog.csdn.net/whik1194/article/details/86525103

在eclipse中,怎么改变字体大小?

在eclipse中&#xff0c;怎么改变字体大小&#xff1f; 菜单栏里面点Window->Preference->General->Appearance->Colors and Fonts,再在右边的框里选Java->Java Editor Text Font(overrides default:Text Font),然后再点右边的Edit按钮&#xff0c;编辑好了点确…

基于javascript的asp数据库操作类,含分页、字符串截取、用户登陆验证[原创]

2005.01.15发表于blog.csdn.net/zxub无聊又用了用asp,发现还是不爽,已经习惯了面向对象了,就想改进了,vbscript不用,感觉看起来很不爽,就用javascript写了下面个类:<%//// //// 用Javascript实现的一个数据库操作类 //// ////function D…

atcoder A - Frog 1(DP)

A - Frog 1 Time Limit: 2 sec / Memory Limit: 1024 MB Score : 100100 points Problem Statement There are NN stones, numbered 1,2,…,N1,2,…,N. For each ii (1≤i≤N1≤i≤N), the height of Stone ii is hihi. There is a frog who is initially on Stone 11. He will…

物联网通讯协议:MQTT,NB-IOT,Zigbee,CoAP,RFID,BLUETOOTH,NFC,4G,HTTP

更多干货推荐可以去牛客网看看&#xff0c;他们现在的IT题库内容很丰富&#xff0c;属于国内做的很好的了&#xff0c;而且是课程刷题面经求职讨论区分享&#xff0c;一站式求职学习网站&#xff0c;最最最重要的里面的资源全部免费&#xff01;&#xff01;&#xff01;点击进…

【转】关于WaterFall瀑布流式布局的性能优化

市面上已存在的瀑布流式布局的网站&#xff1a;拼范网&#xff1a;http://www.pinfun.com/迷尚网&#xff1a;http://www.mishang.com/凡客达人&#xff1a;http://star.vancl.com/美丽说&#xff1a;http://www.meilishuo.com/蘑菇街&#xff1a;http://www.mogujie.com/welco…

微软OTech第二次会议(广州站)

很荣运又有机会参与微软的活动&#xff0c;也很高兴能加入到旨在促进Office技术交流的俱乐部(OTEC)&#xff0c;在这里让我对Office有了更深入的理解&#xff0c;目前的Office远非以前Office所能比拟。也远不止简单的Word、Excel电子文档表格办公自动化这些功能。目前中国大陆O…

Work Tips

目录IAR环境下&#xff0c;使用Live Watch实时监控变量值IAR替换mcu库Linux中删除swp文件使用J-Link通过SWD接口直接下载.hex文件和.bin文件到MCU(下载J-Flash软件)linux设置时间命令Jlink无法识别排查方法IAR环境下&#xff0c;使用Live Watch实时监控变量值 循环放在数组里&…