$CF949D\ Curfew$ 二分/贪心
正解:二分/贪心
解题报告:
首先这里是二分还是蛮显然的?考虑二分那个最大值,然后先保证一个老师是合法的再看另一个老师那里是否合法就成$QwQ$.
发现不太会搞这个合不合法的所以咕了.$QAQ$.
然后还有一个很神的方法是直接贪心,大概港下$QwQ$.
先考虑如果只有一个宿管,显然能合法就尽量合法,设当前合法的房间数为$cnt$,就直接看$\sum_{j=1}^{i+d\cdot i}$和$(cnt+1)\cdot b$的关系就成.正确性十分显然?就对于不合法的房间,反正都不合法了不如直接所有人都逃出去给后面的房间做贡献嘛$QwQ$.
然后现在变成了两个宿管,发现分别这么做就行$QwQ$.
大概证明下两边是麻油影响的,,,,?首先当两边能调配的人不重叠的时候正确性是显然的,要考虑的就只有重叠的时候的重叠那一段.
考虑如果发生影响了,一定是左右两边对中间的人的需求量大于中间人的数量了.但是发现这是不可能的.考虑设左侧不重叠的数量为$x$,右侧不重叠的数量为$y$,左侧需求等于右侧需求等于$d$,然后中间的人数量就是$n\cdot b-x-y$.
现在如果先优先满足左边的需求,也就说剩余的人的数量就是$n\cdot b-d-y$,现在要比较这个数与$d-y$的关系.
因为显然有$n\cdot b\geq 2\cdot d$,所以有$n\cdot b-d-y\geq d-y$,也就说不存在上面猜测的需求量大于数量的情况,所以一定没有影响.
所以分别做着就成$QwQ$.
#include<bits/stdc++.h>
using namespace std;
#define il inline
#define gc getchar()
#define int long long
#define t(i) edge[i].to
#define ri register int
#define rc register char
#define rb register bool
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i)
#define e(i,x) for(ri i=head[x];i;i=edge[i].nxt) const int N=+;
int n,d,b,sum[N],as1,as2,t; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
} signed main()
{
//freopen("949d.in","r",stdin);freopen("949d.out","w",stdout);
n=read();d=read();b=read();rp(i,,n)sum[i]=sum[i-]+read();
rp(i,,n>>){if(sum[min(n,i*(d+))]>=b*(as1+))++as1;if(sum[n]-sum[max(0ll,n-i*(d+))]>=b*(as2+))++as2;}
if(n&){t=(n+)>>;if(sum[min(n,t*(d+))]>=b*(as1+))++as1;}else t=n>>;
printf("%lld\n",max(t-as1,(n>>)-as2));
return ;
}
随机推荐
- 10Redis键空间通知(keyspace notifications)
Redis的键空间通知(keyspace notifications)功能是自2.8.0版本开始加入的,客户端可以通过订阅/发布(Pub/Sub)机制,接收那些以某种方式改变了Redis数据空间的事件 ...
- Android 整合实现简单易用、功能强大的RecyclerView
之前总是会有人在一些开发群里问,有木有比较好使且功能强大些的RecyclerVew,比如支持下来刷新,加载更多等,还有人在问,如何为RecyclerView添加分割线,尤其是如何为网格布局添加分割线? ...
- 如何减少idea的内存消耗
如何减少idea的内存消耗 标签: idea 内存 内存泄露 异常 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u014028392/articl ...
- OracleSpatial函数实例
Oracle Spatial操作geometry方法 Oracle Spatial中SDO_GEOMETRY类型: CREATE TYPE SDO_GEOMETRY AS OBJECT( SDO_ ...
- windows 和 linux 安装 tensorflow
安装 跟往常一样,我们用 Conda 来安装 TensorFlow.你也许已经有了一个 TensorFlow 环境,但要确保你安装了所有必要的包. OS X 或 Linux 运行下列命令来配置开发环境 ...
- 4 文件操作 支持图片 视频 mp3 文本等
#文件操作:send_file,支持图片 视频 mp3 文本等@app.route("/img")def img(): return send_file("1.jpg&q ...
- hdu 2126 Buy the souvenirs(记录总方案数的01背包)
Buy the souvenirs Time Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- 梯度下降优化算法综述与PyTorch实现源码剖析
现代的机器学习系统均利用大量的数据,利用梯度下降算法或者相关的变体进行训练.传统上,最早出现的优化算法是SGD,之后又陆续出现了AdaGrad.RMSprop.ADAM等变体,那么这些算法之间又有哪些 ...
- Python--day37--守护进程和几个常用的方法
1,p.daemon = True #设置子进程为守护进程 #守护进程会随着主进程的代码执行完毕 而结束 #子进程 --> 守护进程 import time from multiprocessi ...
- win10 uwp 使用 Azure DevOps 自动构建
通过 Azure DevOps 可以做到自动构建程序,覆盖计划.创建.编程.测试.部署.发布.托管.共享等各个环节,适用于大多数的语言.平台. 本文继续使用图床为例告诉大家如何使用 Azure Dev ...