DD 摆磁铁
这道题来自 计蒜客信息学8月普及组模拟赛

普及组!!

把我一个TG选手看懵了
看来我要回去打普及了

题目大意

给出一个n个节点的树,要把树上给定的2*m个节点两两配对,两个节点配对的产生的价值就是这两个点的距离,求最大的距离和。
即使 ∑i=1mdispair\sum_{i=1}^{m}dis_{pair}∑i=1m​dispair​ 最大化

题解

首先这题肯定是不能DP的,因为是多点配对,所以应该要往贪心那方面想。
点配对的贪心也并不是很好想,那我们可以把思维发散一些
考虑每一条边的贡献
假设一条边的两边分别有xxx个和2∗m−x2*m - x2∗m−x个,可以证明跨过这一条边匹配是优的,然后每一条边的贡献就是
min⁡(x,2∗m−x)\min(x, 2*m-x)min(x,2∗m−x)
即答案就是∑min⁡(size[v],2∗m−size[v])\sum\min(size[v],2*m-size[v])∑min(size[v],2∗m−size[v])
然后就没了

#include<bits/stdc++.h>
#define N 400005
using namespace std;
struct edge{int v, nxt;
}e[N];
int p[N], eid;
void init(){memset(p, -1, sizeof p);eid = 0;
}
void insert(int u, int v){e[eid].v = v;e[eid].nxt = p[u];p[u] = eid ++;
}
int size[N], n, m;
long long ans;
void dfs(int u, int fa){for(int i = p[u]; i + 1; i = e[i].nxt){int v = e[i].v;if(v == fa) continue;dfs(v, u);size[u] += size[v];ans += min(2 * m - size[v], size[v]);//累加(u,v)这条边的贡献}
}
int main(){init();scanf("%d%d", &n, &m);for(int i = 1; i <= 2 * m; i ++){int x = 0;scanf("%d", &x);size[x] ++;}for(int i = 1; i < n; i ++){int u, v;scanf("%d%d", &u, &v);insert(u, v);insert(v, u);}dfs(1, 1);printf("%lld", ans);return 0;
}

总结

以后做题思维还是要发散一些,一个思路感觉行不通要立马换,联赛的题不会太难,主要考的还是思维

智力康复ing……

DD 摆磁铁(计蒜客信息学8月普及组模拟赛)相关推荐

  1. 计蒜客信息学3月普及组模拟赛

    A. 断幺九 题目链接 分值:100 时间限制:1000ms 测试点数目:10 B. 锈湖 题目链接 分值:100 时间限制:2000ms 测试点数目:10 C. 图  题目链接 分值:100 时间限 ...

  2. 【计蒜客模拟赛系列】-计蒜客2021年8月普及组模拟赛

    提前:本文中部分代码和思路有借鉴或摘抄计蒜客官方题解 赛后总结 本次模拟赛的难度总算正常了些 个人战绩: 220/400,排名61 ,太弱了,一大堆AK爷 题目质量评价: 题目相比CSP-J还是简单了 ...

  3. 12.计蒜客信息学题库:T1702 魔法宝石

    12.计蒜客信息学题库:T1702 魔法宝石 Bessie 去珠宝商店想要买一些魔法宝石.商店里有 n 个宝石,每个宝石的重量为 wi,幸运值为 vi .Bessie 的购物车只能装重量之和不超过 m ...

  4. 计蒜客-百度的年会游戏(模拟)

    计蒜客-5.21-第二场比赛 A题 百度年会盛况空前,每个部门的年会活动也是非常有趣. 某部门的年会中进行了一个有趣的游戏:一张方桌上有四边,每边可以坐一人, 每人面前摆放一排长方形木块.我们一次给四 ...

  5. 【计蒜客信息学模拟赛1月月赛 - B】蒜头套圈圈(贪心,前缀最大值)

    题干: 蒜头去嘉年华玩儿套圈圈,是这么玩儿的.有一些瓶口口径不同的啤酒瓶,瓶子里面有一些奖品.如果蒜头用手上的圈圈套中了啤酒瓶,那么奖品就归他了. 假设蒜头君无限精准,指哪儿打哪儿,并且蒜头了解到,只 ...

  6. 【计蒜客信息学模拟赛1月月赛 - D】Wish(dp计数,数位)

    题干: 如果一个数大于等于 10且任意连续两位都是质数,那么就称之为 Wish 数.当然,第一个 Wish 数是 11. 比如 97,111,131,119 都是 Wish 数,而 12,136 则不 ...

  7. 计蒜客信息学入门赛 #17--B

    蒜头君平时勤工俭学,在两家店 A,BA,B 里都有兼职,蒜头君一天只会去一家店里打工,现在告诉你蒜头君每天的打工情况,请你帮他计算一下,他最多连续多少天是去同一家店打工的? 输入格式 只有一行由 A, ...

  8. 计蒜客信息学入门赛 #16--B

    蒜头君报名参加了折纸兴趣小组, 他表现出了极大的热情,折出了 nn 件折纸作品. 他的作品只有 33 种,分别是长方形.正方形和三角形. 现在蒜头君很想知道他的 nn 件折纸的周长之和. 输入格式 第 ...

  9. 计蒜客信息学入门赛 #16--C--最大区间包含问题--待完善

    蒜头君的工厂需要生产 nn 个产品,每个产品会在记录本上记录开始生产的时间 xx 以及完成生产的时间 yy. 现在蒜头君拿到这本记录本以后想知道最多有多少件产品同时在生产线上生产. 注意:在同一时刻总 ...

最新文章

  1. 用python3实现指定目录下文件sha256及文件大小统计
  2. javascript之温习闭包
  3. pyspark 计算 皮尔逊相关系数
  4. php background-color:,background-color属性怎么用
  5. 一个简单的apache cgi-bin
  6. redis命令操作(1)
  7. 老李分享:Android性能优化之内存泄漏 3
  8. C++ vector 遍历修改汇总
  9. Flask爱家租房--发布新房源(总结)
  10. ubuntu mysql master slave_Ubuntu下MySQL5.5 配置主从(Master Slave)同步
  11. SARIF在应用过程中对深层次需求的实现
  12. 怎么理解python循环_如何理解Python的循环设计
  13. 总结下MySql优化。防止数据灾难的发生。
  14. Oracle、 Mysql 、 SQLserver 分页查询
  15. 在Nginx服务器上用Jenkins发布Vue/React代码的步骤
  16. laravel 核心类Kernel
  17. Hadoop1.2.1源码解析系列:JT与TT之间的心跳通信机制——命令篇
  18. 计算机信应用技术,计算机信息应用技术.ppt
  19. Android 开发,你遇上 Emoji 头疼吗?
  20. maxscript rollout

热门文章

  1. 拼多多崛起背后的电商新版图
  2. 简单易懂的理解java开发中的 DO、BO、DTO、VO、AO都是什么✌
  3. 关于ext4文件系统概述
  4. os 库、 sys 库、getopt 库 与 filecmp 库,5000 字长文带你搞定四大库
  5. linuxprobe-脚本编写,循环语句,重定向
  6. Shor’s Algorithm 学习笔记
  7. 考研数二第十讲 求导平面曲线的切线和法线以及曲率圆与曲率半径和弧微分
  8. Python爬虫获取股票信息代码分享
  9. go语言字符串变量初始化以及字符串拼接
  10. 环信IM SDK使用(一):集成环信SDK及注意事项