BZOJ[2563] 阿狸和桃子的游戏
这个题的正解和之前做过的网络流的文理分科差不多,都是一个把对两个点都有贡献的边的贡献分别加给两个点;
在这个题里,首先考虑阿狸拿走了所有的边权与点权,那么现在桃子的分数为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] 阿狸和桃子的游戏相关推荐
- BZOJ 2563 : 阿狸和桃子的游戏
BZOJ 2563 : 阿狸和桃子的游戏 (机巧的贪心) 题目传送门 [问题描述] 大概就是,给你一个N个点的图(保证N是偶数).点和边都有权值. 有两个绝顶聪明的人,一人轮流选一次点(每个点仅可被选 ...
- [BZOJ]2563: 阿狸和桃子的游戏
题解:神贪心.......我们考虑对于每条边的选择 假设某方对于当前这条边的端点都不选择 那么其获得-v的价值 假设某方对于当前这条边的端点只选择一个 那么其获得0的价值 假设某方对于当前这条边 ...
- BZOJ 2563: 阿狸和桃子的游戏
2563: 阿狸和桃子的游戏 Time Limit: 3 Sec Memory Limit: 128 MB Submit: 1161 Solved: 810 [Submit][Status][Di ...
- Bzoj 2563: 阿狸和桃子的游戏 题解
2563: 阿狸和桃子的游戏 Time Limit: 3 Sec Memory Limit: 128 MB Submit: 970 Solved: 695 [Submit][Status][Dis ...
- bzoj 2563阿狸和桃子的游戏
2563: 阿狸和桃子的游戏 Time Limit: 3 Sec Memory Limit: 128 MB Submit: 1237 Solved: 860 [ Submit][ Status ...
- BZOJ——2563: 阿狸和桃子的游戏
http://www.lydsy.com/JudgeOnline/problem.php?id=2563 Time Limit: 3 Sec Memory Limit: 128 MB Submit: ...
- BZOJ 2563 阿狸和桃子的游戏 题解(贪心)
时间是一切财富中最宝贵的财富. -- 德奥弗拉斯多 又是一道贪心题. 题目: 阿狸和桃子正在玩一个游戏,游戏是在一个带权图G=(V, E)上进行的,设节点权值为w(v),边权为c(e).游戏规则是这样 ...
- BZOJ 2563 阿狸和桃子的游戏
Description 阿狸和桃子正在玩一个游戏,游戏是在一个带权图G=(V, E)上进行的,设节点权值为w(v),边权为c(e).游戏规则是这样的: 1. 阿狸和桃子轮流将图中的顶点染色,阿狸会将顶 ...
- 题解BZOJ 2563 阿狸和桃子的游戏 [贪心]
大家都很强,可与之共勉. 说贪心的话,代码短的和巧妙的数论题一样吓人.可是要转化出模型其实还是非常不容易的.比如说这个[2012国家集训队Round 1 day2],着实很巧妙. 阿狸和桃子正在玩一个 ...
- BZOJ 2563 阿狸和桃子的游戏 (贪心)
Description 阿狸和桃子正在玩一个游戏,游戏是在一个带权图G=(V, E)上进行的,设节点权值为w(v),边权为c(e).游戏规则是这样的: 1. 阿狸和桃子轮流将图中的顶点染色,阿狸会将顶 ...
最新文章
- 学mysql逻辑思维跟不上_关于避免MySQL替换逻辑SQL的坑爹操作详解
- linux编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14
- access 打印预览 代码_标签打印软件如何批量打印样品标签
- javax.servlet.jsp.PageContext cannot be resolve...
- chrome 开发工具_我最喜欢的Chrome开发工具提示和技巧
- 袁亚湘院士谈如何做好研究生:要逼着自己去想问题,最大的浪费是聪明人不思考...
- 按规律插入一个数字到数组中
- 从UnitedStack OS 1.0 Preview试用申请问卷调查学习OpenStack
- 大数据下union all的视图分页解决方案
- flume数据采集_大数据采集系统Flume集群部署
- 怎么修改远程服务器的地址,怎么修改远程服务器的地址
- js两个日期对比大小
- cad2019字体_这些是2019年最有效的简历字体
- 7月17日任务 10.23-27
- 计算机毕业设计JAVA软考在线题库系统mybatis+源码+调试部署+系统+数据库+lw
- 多线程学习--案例-子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次
- 基于神经网络识别抑郁症附matlab代码
- [面试笔试整理1]:深度学习机器学习面试问题准备(必会)
- 使用ECS和OSS搭建个人网盘
- 技术人员如何写好一封邮件