这题我第一眼居然差点错了\(OTZ\)

然后写了线段树,还写挂了……

写好了\(query\)操作,发现似乎不需要区间查询,然后又删掉……

看着这熟悉的操作,似乎在哪里见过……

然后我莫名其妙把一个\(now\)打成了\(x\),\(x\)从来没有被定义过,\(DEVc++\)居然还给我编译过了???莫名其妙卡了两小时,不然也不止\(160\)分

然后标程出来,是\(set\)……

为什么我没想到,佛枯了\(QWQ\)

题目描述

链接:https://ac.nowcoder.com/acm/contest/1101/A

来源:牛客网

小多计划在接下来的\(n\)天里租用一些服务器,所有的服务器都是相同的。接下来\(n\)天中,第\(i\)天需要\(a_i\)台服务器工作,每台服务器只能在这\(n\)天中工作\(m\)天,这\(m\)天可以不连续。

但是计划不是一成不变的,接下来有\(q\)次修改计划(修改是永久的),每次修改某一天\(k\)的需求量\(a_k\)

小多希望知道每次修改之后,最少需要多少台服务器。

输入描述:

第一行三个正整数\(n,m,q\),分别表示计划的天数,每台服务器能工作的天数和修改次数。

随后一行\(n\)个非负整数,第\(i\)个数字\(a_i\)表示原计划第\(i\)天需要多少台服务器工作。

随后\(q\)行,每行两个正整数\(p_i, c_i\),表示把第\(p_i\) 天需要的服务器数目改成$c_i $

输出描述:

第一行输出原计划需要的最少服务器数量。

随后\(q\)行,每行输出对应的修改之后,需要的最少的服务器的数量。

有没有觉得很水,求平均值和最大值,一眼秒……

然后再求平均值和最大值二者中的较大值就是答案

但是我当时一下子没有想到最大值是会变的

然后问题转化成了维护全局最大值

多么熟悉的问题

用\(set\)就完事儿了,\(O(qlogn)\)

可能你也想写线段树?

代码:

#include <bits/stdc++.h>
using namespace std;
#define rint register int
#define ll long long
const int MAX = 4e5 + 10;
int n, q, a[MAX + 2], maxn;
ll ans, m, tans;
struct tree{
ll m;
}t[(MAX<<2) + 2];
inline void build( int x, int l, int r ){
if( l == r ){
t[x].m = a[l];
return;
}
int mid = ( l + r ) >> 1;
build( x << 1, l, mid); build( x << 1 | 1, mid + 1, r);
t[x].m = max( t[x<<1].m, t[x<<1|1].m );
}
inline void pushup( int x ){
t[x].m = max( t[x << 1].m, t[x << 1 | 1].m );
}
inline void update( int now, int pos, ll val, int l, int r ){
if( l == r ){
t[now].m = val; return ;
}
int mid = ( l + r ) >> 1;
if( pos <= mid ) update( now << 1, pos, val, l, mid );
else update( now << 1 | 1, pos, val, mid + 1, r );
pushup( now );
}
inline int read( void ){
register ll re = 0;
char ch = getchar();
while( ch < '0' || ch > '9' ) ch = getchar();
while(ch >= '0' && ch <= '9' ){
re = re * 10 + ch - '0';
ch = getchar();
}
return re;
}
int main( void ){
n = read(); m = read(); q = read();
int maxn = 0;
for( int i = 1; i <= n ; i++ ){
a[i] = read(); ans += a[i];
if( maxn < a[i] ) maxn = a[i];
}
tans = ( ans - 1 ) / m + 1;
if( maxn > tans ) cout << maxn << endl; else cout << tans << endl;
build( 1, 1, n );
for( rint i = 1; i <= q; i++ ){
int t1, t2; t1 = read(); t2 = read();
ans = ans + t2 - a[t1];
a[t1] = t2;
tans = ( ans - 1 ) / m + 1;
update( 1, t1, t2, 1, n );
if( tans > t[1].m ) printf( "%lld\n", tans );
else printf( "%lld\n", t[1].m );
}
return 0;
}

D2T1服务器需求——毒?瘤题(并不是的更多相关文章

  1. CSP-S 2019提高组训练 服务器需求

    时间限制:C/C++ 3秒 空间限制:C/C++ 262144K 题目描述 小多计划在接下来的n天里租用一些服务器,所有的服务器都是相同的.接下来n天中,第i天需要\(a_i\)台服务器工作,每台服务 ...

  2. NAT对于网络上的其它人都不可见(但可以转发端口),Bridged和网络里的其它物理机没区别,Internal只能在虚拟机之间可见,Host-only只对主机可见(最符合我的服务器需求),最多可设置8块网卡实现混杂

    VirtualBox 可以为每一个虚拟机分配8个网卡.每一个网卡的连接方式可以选为下列之一: Not attached Network Address Translation (NAT) Bridge ...

  3. 「牛客CSP-S2019赛前集训营2」服务器需求

    传送门 NowCoder 解题思路 考虑一种贪心选择方法:每次选出最大的 \(m\) 个 \(a_i\) 进行覆盖. 那么就会出现一种特殊情况,最高的那个 \(a_i\) 需要多次选择,而且不得不每次 ...

  4. IDC:企业需求疲软 第三季度全球服务器市场收入下滑7%

    根据IDC全球服务器季度追踪报告,2016年第三季度全球服务器市场同比减少7%至125亿美元.整个服务器市场的增长最近有所放缓,部分原因是超大规模数据中心增长放缓,以及受到高端服务器销售下滑的拖累.此 ...

  5. 虚拟主机、VPS、云主机以及独立服务器的关系

    很多人对虚拟主机.VPS.云主机以及独立服务器的关系不是很了解,我在这里给大家简单分析一下. 先总结一下: (1)虚拟主机是把一台物理机器分割成很多的小空间,这些空间共享操作系统的资源,比如:同一个操 ...

  6. 徒手用Java来写个Web服务器和框架吧<第一章:NIO篇>

    因为有个不会存在大量连接的小的Web服务器需求,不至于用上重量级服务器,于是自己动手写一个服务器. 同时也提供了一个简单的Web框架.能够简单的使用了. 大体的需求包括 能够处理HTTP协议. 能够提 ...

  7. 在局域网中搭建自己的gis服务器

    在局域网中搭建自己的gis服务器 需求        在客户的B/S应用系统中使用电子地图.该系统只可运行于内部网中. 分析        由于系统中的电子地图只能运行于局域网中所以不能采用googl ...

  8. [服务器]Gartner:2018年第四季度全球服务器收入增长17.8% 出货量增长8.5%

    Gartner:2018年第四季度全球服务器收入增长17.8% 出货量增长8.5% Gartner 是不是也是花钱买榜的主啊.. 简单看了一下 浪潮2018Q4的营收18亿刀 (季度营收110亿人民币 ...

  9. 网络编程-socket(三)(TCP长连接和UDP短连接、时间服务器)

    详解地址:https://www.cnblogs.com/mys6/p/10587673.html TCP server端 import socketsk = socket.socket() # 创建 ...

随机推荐

  1. Ajax如何提交数据到springMVC后台

    现在好多web项目实现前段和后端分离,实现前端和后端技术人员,使他们加快开发,减少沟通上的问题,后台只需要提供访问接口,而前天只需要调用提供的接口即可.减少前后端的沟通上的成本 本项目是开发中发现aj ...

  2. 【转】【关于 A^x = A^(x % Phi(C) + Phi(C)) (mod C) 的若干证明】【指数循环节】

    [关于 A^x = A^(x % Phi(C) + Phi(C)) (mod C) 的若干证明][指数循环节] 原文地址:http://hi.baidu.com/aekdycoin/item/e493 ...

  3. labview的bool(布尔)按键机械属性

    在学习LabVIEW(简称LV)时,布尔控件是常用的控件.布尔控件分为按钮型控件和开关型控件,LV内部并没有区分按钮型还是开关型.这两种布尔控件可以根据需要相互转换,通过配置布尔控件的机械动作属性来实 ...

  4. Nginx笔记总结十四: nginx反向代理,用内网域名转发

    user www www; worker_processes ; error_log logs/error.log; pid logs/nginx.pid; worker_rlimit_nofile ...

  5. 解决跨域问题(CORS)

    一.改变响应头部 请求代码如下: fetch("http://localhost:8888/young",{ method:"get" }).then(func ...

  6. java集合 list与Set、Map区别

      1.List,Set都是继承自Collection接口,Map则不是. 2.List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉 ,(注意:元素虽 ...

  7. stat()函数--------------获取文件信息

    stat():用于获取文件的状态信息,使用时需要包含<sys/stat.h>头文件. 函数原型:int stat(const char *path, struct stat *buf): ...

  8. 天哪!毫无思绪!令人感到恐惧的数学(水题?)(TOWQs)

    这道题的题目描述灰常简单,第一眼看以为是一道十分水的题目: 但是!!!(我仔细一看也没有发现这背后隐藏着可怕的真相~) 下面给出题目描述: 给出一个整数x,你可以对x进行两种操作.1.将x变成4x+3 ...

  9. 有关终端的一些tips

    reg.exe是用于操作注册表的命令,可以通过reg /?来查看所有参数,在pentest中有两个很实用的参数 reg query 读取注册表信息, reg add 添加或修改注册表内容. 设想如下场 ...

  10. nginx图片过滤处理模块http_image_filter_module安装配置

    http_image_filter_module是nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版本,在网站访问量不是很高磁盘有限不想生成多余的图片文件的前提下可,就可以用它实时 ...