题目

题意:

一条笨狗要去黑银行,银行有n个,它们之间用n-1条边连接。可以选择任意一个银行开始黑,但是后面每一次黑的银行都要求与已经黑过的银行直接相连。每个银行初始有一个防御值,每一个银行被黑后,与其直接相连的未被黑的银行的防御值会+1,与“与其直接相连的未被黑的银行”相连的未被黑的银行的防御值也会+1,。笨狗要黑完所有银行,且其电脑的强度要求大于等于所有银行被黑那一刻的防御值。现在要求电脑的最小强度。

分析:

记点x在被hack时比原来高的强度为s[x], 稍微尝试一下就会发现,s[第一次选的]=0,s[第一次选的的neighbor]=1,s[其他所有]=2.

选的 s有更新的
选4 s[4]=0 s[3]=s[5]=s[2]=s[6]=1
选5 s[6]=2 s[7]=1
选6 s[7]=2
选3 s[2]=2 s[1]=1
选7
选2 s[1]=2
选1

所以,暴力吧

 #include<cstdio>
#include<algorithm>
using namespace std;
typedef long long LL;
struct Edge
{
LL to,next;
}edge[];
LL num_edge,first[],d[],ans=0x3f3f3f3f,n;
struct Node
{
Node *lc,*rc;
LL l,r;
LL maxn;
}ssss[];//线段树,然而根本用不着
LL num_node;
Node* getnode()
{
return &ssss[num_node++];
}
Node* build(LL l,LL r)
{
Node *_tmp=getnode();
_tmp->l=l;
_tmp->r=r;
if(l==r)
{
_tmp->maxn=d[l];
//_tmp->lc=NULL;
//_tmp->rc=NULL;
return _tmp;
}
LL m=(l+r)>>;
_tmp->lc=build(l,m);
_tmp->rc=build(m+,r);
_tmp->maxn=max(_tmp->lc->maxn,_tmp->rc->maxn);
return _tmp;
}
LL query(LL L,LL R,Node *p)
{
LL l=p->l;
LL r=p->r;
if(L<=l&&r<=R)
return p->maxn;
LL ans=-0x3f,m=(l+r)>>;
if(L<=m) ans=max(ans,query(L,R,p->lc));
if(R>m) ans=max(ans,query(L,R,p->rc));
return ans;
}
void update(LL L,Node *p,LL x)
{
LL l=p->l;
LL r=p->r;
if(l==r)
{
//p->maxn=max(p->maxn,x);
p->maxn+=x;
return;
}
LL m=(l+r)>>;
if(L<=m) update(L,p->lc,x);
else update(L,p->rc,x);
p->maxn=max(p->lc->maxn,p->rc->maxn);
}
int main()
{
LL i,a,b,k;
scanf("%lld",&n);
for(i=;i<=n;i++)
scanf("%lld",&d[i]);
for(i=;i<n;i++)
{
scanf("%lld%lld",&a,&b);
edge[++num_edge].to=b;
edge[num_edge].next=first[a];
first[a]=num_edge;
edge[++num_edge].to=a;
edge[num_edge].next=first[b];
first[b]=num_edge;
}
Node *x=build(,n);
for(i=;i<=n;i++)
{
update(i,x,-);
k=first[i];
while(k!=)
{
update(edge[k].to,x,-);
k=edge[k].next;
}
ans=min(ans,query(,n,x)+);
update(i,x,);
k=first[i];
while(k!=)
{
update(edge[k].to,x,);
k=edge[k].next;
}
}
printf("%lld",ans);
//del(x);
return ;
}

再贴一张

Bank Hacking CodeForces - 796C的更多相关文章

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

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

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

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

  3. CodeForces - 796C Bank Hacking

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

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

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

  5. 【codeforces 796C】Bank Hacking

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

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

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

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

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

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

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

  9. Codeforces Round #408 (Div. 2) C.Bank Hacking(二分)

    传送门 题意 给出n个银行,银行之间总共有n-1条边,定义i与j有边相连为neighboring,i到j,j到k有边,则定义i到k的关系为semi- neighboring, 每家银行hack的难度为 ...

随机推荐

  1. notepad++的f90配置文件

    notepad++仅支持f77格式的,所以f90格式需要重新定义配置文件 传送门: http://ehc.ac/p/notepad-plus/discussion/331753/thread/8f72 ...

  2. 在MVC中使用泛型仓储模式和工作单元来进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...

  3. Spark 学习笔记:(三)Spark SQL

    参考:https://spark.apache.org/docs/latest/sql-programming-guide.html#overview http://www.csdn.net/arti ...

  4. Mac开发必备工具(一)—— Homebrew

    Homebrew 简介 macOS 缺失的软件包管理器.使用 Homebrew 安装 Apple 没有预装但 你需要的东西.官网有中文说明. 安装与配置 Homebrew 的安装非常简单,将下面这条命 ...

  5. spring mvc带参数重定向

    http://blog.csdn.net/jackpk/article/details/19121777/ https://isudox.com/2017/02/16/spring-mvc-redir ...

  6. local_irq_disable

    local_irq_disable 仅仅是 设置 当前CPU 的中断屏蔽位 disable_irq 是禁用 全部cpu 中断(只是当前irq) 如果你要禁止所有的中断该怎么办? 在2.6内核中,可以通 ...

  7. Hihocoder #1014 : Trie树 (字典数树统计前缀的出现次数 *【模板】 基于指针结构体实现 )

    #1014 : Trie树 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助, ...

  8. 织梦CMS首页、列表页文章如何调出该文章TAG标签?

    1.如果是dedecms v5.7版本直接使用标签 [field:id function=GetTags(@me)/] 就可以调用出来了.只不过不带连接的. 2.如果需要连接请注释掉include/h ...

  9. Hibernate写hql语句与不写hql语句的区别?

    写hql语句与不写hql语句的区别? 写hql语句:书写HQL语句,所有的查询与投影的设计均使用HQL语句完成. 不写hql语句:没有任何查询语句,所有的查询与投影的设计使用面向对象格式完成. 二者选 ...

  10. SPFA 最短路 带负权边的---- 粗了解

    SPFA(Shortest Path Faster Algorithm)是Bellman-Ford算法的一种队列实现,减少了不必要的冗余计算. 算法大致流程是用一个队列来进行维护. 初始时将源加入队列 ...