正题

题目链接:https://www.luogu.com.cn/problem/P4643


题目大意

给出\(n\)个点\(m\)条边的无向图,两个人轮流选择一个未被选择的点加入点集。

然后每个人的权值为选出的点的导出子图点权加边权和。

两个人都希望自己的权值减去对方的权值最大

求先手的权值减去后手的权值

\(1\leq n\leq 10^4,1\leq m\leq 10^5\)


解题思路

结论就是把边权均分到点权处。

证明的话假设两个点之间的点权为\(w\)。

那么如果两边颜色不同那么这个均分出来的权值会统计一个\(\frac{w}{2}-\frac{w}{2}=0\)的权值

如果两边颜色相同那么就会统计上这个权值。排序然后一个一个选就好了

时间复杂度\(O(n\log n+m)\)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e5+10;
int n,m,w[N],v[N],p[N],x[N],y[N],e[N],ans;
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&w[i]),v[i]=w[i]*2,p[i]=i;
for(int i=1;i<=m;i++){
scanf("%d%d%d",&x[i],&y[i],&e[i]);
v[x[i]]+=e[i];v[y[i]]+=e[i];
}
sort(v+1,v+1+n);
for(int i=n;i>=1;i-=2)
ans+=v[i]-v[i-1];
printf("%d\n",ans/2);
return 0;
}

P4643-[国家集训队]阿狸和桃子的游戏【结论】的更多相关文章

  1. 洛谷P4643 [国家集训队]阿狸和桃子的游戏(思维题+贪心)

    思维题,好题 把每条边的边权平分到这条边的两个顶点上,之后就是个sb贪心了 正确性证明: 如果一条边的两个顶点被一个人选了,一整条边的贡献就凑齐了 如果分别被两个人选了,一作差就抵消了,相当于谁都没有 ...

  2. P4643 [国家集训队]阿狸和桃子的游戏

    传送门 这题看一眼就很不可做 考虑对于任意一个最终状态,对于一条边的贡献分成三种情况 如果此边连接的两点属于 $A$,那么对 $A$ 的贡献就是边权 $w$,即对答案的贡献为 $+w$ 如果两点都属于 ...

  3. luogu4643 [国家集训队]阿狸和桃子的游戏

    题目链接:洛谷 这道题乍一看非常的难,而且题目标题上的标签让人很害怕. 但其实这道题并不难写(只要想到了...emm) 因为我们只需要知道两个人得分之差,所以我们可以对条件进行变换. 我们将边权平分到 ...

  4. 【BZOJ2563】阿狸和桃子的游戏(贪心)

    [BZOJ2563]阿狸和桃子的游戏(贪心) 题面 BZOJ 题解 边权平均分给两个点就好了. #include<iostream> #include<cstdio> #inc ...

  5. 【bzoj2563】阿狸和桃子的游戏(贪心+构造)

    题目传送门:bzoj2563 先膜拜一波PoPoQQQ的题解:BZOJ 2563 阿狸和桃子的游戏 贪心 其实我们可以这样看:把一条边的权值均分到两个端点,那么取到两个端点就能得到这条边的边权,如果只 ...

  6. BZOJ2563阿狸和桃子的游戏

    2563: 阿狸和桃子的游戏 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 952  Solved: 682[Submit][Status][Discu ...

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

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

  8. Bzoj2563 阿狸和桃子的游戏

    Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 701  Solved: 496 Description 阿狸和桃子正在玩一个游戏,游戏是在一个带权图G= ...

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

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

随机推荐

  1. 基于typescript编写vue的ts文件语法模板

    1 <template> 2 <div> 3 <input v-model="msg"> 4 <p>prop: {{ propMes ...

  2. WPF material UI 的使用

    网站:https://github.com/vasanthmes/WPF-Dashboard-UI-Material-Design-Concept theme <Application x:Cl ...

  3. sql 中的with 语句使用

    一直以来都很少使用sql中的with语句,但是看到了一篇文章中关于with的使用,它的确蛮好用,希望以后记得使用这个语句.一.with 的用法With alias_name as (select1)[ ...

  4. JFrame显示刷新

    1 import java.awt.BorderLayout; 2 import java.awt.Font; 3 import java.awt.event.ActionEvent; 4 impor ...

  5. 你知道 JavaScript 中的 Arguments 对象都有哪些用途吗?

    JavaScript 中 Arguments 对象的用途总结. 前言 相信我们很多人在代码开发的过程中都使用到过一个特殊的对象 -- Arguments 对象. 在实际开发中,Arguments 对象 ...

  6. freemodbus移植、实例及其测试方法

    Modbus简介 参考:Modbus​协议​深入​讲解 https://www.ni.com/zh-cn/innovations/white-papers/14/the-modbus-protocol ...

  7. 通过JDK动态代理实现 Spring AOP

    1.新建一个目标类 接口:public interface IUserService //切面编程 public void addUser(); public void updateUser( ); ...

  8. Git--生成公钥和私钥并添加gitlab访问权限

    Git配置 打开git bash 执行以下命令 git config --global user.name 用户名 git config --global user.email 邮箱 ssh-keyg ...

  9. clickonce的密钥到期问题处理

    最近clickonce的密钥到期了,在网上找了些文章用来修改密钥的到期时间,已成功生成新密钥,好不好使暂时未测. 在此小结一下,以备参考: 1.在原密钥所属电脑上cmd执行如下命令 renewcert ...

  10. 案例九:shell脚本自动创建多个新用户,并设置密码

    此脚本是用来批量创建用户并设置用户密码,在企业用非常实用. 脚本一 #!/bin/bash for name in $( seq 1 100 ) do useradd "user$name& ...