题目:

题意:

  有一颗树,你可以断开点(第一个随便断,以后只能是和已经断开的点相临的点),每个点有权值,断开之后,经一条边和两条边可以到达的节点权值加一,问到最后出现过的最大的权值。

分析:

  为啥断开之后就剩下的点就不算相邻了呢。。。(原题说的是掉线,可是掉线之后线依然在啊。。。),其实题意好像是掉线之后就断开了。

  拿这不就简单了,不管从谁开始断,都会分成几个子树,然后子树又只能从根开始断,这样就有,选作根的点权值为原权值,剩下的和它相邻的权值+1,剩下的权值+2。

  然后就随便处理一下就好了,为了方便理解,列出情况:

  1.只有一个ma(ma表示最大的点的权值){

    所有ma-1都与它相邻或没有ma-1

      ans=ma

    剩下的情况

      ans=ma+1

  }

  2.有多个ma{

    所有ma都与其中一个相邻

      ans=ma+1

    剩下的情况

      ans=ma+2

  }

  最后是代码:

  

#include <cstdio>
#include <string>
using namespace std;
const int maxn=*1e5+;
int a[maxn];
struct E{
int next;
int to;
E(){
to=next=;
}
}ed[maxn*];
int head[maxn];
int tot;
void J(int a,int b){
tot++;
ed[tot].to=b;
ed[tot].next=head[a];
head[a]=tot;
}
int main(){
int n;
scanf("%d",&n);
int ma=-1e9-;
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
ma=max(ma,a[i]);
}
int j1,j2;
for(int i=;i<=n-;i++){
scanf("%d%d",&j1,&j2);
J(j1,j2);
J(j2,j1);
}
int js1=,js2=;//表示ma和ma-1的个数
for(int i=;i<=n;i++){
if(a[i]==ma)
js1++;
if(a[i]==ma-)
js2++;
}
if(js1==){//分情况处理一下
int js=;
for(int i=;i<=n;i++)
if(a[i]==ma){
for(int j=head[i];j;j=ed[j].next)
if(a[ed[j].to]==ma-)
js++;
break;
}
if(js==js2)
printf("%d",ma);
else
printf("%d",ma+);
}
else{
int js=;
int zjs=;
for(int i=;i<=n;i++){
if(a[i]==ma)
zjs++;
for(int j=head[i];j;j=ed[j].next)
if(a[ed[j].to]==ma)
zjs++;
js=max(js,zjs);
zjs=;
}
if(js==js1)
printf("%d",ma+);
else
printf("%d",ma+); }
return ;
}

Bank Hacking题解的更多相关文章

  1. CF796C Bank Hacking 题解

    洛谷链接 题目 Although Inzane successfully found his beloved bone, Zane, his owner, has yet to return. To ...

  2. Code Forces 796C Bank Hacking(贪心)

    Code Forces 796C Bank Hacking 题目大意 给一棵树,有\(n\)个点,\(n-1\)条边,现在让你决策出一个点作为起点,去掉这个点,然后这个点连接的所有点权值+=1,然后再 ...

  3. C. Bank Hacking 解析(思維)

    Codeforce 796 C. Bank Hacking 解析(思維) 今天我們來看看CF796C 題目連結 題目 略,請直接看原題. 前言 @copyright petjelinux 版權所有 觀 ...

  4. CF796C Bank Hacking 思维

    Although Inzane successfully found his beloved bone, Zane, his owner, has yet to return. To search f ...

  5. codeforce 796C - Bank Hacking(无根树+思维)

    题目 Although Inzane successfully found his beloved bone, Zane, his owner, has yet to return. To searc ...

  6. CodeForces - 796C Bank Hacking

    思路:共有n-1条边连接n个点,即形成一棵树.一开始需要选择一个点hack--将这个点视为根结点,与它相邻的点防御值加1,与它相隔一个在线点的点的防御也加1.当根节点被hack,即这个点被删除,又变成 ...

  7. Codeforces Round #408 (Div. 2)C. Bank Hacking(STL)

    题目链接:http://codeforces.com/problemset/problem/796/C 题目大意:有n家银行,第一次可以攻击任意一家银行(能量低于自身),跟被攻击银行相邻或者间接相邻( ...

  8. Codeforces Round #408 (Div. 2) C. Bank Hacking

    http://codeforces.com/contest/796/problem/C Although Inzane successfully found his beloved bone, Zan ...

  9. 【codeforces 796C】Bank Hacking(用一些技巧来代替multiset)

    [题目链接]:http://codeforces.com/contest/796/problem/C [题意] 给你n个节点,你一开始选择一个节点,然后打掉它,然后与被打掉过的节点相连的节点才能被 打 ...

随机推荐

  1. MyBatis整合双数据源

    有时候在项目中会遇到需要连接两个数据库的情况.本文就结合Spring和Mybatis来讲下怎么使用双数据源(或者是多数据源). 背景知识介绍 本文中实现多数据源的关键是Spring提供的Abstrac ...

  2. 使用百度地图时,Application类的onCreate执行两次的解决方案

    应用做的匆忙,很多地方只顾实现功能,没有兼顾好性能,所以停下来重构代码优化性能,结果在打log看启动时间的时候,发现Application的onCreate执行了多次,这样导致重复初始化资源,初始化了 ...

  3. 提高编译速度! 第一次运行需要注释掉,不然会报错,因为需要编译SO库文件 !

    // 提高编译速度! 第一次运行需要注释掉,不然会报错,因为需要编译SO库文件 ! tasks.whenTaskAdded { task -> if (task.name.contains(&q ...

  4. Java基础?看完以后再也不惧怕面试了

    前言 这篇文章主要是Java基础部分,主要分为3个部分:Java集合.Java多线.JVM:这些东西帮助我面试成功率提升了很多.后面还有中间件Spring.Redis.RocketMQ等等吧,祝愿大家 ...

  5. el-table的花样需求---表格加图片、加音频、加序号、多级动态表头

    elemnet-ui组件库大家应该不陌生,在展示多条结构类似的数据方面,el-table可谓扛把子,不仅可以把数据展示的整齐,还支持排序.筛选或其他自定义操作.那么,除了上述的基本功能外,你还遇到过哪 ...

  6. @bzoj - 3148@ 没头脑和不高兴

    目录 @description@ @solution@ @part 1:期望@ @part 2:方差@ @accepted code@ @details@ @description@ 没头脑和不高兴是 ...

  7. (五)使用logback进行日志记录

    原文:https://www.cnblogs.com/taiyonghai/p/9290641.html 引入jar包 此处如果是引用了spring boot则不需要再引一下的jar包了,spring ...

  8. 一篇文章教会你使用Python定时抓取微博评论

    [Part1--理论篇] 试想一个问题,如果我们要抓取某个微博大V微博的评论数据,应该怎么实现呢?最简单的做法就是找到微博评论数据接口,然后通过改变参数来获取最新数据并保存.首先从微博api寻找抓取评 ...

  9. Elasticsearch系列---生产集群的索引管理

    概要 索引是我们使用Elasticsearch里最频繁的部分日常的操作都与索引有关,本篇从运维人员的视角,来玩一玩Elasticsearch的索引操作. 基本操作 在运维童鞋的视角里,索引的日常操作除 ...

  10. 15.DRF-分页

    Django rest framework(6)----分页 第一种分页 PageNumberPagination 基本使用 (1)urls.py urlpatterns = [ re_path('( ...