比赛链接

A.服务器需求

维护每天需要的服务器数量的全局最大值(记为\(Max\))总和(记为\(sum\)),那么答案为:

\[max(Max,\lceil\dfrac{sum}{m}\rceil)
\]

证明略.

由于只有单点修改,可用一个 multiset 维护全局最大值和总和,当然,线段树也是可以的.

不过有一个易错点,在使用 multiset 的\(\text{.erase()}\)函数时,

  • 如果写\(\text{s.erase(5)}\),传入一个值,会删除所有的 5 .
  • 如果写\(\text{s.erase(find(5))}\),传入一个迭代器,只会删除 1 个 5.
#include<bits/stdc++.h>
const int SIZE=400005;
#define LL long long
int n,q,p;
LL m,x[SIZE],C,sum;
std::multiset<LL>s; LL F()
{
LL R=sum/m;
if(sum%m>0)
++R;
if(R<*--s.end())
R=*--s.end();
return R;
} int main()
{
scanf("%d%lld%d",&n,&m,&q);
for(int i=1;i<=n;i++)
{
scanf("%lld",&x[i]);
sum+=x[i];
s.insert(x[i]);
}
printf("%lld\n",F());
while(q--)
{
scanf("%d%lld",&p,&C);
sum-=x[p];
s.erase(s.find(x[p]));
x[p]=C;
s.insert(C);
sum+=C;
printf("%lld\n",F());
}
return 0;
}

B.沙漠点列

Tarjan 求割边和点双联通分量.

按贪心的思路,首先删除割边,每删除一条割边就会新出现一个连通块.

如果割边删完了,则删除点双联通分量中的边,容易发现,如果删除了一个点双联通分量中的\(j(j>0)\)条边,那么新出现\(j-1\)个连通块.

也就是说,删完一个点双联通分量,需要删除比新产生连通块数多 1 的边数,会浪费掉 1 次删边机会,我们想让这样的浪费尽可能少,所以贪心地从大的点双联通分量开始删起.

开始的时候我以为一个连通块就是一个环,也就是一个点双联通分量,然后才发现不是这样的

牛客CSP-S提高组赛前集训营2 赛后总结的更多相关文章

  1. 牛客网CSP-S提高组赛前集训营Round4

    牛客网CSP-S提高组赛前集训营 标签(空格分隔): 题解 算法 模拟赛 题目 描述 做法 \(BSOJ6377\) 求由\(n\)长度的数组复制\(k\)次的数组里每个连续子序列出现数字种类的和 对 ...

  2. 牛客CSP-S提高组赛前集训营3 赛后总结

    货物收集 二分答案.复杂度\(O(n\log n)\). 货物分组 用费用提前计算的思想,考虑用一个新的箱子来装货物会发生什么. 显然费用会加上后面的所有货物的总重. \(60\)分的\(O(n^2) ...

  3. 牛客CSP-S提高组赛前集训营4 赛后总结

    复读数组 分成 3 种区间算答案: 一个块内的区间 两个块交界处,长度小于块长的区间 长度不小于块长的区间 对于第三种区间,容易发现每个区间的权值一样,只需要算出个数即可. 对于前两种空间,我的思路是 ...

  4. 牛客CSP-S提高组赛前集训营5 赛后总结

    A.无形的博弈 心理题. 答案为\(2^n\),可感性理解结论的正确性. #include<bits/stdc++.h> #define LL long long const LL Mod ...

  5. 牛客CSP-S提高组赛前集训营1

    牛客CSP-S提高组赛前集训营1 比赛链接 官方题解 before:T1观察+结论题,T2树形Dp,可以换根或up&down,T3正解妙,转化为图上问题.题目质量不错,但数据太水了~. A-仓 ...

  6. 牛客CSP-S提高组赛前集训营3

    A 货物收集 显然是一个二分答案的题. #include<iostream> #include<cstdio> #include<cstring> #include ...

  7. 牛客CSP-S提高组赛前集训营2 ———— 2019.10.31

    比赛链接 期望得分:100+20+20 实际得分:40+20+30 awa  cccc T1 :基于贪心的思路,然后开始爆搜(雾 那必然是会死的,好吧他就是死了 #include<iostrea ...

  8. 牛客CSP-S提高组赛前集训营1———2019.10.29 18:30 至 22:00

    期望得分:100+0+10 实际得分:40+0+0 考炸了... T1:题目链接 究竟为什么会这样,,, 仔细研读我的丑代码 发现... 枯辽.... #include<cstdio> # ...

  9. 牛客CSP-S提高组赛前集训营2 T2沙漠点列

    原题链接 算法不难,比赛的时候就和cyc大佬一起yy了正解,不过因为交的时候比较急(要回寝室惹),我有两数组开错大小直接爆到50,cyc大佬则只把文件输入关了一半,直接爆零(╯ ̄Д ̄)╯┻━┻ 要尽量 ...

随机推荐

  1. MATLAB应用专题part1-电力电子仿真技术

    士不可以不弘毅,任重而道远.仁以为己任,不亦重乎?死而后已,不亦远乎?  --曾参 C语言系列需要过一段时间才能更新了.这些天学习C语言我感觉有点崩溃了,所以我先开另外一个专题-matlab应用专题. ...

  2. VM虚拟机扩展Ubuntu磁盘空间

    VM虚拟机扩展Ubuntu磁盘空间 1 环境 VMware版本号:15.0.2 build-10952284 系统:Ubuntu18.04 Ubuntu只挂载一个硬盘,无分区 /dev/sda1 2 ...

  3. 185.nvm和node.js环境配置

    安装nvm nvm(Node Version Manager)是一个用来管理node版本的工具,我们之所以使用node,是因为我们需要使用node中的npm(Node Package Manager) ...

  4. C# WPF联系人列表(1/3)

    微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. C# WPF联系人列表(1/3) 阅读导航 本文背景 代码实现 本文参考 1.本文背景 聊天软 ...

  5. Linux systemctl系统工具常用总结(详)

    systemctl是一个系统自带的服务管理工具,可以管理系统的服务的,启动.停止.重启.自启.监视.也可以对脚本程序后台运行管理. 文章以nginx.service举例 基础命令: systemctl ...

  6. 【MySql】数据库连接异常:Thelastpacketsentsuccessfullytotheserverwas0millisecondsago

    参考链接:http://blog.sina.com.cn/s/blog_7540bf5f0102xjpk.html 最近新入职,用了新版的mysql8数据库,结果连接数据库时出现了问题,报了几个异常, ...

  7. JN_0010:谷歌浏览器启动安全模式,直接打开H5项目

    1,找到桌面chrome 2,复制粘贴一份新的 3,右键属性 4,在目标输入框最末端加上这句(注意空格) --disable-web-security --user-data-dir=D:\chrom ...

  8. 谷歌更新后,chromedriver如何更换新版本

    前天,更新了78版本的谷歌后,chromedriver便不能用了,于是在ChromeDriver仓库下载了相对应版本的chromedriver. 并且放入谷歌文件下C:\Program Files ( ...

  9. SpringJpa CRUD 代码生成器

    利用业余时间撸了一个Spring Jpa代码生成器jpa-codegen. 简介 这是一款基于Freemarker模板驱动的代码生成器. 依据现有的实体类代码,自动生成CRUD代码,解放双手,加快开发 ...

  10. A Bug's Life HDU - 1829 种类并查集

    //有n个成员,并查集开两倍空间 //1~n为一组, n+1~2n为一组.a与b互斥,则a与b反(即b+n)为同一集合, //同时b与a反(a+n)为同一集合 //在union操作中,引入w ,w越大 ...