传送门

文章目录

  • 题意:
  • 思路:

题意:

给你2∗k2*k2∗k个点的一棵树。定义GGG为任选kkk组不同的点,每组点的距离和的最小值。定义BBB为任选kkk组不同的点,每组点的距离和的最大值。让你求出GGG和BBB。

思路:

对于GGG,我们可以发现当以一个点为根的子树大小为偶数的时候,可以让他们自己取对,这样是最优的。如果为奇数那么内部不能自己消化掉,(u,v)(u,v)(u,v)这条边一定会被经过,加上即可。
盗用一下万弘巨巨的图:

对于BBB,我们肯定是选最远的点对,具体怎么选呢?其实我们不需要知道具体是怎么选的,我们假设当前子树的大小为sesese,子树根到父亲的边权值为www,那么我们考虑这个边的贡献。因为我们要尽可能选远的点,不就是看看子树外面的点跟子树的大小吗?那么这个边的贡献就是min(2∗k−se,se)∗wmin(2*k-se,se)*wmin(2∗k−se,se)∗w。这样问题就顺利的解决啦,还是比较容易理解的。

//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1000010,M=N,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int k;
int e[M],ne[M],w[M],h[N],idx;
int se[N];
LL ans1,ans2;void add(int a,int b,int c)
{e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++;
}void dfs1(int u,int f)
{se[u]=1;for(int i=h[u];~i;i=ne[i]){int j=e[i];if(j==f) continue;dfs1(j,u);se[u]+=se[j];if(se[j]%2==1) ans1+=w[i];}
}void dfs2(int u,int f)
{for(int i=h[u];~i;i=ne[i]){int j=e[i];if(j==f) continue;dfs2(j,u);ans2+=1ll*min(k-se[j],se[j])*w[i];}
}int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);int _; scanf("%d",&_);while(_--){ans1=ans2=0;scanf("%d",&k); k*=2; idx=0;for(int i=1;i<=k;i++) h[i]=-1;for(int i=1;i<=k-1;i++){int a,b,c; scanf("%d%d%d",&a,&b,&c);add(a,b,c); add(b,a,c);}dfs1(1,0); dfs2(1,0);printf("%lld %lld\n",ans1,ans2);}return 0;
}
/**/

Codeforces Round #607 (Div. 2) E. Jeremy Bearimy dfs + 思维相关推荐

  1. Codeforces Round #590 (Div. 3) E. Special Permutations 差分 + 思维

    传送门 文章目录 题意: 思路: 题意: 思路: 直接考虑比较难想,这种公式题基本都是将部分答案看成一个整体,考虑xi,xi+1x_i,x_{i+1}xi​,xi+1​的贡献的. 假设当前的xi=x, ...

  2. Codeforces Round #726 (Div. 2) F. Figure Fixing 二分图 + 思维

    传送门 文章目录 题意: 思路 题意: 给你一张nnn个点mmm条边的图,每个点都有一个当前值aia_iai​,目标值bib_ibi​,每次可以选择一条边(i,j)(i,j)(i,j),将ai,aja ...

  3. Codeforces Round #598 (Div. 3) F. Equalizing Two Strings 思维 + 逆序对

    传送门 文章目录 题意: 思路: 题意: 给你两个长度为nnn的串a,ba,ba,b,每次可以同时翻转a,ba,ba,b中任意一段长度为L(1≤L≤n)L(1\le L\le n)L(1≤L≤n)的子 ...

  4. Codeforces Round #636 (Div. 3) D. Constant Palindrome Sum 思维 + 差分

    传送门 文章目录 题意: 思路: 题意: 思路: 首先有一个显然的性质就是每组操作最多不会超过两次. 很容易想到一个很暴力的思路,就是枚举x∈[1,2∗k]x \in [1,2*k]x∈[1,2∗k] ...

  5. Codeforces Round #631 (Div. 2) D. Dreamoon Likes Sequences 思维 + 组合数学

    传送门 文章目录 题意: 思路: 题意: 给你d,modd,modd,mod,让你求能构造出如下序列aaa的个数模modmodmod: 思路: 首先可以发现aaa的长度不能超过log2dlog_2dl ...

  6. Codeforces Round #620 (Div. 2) E. 1-Trees and Queries 思维 + LCA

    传送门 文章目录 题意 思路: 题意 思路: 照例,先考虑不加边怎么做.由于可以经过重复的边或点,设aaa与bbb之间长度为lenlenlen,那么需要len<=klen<=klen< ...

  7. Codeforces Round #410 (Div. 2) D. Mike and distribution 思维+数学

    链接: http://codeforces.com/contest/798/problem/D 题意: 给你两个长度为n的数列a和b,让你选n/2+1个下标,使得2*∑ai>suma,2*∑bi ...

  8. Codeforces Round #772 (Div. 2) C. Differential Sorting(思维+构造)

    题目链接 https://codeforces.com/contest/1635/problem/C 题面 题意 给你一个长度为n的数组 a[i]a[i]a[i] ,我们有一种操作让 a[x]=a[y ...

  9. Codeforces Round #540 (Div. 3)--A. Water Buying(简单思维题-有点坑)

    A. Water Buying 题目链接http://codeforces.com/problemset/problem/1118/A time limit per test:1 second mem ...

最新文章

  1. Scenario 7 – HP C7000 VC FlexFabric Tunneled VLANs and SUS A/A vSphere
  2. python自定义类如何定义向量的模_gensim的word2vec如何得出词向量(python)
  3. 高等数学、线性代数、概率论数理统计书籍推荐
  4. 迭代Iterator的用法
  5. [论文阅读] (04) 人工智能真的安全吗?浙大团队外滩大会分享AI对抗样本技术
  6. 企业级 oracle11G r2 DataGuard 安装配置
  7. 学校云计算机室,云计算实训室简介
  8. 清华计算机系上热搜!近9成优秀毕业生放弃留学,前50名41人留校深造
  9. 收藏 | TensorRT部署深度学习模型
  10. 【LeetCode】【HOT】49. 字母异位词分组(递归)
  11. 【实验记录】Fashion-Mnist分类实验记录
  12. IDEA快捷键之搜索查询
  13. 费率转换成利率的计算器_存款利率计算器
  14. 引爆点---绝对内行
  15. Robust Medical Instrument Segmentation Challenge 2019拜读
  16. 泰拉瑞亚服务器config修改,《泰拉瑞亚》游戏配置怎么修改 游戏配置修改办法推荐...
  17. Codeforces407C Curious Array
  18. 汉字拼音的一个解决方法(初具使用价值)
  19. U盘杀毒后文件不见/找回
  20. css样式换行缩进技巧

热门文章

  1. 她13岁自己造飞机,17岁进麻省理工,3篇黑洞论文被霍金引用......
  2. 史上最被低估的两个学科!它们远比你想的更重要!
  3. 有人问我:AI这么火,要不要去追赶AI的热潮?
  4. java怎么打印进制,java编程思维_007打印二进制,八进制,十六进制
  5. 面试避坑手册之 Java字节流和字符流总结IO流!
  6. java util map,我应该如何命名java.util.Map?
  7. linux mysql phpadmin_linux安装phpmyadmin数据库管理
  8. android mvc mvp 简书,浅析 MVP,MVC,MVVM模式(Android)
  9. 楚乔传手游 服务器维护,楚乔传手游网络异常进不去游戏怎么办?楚乔传网络异常解决方法...
  10. spring boot 缓存_Spring Boot 集成 Redis 实现数据缓存