题目

题意:

一条笨狗要去黑银行,银行有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. Handler之IdleHandler

    MessageQueue提供了另一类消息,IdleHandler 如果返回false,每次轮询都会调用(理论上应该可以做一些别的东西) Looper.myQueue().addIdleHandler( ...

  2. 不能实现RadioButton默认选择

    当用RadioButton时,希望在程序运行的时候默认一个选项: CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1); //CheckRadioBut ...

  3. 小程序多级下拉菜单demo

    小程序多级下拉菜单demo - CSDN博客 https://blog.csdn.net/github_39371177/article/details/80251211

  4. PR修改例子

    DATA: lt_items_old    LIKE TABLE OF bapiebanv   WITH HEADER LINE.   DATA: lt_items_new    LIKE TABLE ...

  5. linux 解决 Device eth0 does not seem to be present

    在虚拟机中安装cent os系统,然后配置网络 执行命令ifconfig 没有看到eth0的信息: 重启网卡报错: service network restart Shutting down loop ...

  6. mongodb mongod 参数解释

    基本配置----------------------------------------------------------------------------------quiet # 安静输出-- ...

  7. .NET 的 WebSocket 开发包比较 【已翻译100%】--网址:http://www.oschina.net/translate/websocket-libraries-comparison-2

    编者按 本文出现在第三方产品评论部分中.在这一部分的文章只提供给会员,不允许工具供应商用来以任何方式和形式来促销或宣传产品.请会员报告任何垃圾信息或广告. Web项目常常需要将数据尽可能快地推送给客户 ...

  8. Android studio 构建太慢

    /*********************************************************************************** * Android studi ...

  9. WC2017游记

    Day0 到杭州之后出了点锅换了辆车,等了好久才开= =到宿舍发现路由器就在房门口,稳啊,过了一会儿就连不上了= =而且只有门口那个连不上,可以连上楼下的= =之后干了啥也忘了…… Day1 上午直接 ...

  10. CTR预估经典模型总结

    计算广告领域中数据特点:    1 正负样本不平衡    2 大量id类特征,高维,多领域(一个类别型特征就是一个field,比如上面的Weekday.Gender.City这是三个field),稀疏 ...