这题我第一眼居然差点错了\(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. 吴裕雄--天生自然python学习笔记:Python3 JSON 数据解析

    JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. Python3 中可以使用 json 模块来对 JSON 数据进 ...

  2. 编程原理—如何用javascript代码解决一些问题

    关于编程,我最喜欢的就是解决问题.我不相信有谁天生具有解决问题的能力.这是一种通过反复锻炼而建立并维持的能力.像任何练习一样,有一套指导方针可以帮助你更有效地提高解决问题的能力.我将介绍5个最重要的软 ...

  3. npm安装依赖太慢问题

    执行 npm install 会发现很慢,可以在安装时手动指定从哪个镜像服务器获取资源,我使用的是阿里巴巴在国内的镜像服务器. 命令如下: npm install --registry=https:/ ...

  4. 《JavaScript算法》常见排序算法思路与代码实现

    冒泡排序 通过相邻元素的比较和交换,使得每一趟循环都能找到未有序数组的最大值或最小值. 最好:O(n),只需要冒泡一次数组就有序了. 最坏: O(n²) 平均: O(n²) *单项冒泡 functio ...

  5. <HAOI2008>硬币购物

    和神奇dp的战斗 还有容斥原理 终于get到了 #include<cstdio> #include<cstring> #include<iostream> #inc ...

  6. Android--MediaPlayer(实现列表选歌,上一首,下一首,清空播放列表,搜索本地音乐文件)

    Android--MediaPlayer(实现列表选歌,上一首,下一首,清空播放列表,搜索本地音乐文件) 下载链接:http://download.csdn.net/detail/zlqqhs/507 ...

  7. TableViewComponent v2

    Unity UGUI 自带的 ScrollView 控件不支持复用滚动内容,在数量大的情况下,界面容易卡顿 借鉴其他游戏控件,写了个可复用的滚动组件,扩展.优化了ScrollView TableVie ...

  8. 学习HEXO的历程

    前言: 简介 开始搭建 命令 API测试 逛github相关的帖子时,发现了hexo.正好想要做一个个人的博客,用来记录自己的各类感悟,所以花一些时间学习学习,以后博客可以放github,省得去注册c ...

  9. iOS 9,为前端世界都带来了些什么?「译」 - 高棋的博客

    2015 年 9 月,Apple 重磅发布了全新的 iPhone 6s/6s Plus.iPad Pro 与全新的操作系统 watchOS 2 与 tvOS 9(是的,这货居然是第 9 版),加上已经 ...

  10. 关于配置cordova的一些细节

    网上多数资料都是:安装nodejs->通过node js安装cordova->JDK->设置环境变量JAVA_HOME->安装android SDK->设置环境变量AND ...