The 2018 ACM-ICPC CCPC NING XIA G-Factories
题意:在一棵数的叶子上建k个工厂保证,求两两距离之和的最小值。
思路:如果一个一个叶子节点去考虑去与否太麻烦了,直接考虑该节点的子树上选取几个作为工厂,利用树形DP,dp[u][i]表示的是u节点为根的子树选取了i个叶子作为工厂的最小值。
转移方程:dp[u][i]=min(dp[u][i],dp[u][i-k]+dp[v][k]+w*k*(m-k)),v表示u的子节点,k表示在u的子节点子树上选取个数,w*k*(m-k)表示这条边的贡献。
AC代码:
1 int n,m,cas;
2 ll dp[maxn][102];
3 int siz[maxn];
4 struct node{
5 int u;
6 ll w;
7 node(int _u,ll _w){
8 u=_u;
9 w=_w;
10 }
11 };
12 vector<node>a[maxn];
13 void dfs(int u,int fa){
14 if(a[u].size()==1){
15 dp[u][1]=0;
16 siz[u]=1;
17 }
18 dp[u][0]=0;
19 rep(i,0,a[u].size()-1){
20 int v=a[u][i].u;
21 ll w=a[u][i].w;
22 if(v==fa) continue;
23 dfs(v,u);
24 siz[u]+=siz[v];
25 dp[u][m]=min(dp[u][m],dp[v][m]);
26 for(int j=min(m,siz[u]);j>=1;j--){
27 for(int k=1;k<=min(j,siz[v]);k++){
28 dp[u][j]=min(dp[u][j],dp[u][j-k]+dp[v][k]+1ll*w*k*1ll*(m-k));
29 }
30 }
31 }
32 }
33 void init(){
34 rep(i,0,n) a[i].clear();
35 mem(siz,0);
36 // mem(dp,INF);
37 rep(i,1,n) rep(j,1,m) dp[i][j]=INF;
38 }
39 void run(){
40 n=rd(),m=rd();
41 init();
42 rep(i,1,n-1){
43 int u=rd(),v=rd();
44 ll w=rdll();
45 a[u].push_back(node(v,w));
46 a[v].push_back(node(u,w));
47 }
48 int rt=1;
49 rep(i,0,n){
50 if(a[i].size()>1){
51 rt=i;
52 break;
53 }
54 }
55 rep(i,0,n) dp[i][0]=0;
56 dfs(rt,-1);
57 printf("Case #%d: %lld\n",++cas,dp[rt][m]);
58 }
59 signed main()
60 {
61 int t=rd();
62 while(t--){
63 run();
64 }
65 // run();
66 return 0;
67 }
The 2018 ACM-ICPC CCPC NING XIA G-Factories的更多相关文章
- 有关信息ACM/ICPC竞争环境GCC/G++叠插件研究记录的扩展
0.起因 有时.DFS总是比BFS受人喜爱--毕竟DFS简单粗暴,更,而有些东西BFS不要启动,DFS它似乎是一个可行的选择-- 但是有一个问题,DFS默认直接写入到系统堆栈.系统堆栈和足够浅,此时O ...
- 2018 ACM ICPC 南京赛区 酱油记
Day 1: 早上6点起床打车去车站,似乎好久没有这么早起床过了,困到不行,在火车上睡啊睡就睡到了南京.南航离南京南站很近,地铁一站就到了,在学校里看到了体验坐直升机的活动,感觉很强.报道完之后去吃了 ...
- 2018 ACM/ICPC 南京 I题 Magic Potion
题解:最大流板题:增加两个源点,一个汇点.第一个源点到第二个源点连边,权为K,然后第一个源点再连其他点(英雄点)边权各为1,然后英雄和怪物之间按照所给连边(边权为1). 每个怪物连终点,边权为1: 参 ...
- 2019 ACM/ICPC North America Qualifier G.Research Productivity Index(概率期望dp)
https://open.kattis.com/problems/researchproductivityindex 这道题是考场上没写出来的一道题,今年看看感觉简单到不像话,当时自己对于dp没有什么 ...
- ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 G. Garden Gathering
Problem G. Garden Gathering Input file: standard input Output file: standard output Time limit: 3 se ...
- ACM ICPC China final G Pandaria
目录 ACM ICPC China final G Pandaria ACM ICPC China final G Pandaria 题意:给一张\(n\)个点\(m\)条边的无向图,\(c[i]\) ...
- 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛
比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...
- ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 D. Delay Time
Problem D. Delay Time Input file: standard input Output file: standard output Time limit: 1 second M ...
- hduoj 4706 Children's Day 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4706 Children's Day Time Limit: 2000/1000 MS (Java/Others) ...
随机推荐
- Python import本地模块
无法识别本地模块 在pycharm中选择文件夹Mark Directory as -> Source root. 或者使用sys.path.append()添加文件夹路径 还是报错ImportE ...
- 深入理解JavaScript中的类继承
由于写本文时全部是在编辑器中边写代码边写感想的,所以,全部思想都写在代码注释里面了 // 类继承 //todo.1 extends 关键字 class Animal { constructor(nam ...
- 使用opencv-python实现MATLAB的fspecial('Gaussian', [r, c], sigma)
reference_opencv实现高斯核 reference_MATLAB_fspecial函数说明 # MATLAB H = fspecial('Gaussian', [r, c], sigma) ...
- MATLAB字符串分解, 合并
% 分解 % regexp s = 'ab/c/d.png' file_name = regexp(s, '/', 'split'); % 'd.png' % split fractions = sp ...
- Javascript实现"点按钮出随机背景色的"三个DIV
<!DOCTYPE html> <html> <head> <title>Random_Color-Transformation</title&g ...
- Right in the Center (js string algorithm)
Right in the Center (js string algorithm) codewars https://www.codewars.com/kata/5f5da7a415fbdc0001a ...
- 如何正确的使用 Dart SDK API
如何正确的使用 Dart SDK API dart-core dart:core library https://api.dart.dev/stable/2.9.1/dart-core/dart-co ...
- UI & APP
UI & APP lanhu http://help.lanhuapp.com/hc/ http://help.lanhuapp.com/hc/kb/article/1173434/ 快速使用 ...
- 基于NGK发行的稳定币USDN如何撼动市场?
近日,基于NGK发行的稳定币USDN在各大社区的热度越来越高,很多人都说USDN将会撼动市场,那么USDN究竟有怎样的优势,能引起这么大的轰动呢?今天我们就一起来分析一下USDN. USDN是基于公链 ...
- JS相关基础
1. ES5和ES6继承方式区别 ES5定义类以函数形式, 以prototype来实现继承 ES6以class形式定义类, 以extend形式继承 2. Generator了解 ES6 提供的一种异步 ...