C. Bank Hacking 解析(思維)
Codeforce 796 C. Bank Hacking 解析(思維)
今天我們來看看CF796C
題目連結
題目
略,請直接看原題。
前言

想法
首先稍微在腦中模擬一下大概整個流程是怎麼進行的,會發現以下幾件事:
- 選取點\(v\)開始整個流程,之後是對以\(v\)為根的樹"Hack",並且銀行防禦力增加只會加到子節點
- 每個點最多被\(+2\)
那麼我們可以想到以下的結論:
首先維護\(:\)最大的\(a[i]\)(\(mx\)),次大的\(a[i]\)(\(smx\)),最大的\(a[i]\)的點的個數(\(cmx\)),次大的\(a[i]\)的點的個數(\(csmx\))
- 如果\(mx\)只有\(1\),那麼我們一定是從這個點開始,否則我們最少需要\(mx+1\)的力量(次大的點最多\(+2\),也就是\(smx+2\),其小於等於\(mx+1\))。而如果這個點包含了所有的次大的點,那麼答案就是\(mx\),否則就是\(\max\{smx+2,mx\}\)。
- 如果\(mx\)有多個,那麼我們只需要遍歷所有點,看看有沒有點連接(含本身)了所有\(a[i]\)最大的點(就算點本身就是\(mx\),由於有多個值為\(mx\)的點,我們最小還是需要\(mx+1\)的力量),如果有,那麼答案就是\(mx+1\),否則就是\(mx+2\)。(這個流程等於是遍歷所有的邊,所以複雜度是\(O(2(n-1))\))
程式碼:
const int _n=3e5+10;
int t,n,a[_n],cmx,csmx,mx=-1e9-1,smx=-1e9-1,cnt,uu,v;
VI G[_n];
main(void) {ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>n;rep(i,1,n+1)cin>>a[i];rep(i,1,n){cin>>uu>>v;G[uu].pb(v),G[v].pb(uu);}
rep(i,1,n+1)mx=max(mx,a[i]);rep(i,1,n+1)if(a[i]!=mx)smx=max(smx,a[i]);
rep(i,1,n+1)if(a[i]==mx)cmx++;rep(i,1,n+1)if(a[i]==smx)csmx++;
if(cmx==1){
rep(i,1,n+1)if(a[i]==mx)for(int u:G[i])if(a[u]==smx)cnt++;
if(cnt==csmx)cout<<mx<<'\n';
else cout<<max(mx,smx+2)<<'\n';
}else{
rep(i,1,n+1){
cnt=0;if(a[i]==mx)cnt++;
for(int u:G[i])if(a[u]==mx)cnt++;
if(cnt==cmx){cout<<mx+1<<'\n';return 0;}
}cout<<mx+2<<'\n';
}
return 0;
}
標頭、模板請點Submission看
Submission
C. Bank Hacking 解析(思維)的更多相关文章
- A. Arena of Greed 解析(思維)
Codeforce 1425 A. Arena of Greed 解析(思維) 今天我們來看看CF1425A 題目連結 題目 略,請直接看原題. 前言 明明是難度1400的題目,但總感覺不是很好寫阿, ...
- E. Almost Regular Bracket Sequence 解析(思維)
Codeforce 1095 E. Almost Regular Bracket Sequence 解析(思維) 今天我們來看看CF1095E 題目連結 題目 給你一個括號序列,求有幾個字元改括號方向 ...
- C2. Power Transmission (Hard Edition) 解析(思維、幾何)
Codeforce 1163 C2. Power Transmission (Hard Edition) 解析(思維.幾何) 今天我們來看看CF1163C2 題目連結 題目 給一堆點,每兩個點會造成一 ...
- F. Moving Points 解析(思維、離散化、BIT、前綴和)
Codeforce 1311 F. Moving Points 解析(思維.離散化.BIT.前綴和) 今天我們來看看CF1311F 題目連結 題目 略,請直接看原題. 前言 最近寫1900的題目更容易 ...
- B. Two Arrays 解析(思維)
Codeforce 1417 B. Two Arrays 解析(思維) 今天我們來看看CF1417B 題目連結 題目 略,請直接看原題. 前言 a @copyright petjelinux 版權所有 ...
- C. k-Amazing Numbers 解析(思維)
Codeforce 1417 C. k-Amazing Numbers 解析(思維) 今天我們來看看CF1417C 題目連結 題目 略,請直接看原題. 前言 我實作好慢... @copyright p ...
- D. Road to Post Office 解析(思維)
Codeforce 702 D. Road to Post Office 解析(思維) 今天我們來看看CF702D 題目連結 題目 略,請直接看原題. 前言 原本想說會不會也是要列式子解或者二分搜,沒 ...
- B. Kay and Snowflake 解析(思維、DFS、DP、重心)
Codeforce 685 B. Kay and Snowflake 解析(思維.DFS.DP.重心) 今天我們來看看CF685B 題目連結 題目 給你一棵樹,要求你求出每棵子樹的重心. 前言 完全不 ...
- D. Rescue Nibel! 解析(思維、組合、離散化、差分)
Codeforce 1420 D. Rescue Nibel! 解析(思維.組合.離散化.差分) 今天我們來看看CF1420D 題目連結 題目 給你\(n\)個區間,求有幾種方法使得\(k\)個區間的 ...
随机推荐
- ZooKeeper学习(一)了解ZooKeeper
一.什么是ZooKeeper ZooKeeper主要服务于分布式系统,可以用ZooKeeper来做:统一配置管理.统一命名服务.分布式锁.集群管理. 使用分布式系统就无法避免对节点管理的问题(需要实时 ...
- 刷题[NPUCTF2020]ezlogin
xpath注入 xpath注入这篇文章有关于xpath很详细的解答,包括原理等,详细了解请见此篇. 我个人再稍微讲一讲: 首先它的网站目录下会有一个xml文件,大概格式是这样: <?xml ve ...
- linux 基础语法
1.linux常用命令 1.1 系统命令 runlevel # 查看当前的运行级别systemctl status sshd # 开启网络服务功能 ...
- jquery,Datatables插件使用,做根据【日期段】筛选数据的功能 jsp
时间格式为yyyymmdd,通过转换为int类型进行比较大小 画面: jsp代码: 1 //日期显示控件,使用h-ui框架 2 3 <div class="text-c"& ...
- .net Winform 揭开语音识别的神秘面纱
今天老哥弄上位机,了解到一个有意思的东西,就是语音识别,真的很简单,话不多话,一起看图吧 1. 初始 Winform 界面设计: 2.潦潦几句代码书写着我的理解: 2-1. 先看引用 dll usi ...
- 无所不能的embedding 3. word2vec->Doc2vec[PV-DM/PV-DBOW]
这一节我们来聊聊不定长的文本向量,这里我们暂不考虑有监督模型,也就是任务相关的句子表征,只看通用文本向量,根据文本长短有叫sentence2vec, paragraph2vec也有叫doc2vec的. ...
- 怎样禁用UEFI boot option中的USB启动,防止U盘WIN PE系统黑入电脑?
Title: Disable all UEFI boot options tblatt 问: Hello, system: Latitude E6530 I want to disable all U ...
- 064 01 Android 零基础入门 01 Java基础语法 08 Java方法 02 无参带返回值方法
064 01 Android 零基础入门 01 Java基础语法 08 Java方法 02 无参带返回值方法 本文知识点:无参带返回值方法 说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进 ...
- 048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例——阶乘的累加和
048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例--阶乘的累加和 本文知识点:通过案例练习嵌套循环应用 案例练习--阶乘的累加和 案例题目 ...
- Win10安装MongoDB
1. 下载安装包:mongodb-win32-x86_64-2012plus-4.2.7-signed.msi 2. 安装,注意选择安装目录 3. 新建配置文件mongo.conf: ``` #数据 ...