XTOJ 1252 Defense Tower 贪心
Posted shuguangzw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XTOJ 1252 Defense Tower 贪心相关的知识,希望对你有一定的参考价值。
题目链接:http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1252
思路:考虑每条边对玩家的伤害
假设连接的节点是u,v,破坏力是p[u]和p[v]
假设p[u]>p[v]
现在考虑u,v的删除顺序,如果先删u,这条边对玩家的伤害,是p[v],先删v,伤害是p[u]
所以显然对于每条边,我们都要先删权值大的,才能最好
怎么样才能对于每条边先删最大的呢,那就按照权值递减删就好了
所以 ret=Σ(min(p[u],p[v]))
复杂度O(n)
#include <cstdio> using namespace std; const int N=1e5+5; int p[N]; int main(){ int n; while(~scanf("%d",&n)){ for(int i=1;i<=n;++i) scanf("%d",&p[i]); int ret=0; for(int i=1;i<n;++i){ int u,v; scanf("%d%d",&u,&v); ret+=min(p[u],p[v]); } printf("%d\\n",ret); } return 0; }
以上是关于XTOJ 1252 Defense Tower 贪心的主要内容,如果未能解决你的问题,请参考以下文章
hdu 4779 Tower Defense (思维+组合数学)