BZOJ4987 Tree
Tree
Description
Input
Output
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
#define M 3020
using namespace std;
int read(){int nm=0,fh=1;char cw=getchar();for(;!isdigit(cw);cw=getchar()) if(cw=='-') fh=-fh;for(;isdigit(cw);cw=getchar()) nm=nm*10+(cw-'0');return nm*fh;
}
int n,m,fs[M],nt[M<<1],to[M<<1],len[M<<1];
int ans,F[M][M],B[M][M],C[M][M],dst,tmp,u,v,sz[M];
void update(int &x,int y){x=min(x,y);}
void link(int x,int y){nt[tmp]=fs[x],fs[x]=tmp,to[tmp]=y,len[tmp++]=dst;}
void DP(int x,int last){sz[x]=1,F[x][1]=C[x][1]=B[x][1]=0;for(int i=fs[x];i!=-1;i=nt[i]){if(to[i]==last) continue;int v=to[i]; DP(v,x);for(int k=sz[x];k>0;k--){for(int j=sz[v];j>0;j--){update(B[x][j+k],B[v][j]+B[x][k]+(len[i]<<1));update(F[x][j+k],min(B[v][j]+F[x][k]+len[i],F[v][j]+B[x][k])+len[i]);update(C[x][j+k],min(min(C[x][k]+B[v][j],C[v][j]+B[x][k])+len[i],F[x][k]+F[v][j])+len[i]);}}sz[x]+=sz[v];}update(ans,min(min(C[x][m],B[x][m]),F[x][m]));
}
int main(){n=read(),m=read(),memset(&ans,0x7f,sizeof(int));memset(fs,-1,sizeof(fs)),memset(F,0x7f,sizeof(F));memset(C,0x7f,sizeof(C)),memset(B,0x7f,sizeof(B));for(int i=1;i<n;i++) u=read(),v=read(),dst=read(),link(u,v),link(v,u);DP(1,0),printf("%d\n",ans);return 0;
}
转载于:https://www.cnblogs.com/OYJason/p/9431219.html
BZOJ4987 Tree相关推荐
- [BZOJ4987] Tree
[BZOJ4987] Tree 题目大意:从前有棵树,找出\(K\)个结点\(A_1, A_2, A_3,\cdots A_k\),使\(\sum\limits_{1 \leq i \leq K-1} ...
- [BZOJ4987]Tree
题目大意: 给定一棵\(n(n\le3000)\)个点的带边权的树,找出\(k\)个点\(A_{1\sim k}\)使得\(\sum_{1\le i<k} dis(A_i,A_i+1)\)最小. ...
- bzoj4987: Tree(树形dp)
Description 从前有棵树. 找出K个点A1,A2,-,Ak. 使得∑dis(AiAi+1),(1<=i<=K-1)最小. Input 第一行两个正整数n,k,表示数的顶点数和需要 ...
- Noip前的大抱佛脚----赛前任务
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...
- 107. Binary Tree Level Order Traversal II
题目 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from l ...
- 102. Binary Tree Level Order Traversal
题目 Binary Tree Level Order Traversal 层次遍历二叉树 链接 Given a binary tree, return the level order traversa ...
- Python---哈夫曼树---Huffman Tree
今天要讲的是天才哈夫曼的哈夫曼编码,这是树形数据结构的一个典型应用. !!!敲黑板!!!哈夫曼树的构建以及编码方式将是我们的学习重点. 老方式,代码+解释,手把手教你Python完成哈夫曼编码的全过程 ...
- [Java]LeetCode297. 二叉树的序列化与反序列化 | Serialize and Deserialize Binary Tree
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- Code Forces Bear and Forgotten Tree 3 639B
B. Bear and Forgotten Tree 3 time limit per test2 seconds memory limit per test256 megabytes inputst ...
- Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈)
Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈) 标签: codeforces 2017-06-02 11:41 29人阅读 ...
最新文章
- GAN版马里奥创作家来了:一个样本即可训练,生成关卡要素丰富 | 开源
- android studio miui8,MIUI8上在Android Studio运行出错集及其解决方案
- python类中方法的执行顺序-Python中实例化class的执行顺序示例详解
- 函数 —— fgets()
- 蓝牙L2CAP剖析(二)
- 数据库入门开发案例,真的是入门级别的!!看了不后悔。
- Tiny之Web工程构建
- mysql执行系统命令_mysql 命令行执行 sql
- python程序—名片管理系统
- 图解exports 和 module.exports
- 软工网络15团队作业4——Alpha阶段敏捷冲刺-3
- Http代理抓包 Fiddler与Charles
- CSDN Blog推出专属的离线发布工具 - CSDN剪影
- 社区发现算法之——Louvain
- win7录屏_录屏软件推荐用什么?绝地求生录屏游戏的工具分享
- IDEA 创建工作空间 (空项目) 项目组
- 如何确定自己的科研课题?
- Discuz论坛管理员密码忘记重置
- Android 开发2048 无法显示gameView、Card
- 计算机无法启动bios,开机进入bios无法进入系统怎么办_电脑开机就进入bios的解决方法...
热门文章
- Python字典知识总结
- windows用VS2019下编译log4cxx日志库
- Android编程权威指南第三版 第32章
- openlayers 地图上加图标_OpenLayers学习笔记中级篇(四、地图图标操作)
- python ——找出 每行中长度超过3的单词
- 交换机之三层交换原理
- 【2019.05.23】JS逆向——破解裁判文书网参数(vl5x,guid )爬虫 超级详细
- 80C51单片机的基本信息
- 山东理工ACM 1115 C语言实验——交换两个整数的值(顺序结构)两种方法
- 一文搞懂 deconvolution、transposed convolution、sub-pixel or fractional convolution