牛客CSP-S提高组赛前集训营2 赛后总结
A.服务器需求
维护每天需要的服务器数量的全局最大值(记为\(Max\))和总和(记为\(sum\)),那么答案为:
\]
证明略.
由于只有单点修改,可用一个 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 赛后总结的更多相关文章
- 牛客网CSP-S提高组赛前集训营Round4
牛客网CSP-S提高组赛前集训营 标签(空格分隔): 题解 算法 模拟赛 题目 描述 做法 \(BSOJ6377\) 求由\(n\)长度的数组复制\(k\)次的数组里每个连续子序列出现数字种类的和 对 ...
- 牛客CSP-S提高组赛前集训营3 赛后总结
货物收集 二分答案.复杂度\(O(n\log n)\). 货物分组 用费用提前计算的思想,考虑用一个新的箱子来装货物会发生什么. 显然费用会加上后面的所有货物的总重. \(60\)分的\(O(n^2) ...
- 牛客CSP-S提高组赛前集训营4 赛后总结
复读数组 分成 3 种区间算答案: 一个块内的区间 两个块交界处,长度小于块长的区间 长度不小于块长的区间 对于第三种区间,容易发现每个区间的权值一样,只需要算出个数即可. 对于前两种空间,我的思路是 ...
- 牛客CSP-S提高组赛前集训营5 赛后总结
A.无形的博弈 心理题. 答案为\(2^n\),可感性理解结论的正确性. #include<bits/stdc++.h> #define LL long long const LL Mod ...
- 牛客CSP-S提高组赛前集训营1
牛客CSP-S提高组赛前集训营1 比赛链接 官方题解 before:T1观察+结论题,T2树形Dp,可以换根或up&down,T3正解妙,转化为图上问题.题目质量不错,但数据太水了~. A-仓 ...
- 牛客CSP-S提高组赛前集训营3
A 货物收集 显然是一个二分答案的题. #include<iostream> #include<cstdio> #include<cstring> #include ...
- 牛客CSP-S提高组赛前集训营2 ———— 2019.10.31
比赛链接 期望得分:100+20+20 实际得分:40+20+30 awa cccc T1 :基于贪心的思路,然后开始爆搜(雾 那必然是会死的,好吧他就是死了 #include<iostrea ...
- 牛客CSP-S提高组赛前集训营1———2019.10.29 18:30 至 22:00
期望得分:100+0+10 实际得分:40+0+0 考炸了... T1:题目链接 究竟为什么会这样,,, 仔细研读我的丑代码 发现... 枯辽.... #include<cstdio> # ...
- 牛客CSP-S提高组赛前集训营2 T2沙漠点列
原题链接 算法不难,比赛的时候就和cyc大佬一起yy了正解,不过因为交的时候比较急(要回寝室惹),我有两数组开错大小直接爆到50,cyc大佬则只把文件输入关了一半,直接爆零(╯ ̄Д ̄)╯┻━┻ 要尽量 ...
随机推荐
- 并查集find,merge操作
一.find操作 //find操作路径压缩版 inline int find(int x){ if(fa[x]==x) return x; int t=find(fa[x]); fa[x]=t; re ...
- 使用expect实现自动交互,shell命令行自动输入
背景 有需求,在允许命令或者脚本跳出交互行,需要进行内容输入,但需要人手动输入,不是很方便,此时可以通过expect来实现自动互动交互. expect是一个自动交互功能的工具,可以满足代替我们实际工作 ...
- 剑指offer-面试题56_2-数组中唯一只出现一次的数字-位运算
/* 题目: 数组中除一个数字只出现一次外,其余数字都出现3次. */ /* 思路: 位运算. */ #include<iostream> #include<cstring> ...
- 四种常用的通知类型(xml)
1.maven依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...
- 吴裕雄--天生自然HADOOP操作实验学习笔记:分布式资源调度系统yarn的安装
实验目的 复习配置hadoop初始化环境 复习配置hdfs的配置文件 学会配置hadoop的配置文件 了解yarn的原理 实验原理 1.yarn是什么 前面安装好了hdfs文件系统,我们可以根据需求进 ...
- C#排序算法的实现---冒泡排序
一.算法原理 冒泡排序算法的运作如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对 ...
- stringstream使用小结
1.头文件:#include<sstream> 2.stringstream是C++提供的串流(stream)物件 3.clear()重置流的标志状态:str()清空流的内存缓冲,重复使用 ...
- 关于Comparable和Comparator那些事
在实际项目开发过程中,我们经常需要对某个对象或者某个集合中的元素进行排序,常用的两种方式是实现某个接口.常见的可以实现比较功能的接口有Comparable接口和 Comparator接口,那么这两个又 ...
- 使用javacv 截取视频指定帧节
个人博客 地址:https://www.wenhaofan.com/article/20190407105818 引入依赖 <dependency> <groupId>org. ...
- 0级搭建类002-Oracle Linux 8.x安装(OEL 8.0) 公开
项目文档引子系列是根据项目原型,制作的测试实验文档,目的是为了提升项目过程中的实际动手能力,打造精品文档AskScuti. 项目文档引子系列目前不对外发布,仅作为博客记录.如学员在实际工作过程中需提前 ...