这个题的正解和之前做过的网络流的文理分科差不多,都是一个把对两个点都有贡献的边的贡献分别加给两个点;

在这个题里,首先考虑阿狸拿走了所有的边权与点权,那么现在桃子的分数为0,阿狸的分数为所有权值的加和,那么考虑桃子选每一个点所造成的贡献,每当桃子选了一个点v,则桃子的分数加上w[v],阿狸的分数减去w[v],于此同时,阿狸失去了所有以v为一个端点的边的权值,所以选v时,桃子将差距缩小了2*w[v]+∑以v为一个端点的边的权值,由于每次只加了一次边权,所以当选了一个边的两端点时,贡献就算了2次,刚好符合游戏规则(两次是同点一样,桃子+w,阿狸-w,所以是2*w);

先求出阿狸的sum,然后每一个点的权值就是2*w[v]+∑以v为一个端点的边的权值,然后sort排序,从大到小选N/2个,要注意因为是轮流选,所以桃子只能隔着选,

Code

 1 #include <cmath>
 2 #include <cstdio>
 3 #include <cstdlib>
 4 #include <cstring>
 5 #include <iostream>
 6 #include <algorithm>
 7 # define maxn 10010
 8 # define max_m 100010
 9 using namespace std;
10 typedef long long LL;
11 int n,m;
12 LL val[maxn];
13 struct node{
14     int u,v,nxt; LL w;
15 }g[2*max_m];
16 int adj[maxn],e;
17 void add(int u,int v,LL w){
18     g[e].u=u; g[e].v=v; g[e].w=w; g[e].nxt=adj[u];
19     adj[u]=e++;
20 }
21 LL sum;
22 void init(){
23     scanf("%d%d",&n,&m);
24     for(int i=1;i<=n;i++) scanf("%lld",&val[i]),sum+=val[i];
25     memset(adj,-1,sizeof(adj));
26     int x,y; LL z;
27     for(int i=1;i<=m;i++){
28         scanf("%d%d%lld",&x,&y,&z);
29         add(x,y,z); add(y,x,z);
30         sum+=z;
31     }
32     sum=-sum;
33 }
34 bool cmp(const int a,const int b){return a>b;}
35 void work(){
36     for(int i=1;i<=n;i++){
37         val[i]*=2;
38         for(int j=adj[i];j!=-1;j=g[j].nxt){
39             int v=g[j].v;
40             val[i]+=g[j].w;
41         }
42     }
43     sort(val+1,val+n+1,cmp);
44     for(int i=1;i<=n;i+=2){
45         sum+=val[i];
46     }
47     cout<<sum<<endl;
48 }
49 int main(){
50     // freopen("a.in","r",stdin);
51     init();
52     work();
53 }

View Code

转载于:https://www.cnblogs.com/FOXYY/p/7653050.html

BZOJ[2563] 阿狸和桃子的游戏相关推荐

  1. BZOJ 2563 : 阿狸和桃子的游戏

    BZOJ 2563 : 阿狸和桃子的游戏 (机巧的贪心) 题目传送门 [问题描述] 大概就是,给你一个N个点的图(保证N是偶数).点和边都有权值. 有两个绝顶聪明的人,一人轮流选一次点(每个点仅可被选 ...

  2. [BZOJ]2563: 阿狸和桃子的游戏

    题解:神贪心.......我们考虑对于每条边的选择 假设某方对于当前这条边的端点都不选择  那么其获得-v的价值 假设某方对于当前这条边的端点只选择一个   那么其获得0的价值 假设某方对于当前这条边 ...

  3. BZOJ 2563: 阿狸和桃子的游戏

    2563: 阿狸和桃子的游戏 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 1161  Solved: 810 [Submit][Status][Di ...

  4. Bzoj 2563: 阿狸和桃子的游戏 题解

    2563: 阿狸和桃子的游戏 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 970  Solved: 695 [Submit][Status][Dis ...

  5. bzoj 2563阿狸和桃子的游戏

    2563: 阿狸和桃子的游戏 Time Limit: 3 Sec   Memory Limit: 128 MB Submit: 1237   Solved: 860 [ Submit][ Status ...

  6. BZOJ——2563: 阿狸和桃子的游戏

    http://www.lydsy.com/JudgeOnline/problem.php?id=2563 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: ...

  7. BZOJ 2563 阿狸和桃子的游戏 题解(贪心)

    时间是一切财富中最宝贵的财富. -- 德奥弗拉斯多 又是一道贪心题. 题目: 阿狸和桃子正在玩一个游戏,游戏是在一个带权图G=(V, E)上进行的,设节点权值为w(v),边权为c(e).游戏规则是这样 ...

  8. BZOJ 2563 阿狸和桃子的游戏

    Description 阿狸和桃子正在玩一个游戏,游戏是在一个带权图G=(V, E)上进行的,设节点权值为w(v),边权为c(e).游戏规则是这样的: 1. 阿狸和桃子轮流将图中的顶点染色,阿狸会将顶 ...

  9. 题解BZOJ 2563 阿狸和桃子的游戏 [贪心]

    大家都很强,可与之共勉. 说贪心的话,代码短的和巧妙的数论题一样吓人.可是要转化出模型其实还是非常不容易的.比如说这个[2012国家集训队Round 1 day2],着实很巧妙. 阿狸和桃子正在玩一个 ...

  10. BZOJ 2563 阿狸和桃子的游戏 (贪心)

    Description 阿狸和桃子正在玩一个游戏,游戏是在一个带权图G=(V, E)上进行的,设节点权值为w(v),边权为c(e).游戏规则是这样的: 1. 阿狸和桃子轮流将图中的顶点染色,阿狸会将顶 ...

最新文章

  1. 学mysql逻辑思维跟不上_关于避免MySQL替换逻辑SQL的坑爹操作详解
  2. linux编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14
  3. access 打印预览 代码_标签打印软件如何批量打印样品标签
  4. javax.servlet.jsp.PageContext cannot be resolve...
  5. chrome 开发工具_我最喜欢的Chrome开发工具提示和技巧
  6. 袁亚湘院士谈如何做好研究生:要逼着自己去想问题,最大的浪费是聪明人不思考...
  7. 按规律插入一个数字到数组中
  8. 从UnitedStack OS 1.0 Preview试用申请问卷调查学习OpenStack
  9. 大数据下union all的视图分页解决方案
  10. flume数据采集_大数据采集系统Flume集群部署
  11. 怎么修改远程服务器的地址,怎么修改远程服务器的地址
  12. js两个日期对比大小
  13. cad2019字体_这些是2019年最有效的简历字体
  14. 7月17日任务 10.23-27
  15. 计算机毕业设计JAVA软考在线题库系统mybatis+源码+调试部署+系统+数据库+lw
  16. 多线程学习--案例-子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次
  17. 基于神经网络识别抑郁症附matlab代码
  18. [面试笔试整理1]:深度学习机器学习面试问题准备(必会)
  19. 使用ECS和OSS搭建个人网盘
  20. 技术人员如何写好一封邮件

热门文章

  1. H3C 路由器内网用户通过域名访问内网服务器的配置方法
  2. hbase命令日常总结
  3. 计算机无法缩小窗口,WIN7如何把窗口缩小_win7电脑怎么把窗口缩小-win7之家
  4. LINUX下GDB调试
  5. iterator 怎么使用甀_迭代器(Iterator)的使用方法
  6. android 浏览器打开本地html文件,如何在Android浏览器中加载本地HTML文件
  7. 蔬菜购物网站设计【协同过滤的推荐算法】
  8. WPS文字怎么添加索引和目录
  9. 学校信息化管理系统通常包含哪些功能?
  10. vscode快捷键-mac