这题我第一眼居然差点错了\(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)\)

可能你也想写线段树?

代码:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define rint register int
  4. #define ll long long
  5. const int MAX = 4e5 + 10;
  6. int n, q, a[MAX + 2], maxn;
  7. ll ans, m, tans;
  8. struct tree{
  9. ll m;
  10. }t[(MAX<<2) + 2];
  11. inline void build( int x, int l, int r ){
  12. if( l == r ){
  13. t[x].m = a[l];
  14. return;
  15. }
  16. int mid = ( l + r ) >> 1;
  17. build( x << 1, l, mid); build( x << 1 | 1, mid + 1, r);
  18. t[x].m = max( t[x<<1].m, t[x<<1|1].m );
  19. }
  20. inline void pushup( int x ){
  21. t[x].m = max( t[x << 1].m, t[x << 1 | 1].m );
  22. }
  23. inline void update( int now, int pos, ll val, int l, int r ){
  24. if( l == r ){
  25. t[now].m = val; return ;
  26. }
  27. int mid = ( l + r ) >> 1;
  28. if( pos <= mid ) update( now << 1, pos, val, l, mid );
  29. else update( now << 1 | 1, pos, val, mid + 1, r );
  30. pushup( now );
  31. }
  32. inline int read( void ){
  33. register ll re = 0;
  34. char ch = getchar();
  35. while( ch < '0' || ch > '9' ) ch = getchar();
  36. while(ch >= '0' && ch <= '9' ){
  37. re = re * 10 + ch - '0';
  38. ch = getchar();
  39. }
  40. return re;
  41. }
  42. int main( void ){
  43. n = read(); m = read(); q = read();
  44. int maxn = 0;
  45. for( int i = 1; i <= n ; i++ ){
  46. a[i] = read(); ans += a[i];
  47. if( maxn < a[i] ) maxn = a[i];
  48. }
  49. tans = ( ans - 1 ) / m + 1;
  50. if( maxn > tans ) cout << maxn << endl; else cout << tans << endl;
  51. build( 1, 1, n );
  52. for( rint i = 1; i <= q; i++ ){
  53. int t1, t2; t1 = read(); t2 = read();
  54. ans = ans + t2 - a[t1];
  55. a[t1] = t2;
  56. tans = ( ans - 1 ) / m + 1;
  57. update( 1, t1, t2, 1, n );
  58. if( tans > t[1].m ) printf( "%lld\n", tans );
  59. else printf( "%lld\n", t[1].m );
  60. }
  61. return 0;
  62. }

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. Java实现Luhm算法--银行卡号合法性校验

    银行卡是由"发卡行标识代码 + 自定义 + 校验码 "等部分组成的. 银联标准卡与以往发行的银行卡最直接的区别就是其卡号前6位数字的不同.   银行卡卡号的前6位是用来表示发卡银行 ...

  2. canvas基本

    基本 支持ie 9+,firefox,opera,chrome,safari html: <canvas id="fir_canvas" width="400&qu ...

  3. Leetcode 412.FizzBuzz

    题目描述 写一个程序,输出从 1 到 n 数字的字符串表示. 1. 如果 n 是3的倍数,输出"Fizz": 2. 如果 n 是5的倍数,输出"Buzz": 3 ...

  4. Swift iOS实现把PCM语音转成MP3格式

    最近折腾了swift的语音录制识别和转码,这块还是比较坑的,由于语音识别的准确度实测大概也就80%左右,所以还是需要上传录音文件啊.首先是用讯飞语音SDK实现语音录制和识别(语音听写),第一个坑是讯飞 ...

  5. C语言链表的基本操作

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  6. Internet上的音频/视频概述

    Internet上的音频/视频概述 计算机网络最初是为传送数据信息设计的.因特网 IP 层提供的"尽最大努力交付"服务,以及每一个分组独立交付的策略,对传送数据信息也是很合适的. ...

  7. 基本类型和引用类型的值 [重温JavaScript基础(一)]

    前言: JavaScript 的变量与其他语言的变量有很大区别.JavaScript 变量松散类型的本质,决定了它只是在特定时间用于保存特定值的一个名字而已.由于不存在定义某个变量必须要保存何种数据类 ...

  8. maven笔记--持续更新

    笔记: 在创建maven项目的时候,如果用到servlet的时候,需要导入包,这时候,需要导入本地仓库的jar包,即依赖包.语法如下 <dependency> <groupId> ...

  9. 微信小程序支付到第三方商户账号

    使用场景:合作商家使用本公司小程序开店,要求支付金额直接到合作商家的公司微信账户; 使用要求:合作商家需提供微信支付关联,商户号,商户API密钥,API证书(该证书只用作退款功能,不开发退款可以不用) ...

  10. TCP/IP协议族的四个层次

    OSI7层模型的小结 : 在7层模型中,每一层都提供一个特殊的网络功能.从网络功能的角度看:下面4层(物理层.数据链路层.网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主:第4 ...