bzoj 2563 [2012国家集训队Round 1 day2] 阿狸和桃子的游戏

题目描述:

链接在这儿!

正解:

贪心

解题报告:

听起来很简单的样子……其实挺难想到的QAQ

开始看这道题的时候真滴觉得好难啊……然后就看到大佬站了起来把方法讲了出来秒切题……同为高一为何大佬们就这么厉害我这——么蒻QAQ

不过大佬讲了方法之后还是懂了

有一个很神仙的想法就是,你可以理解为每个点周围的边都有半个是自己的,然后就会变成这样:

如果我只选了一个点,这条边上另一个点就一定是对手选了,那就是0.5-0.5=0

如果我两个都选了,那就是0.5+0.5=1

如果我两个都没选,那就一定是对手选了,所以是-0.5-0.5=-1

然后你就会惊喜地发现!这两个人的选择是互相独立互不干扰的了!(因为要求最优明白吧?)然后就很很很简单了(……吗?

来直接放代码!

扫描二维码关注公众号,回复: 3462693 查看本文章
 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 #include <algorithm>
 5 #define M 10100
 6 using namespace std;
 7 int n,m;
 8 long long ans,a[M];
 9 int main()
10 {
11     int i,x,y,z;
12     cin>>n>>m;
13     for(i=1;i<=n;i++)
14     {
15         scanf("%d",&z);
16         ans-=z;a[i]=z<<1;
17     }
18     for(i=1;i<=m;i++)
19     {
20         scanf("%d%d%d",&x,&y,&z);
21         ans-=z;a[x]+=z;a[y]+=z;
22     }
23     sort(a+1,a+n+1);
24     for(i=2;i<=n;i+=2)
25         ans+=a[i];
26     cout<<ans<<endl;
27     return 0;
28 }
View Code

对了……说个很迷的事儿……

我自己先做了遍,感觉非常对,但是交上去RE了

我不服气地对照题解,实在觉得没错,于是交了题解,AC了……恶魔妈妈买面膜……我这个是复制的题解(虽然我觉得我写的真滴没错QAQ

猜你喜欢

转载自www.cnblogs.com/lqsukida/p/9750652.html