牛客CSP-S提高组赛前集训营2
时间:2019-11-01
本文章向大家介绍牛客CSP-S提高组赛前集训营2,主要包括牛客CSP-S提高组赛前集训营2使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
牛客CSP-S提高组赛前集训营2
T1 服务器需求
服务器需求
假如没有修改
很明显答案就是\(max(a_i,\lceil{sum/m}\rceil)\)
带修??
multiset过掉
没开\(long\) \(long\)见了一次祖宗
#include<bits/stdc++.h>
#define ll long long
#define int long long
using namespace std;
const int maxn=4*1e5+10;
int n,m,q,a[maxn];
ll sgm=0;
multiset<ll,greater<ll> > st;
signed main()
{
scanf("%lld%lld%lld",&n,&m,&q);
for(int i=1;i<=n;i++) scanf("%lld",&a[i]),sgm+=a[i],st.insert(a[i]);
ll maxx=(sgm+(m-1))/m;
maxx=max(maxx,*st.begin());
printf("%lld\n",maxx);
while(q--){
int x,y;scanf("%lld%lld",&x,&y);
st.erase(st.find(a[x]));sgm-=a[x];
st.insert(y);a[x]=y;sgm+=a[x];
maxx=max((sgm+(m-1))/m,(ll)*st.begin());
printf("%lld\n",maxx);
}
return 0;
}
T2 沙漠点列
沙漠点列
一眼看上去割边
但是剩下连通块的简单环的怎么办
只能多消耗一次去先断环,然后剩下的都是割边
可以用桶找最大环
先爆栈又忘了判断大于零见了一上午祖宗
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=2*1e6+10;
int n,m,k,head[maxn],tot=1,ans,to[maxn<<1];
struct node{
int nxt,to;
#define nxt(x) e[x].nxt
#define to(x) e[x].to
}e[maxn<<1];
inline void add(int from,int to){
to(++tot)=to;nxt(tot)=head[from];head[from]=tot;
}
int dfn[maxn],low[maxn],num,rt,br[maxn<<1],maxx,cut;
void tarjan(int x,int in){
dfn[x]=low[x]=++num;
for(int i=head[x];i;i=nxt(i)){
int y=to(i);
if(!dfn[y]){
tarjan(y,i);
low[x]=min(low[x],low[y]);
if(low[y]>dfn[x]){
br[i]=br[i^1]=1,cut++;
}
}else if(i!=(in^1)) low[x]=min(low[x],dfn[y]);
}
}
int ds[maxn];
inline void search(int x,int fa){
ds[x]=ds[fa]+1;
for(int i=head[x];i;i=nxt(i)){
int y=to(i);
if(y==fa || br[i]) continue;
if(ds[y]){
to[max(ds[x]-ds[y]+1,(int)0)]++;maxx=max(maxx,ds[x]-ds[y]+1);continue;
}
search(y,x);
}
}
signed main()
{
scanf("%lld%lld%lld",&n,&m,&k);
for(int x,y,i=1;i<=m;i++){
scanf("%lld%lld",&x,&y);add(x,y);add(y,x);
}
for(int i=1;i<=n;i++) if(!dfn[i]) tarjan(i,0),ans++;
if(cut>=k){
printf("%lld\n",ans+k);return 0;
}
k-=cut;ans+=cut;
for(int i=1;i<=n;i++) if(!ds[i]) search(i,0);
for(int len=maxx;len;len--) if(to[len]){
while(to[len]){
to[len]--;int x=len;k--;
if(!k){
printf("%lld\n",ans);return 0;
}
if(k<=x-1){
printf("%lld\n",ans+k);return 0;
}
k-=x-1;ans+=x-1;
}
}
printf("%lld\n",ans);
return 0;
}
T3 ?????
咕咕咕?????
原文地址:https://www.cnblogs.com/ChrisKKK/p/11776181.html
- 代码编辑器Sublime Text 3 免费使用方法与简体中文汉化包下载
- TCP/IP 选项TcpTimedWaitDelay设置
- Windows 远程管理WinRM
- Sublime text 3 中Package Control 的安装与使用方法
- 用functools.lru_cache实现Python的Memoization
- 腾讯互联网与社会研究院秘书长司晓:将联合开展研究合作
- 幻灯片jQuery插件Orbit 介绍(附添加到WordPress教程)
- Gravatar开发者手册
- Gravatar开发者手册
- 使用Google CDN服务提供的jQuery库
- 比特币的分叉币都认为能够取代比特币,事实真的是这样吗?
- Google官方网页载入速度检测工具PageSpeed Insights 使用教程
- ASP.NET 路由
- Kafka定时清除过期数据
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 开源一个 Sliverlight 导航框架
- 【DB笔试面试852】在Oracle中,什么是静默建库?
- 从 SVN 迁移到 Git
- 在 Windows 系统上配置 Apache Git 服务器
- WMCTF2020 部分Writeup&招新帖
- 【DB宝15】生产环境中,如何利用DG的备库来异机还原一个新库?
- Java命令执行学习笔记
- SAP UI5应用DatePicker控件的设计明细
- 如何根据自己的实际需求开发属于自己的sublime text插件
- Sony Z13 系列笔记本安装 NVIDIA 官方最新版显卡驱动程序
- 通过网页进行 iOS 应用内部分发
- 【DB笔试面试853】在Oracle中,什么是手动建库?手动建库有哪些步骤?
- 使用 Intel HAXM 为 Android 模拟器加速,媲美真机
- NHibernate 使用 SqlQuery
- 谈谈 INotifyPropertyChanged 的实现