试题编号: 201909-5
试题名称: 城市规划
时间限制: 3.0s
内存限制: 512.0MB
问题描述:

几乎是Gym102222G的原版,详解见上一篇博文

  1. /*
  2. 贡献+树形dp+01背包
  3. */
  4. #include<bits/stdc++.h>
  5. using namespace std;
  6. const int N=1e5+;
  7. const int M=N<<;
  8. const int Kn=;
  9. typedef long long ll;
  10. int n,m,k;
  11. int tot,to[M],nxt[M],head[N],ind[N],siz[N];ll val[M];bool vis[N];
  12. ll f[N][Kn];
  13. inline void add(int x,int y,ll z){
  14. ind[x]++;to[++tot]=y;val[tot]=z;nxt[tot]=head[x];head[x]=tot;
  15. }
  16. void dfs(int u,int fa){
  17. for(int l=head[u];l;l=nxt[l]){
  18. int v=to[l];ll w=val[l];
  19. if(v==fa) continue;
  20. dfs(v,u);
  21. siz[u]+=siz[v];
  22. for(int i=min(siz[u],k);i;i--){//逆序,背包问题, siz[u]个,每个都是选或者不选
  23. for(int j=min(siz[v],i);j;j--){
  24. f[u][i]=min(f[u][i],f[u][i-j]+f[v][j]+w*(k-j)*j);
  25. }
  26. }
  27.  
  28. }
  29. };
  30. void init_dp(){
  31. for(int i=;i<=n;i++){
  32. f[i][]=;
  33. for(int j=;j<=m;j++) f[i][j]=1e17;
  34. if(vis[i]) siz[i]=,f[i][]=;
  35. }
  36. }
  37. int main(){
  38. scanf("%d%d%d",&n,&m,&k);
  39. for(int i=,x;i<=m;i++) scanf("%d",&x),vis[x]=;
  40. for(int i=,x,y,z;i<n;i++){
  41. scanf("%d%d%d",&x,&y,&z);
  42. add(x,y,z);
  43. add(y,x,z);
  44. }
  45. int rt=;
  46. for(int i=;i<=n;i++) if(ind[i]>){rt=i;break;}
  47. init_dp();
  48. dfs(rt,0);
  49. printf("%lld\n",f[rt][k]);
  50. return ;
  51. }

CCF 201909-5 城市规划的更多相关文章

  1. CCF模拟题-201909

    2.小明种苹果(续)(100分) #include<iostream> #include<cstdio> #include<cstring> #define max ...

  2. CCF考试

    第八次CCF考试记录 代码还不知道对不对,过两天出成绩. 成绩出来了,310分. 100+100+100+10+0: 考试13:27开始,17:30结束,提交第4题后不再答题,只是检查前四题的代码 第 ...

  3. 浅谈城市规划在移动GIS方面的应用发展

    1.概述 城市建设进程加快,城市规划管理工作日趋繁重,各种来源的数据产生各种层出不穷的问题,严重影响城市规划时的准确性,为此全面合理的掌握好各方面的城市规划资料才能做出更加科学的决策.移动端的兴起为规 ...

  4. 【BZOJ-1952】城市规划 [坑题] 仙人掌DP + 最大点权独立集(改)

    1952: [Sdoi2010]城市规划 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 73  Solved: 23[Submit][Status][ ...

  5. CCF关于NOIP2014复赛报名的通知

    CCF关于NOIP2014复赛报名的通知   CCF NOIP2014复赛全部实行网上注册.报名.未通过网上报名的选手将不具备参赛和申诉资格. 系统注册须知: NOIP2014复赛注册时间:2014年 ...

  6. [CCF] Z字形扫描

    CCF Z字形扫描 感觉和LeetCode中的ZigZag还是有一些不一样的. 题目描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan).给定一个n×n的矩阵,Z ...

  7. [CCF] ISBN号码检测

    CCF ISBN号码检测 题目概述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如"x-xxx-xxxxx-x",其 ...

  8. CCF NOI系列活动

    NOI-全国青少年信息学奥林匹克竞赛全国青少年信息学奥林匹克竞赛(NOI)是国内信息学领域内面向中学生的最高水平的大赛,每省派经选拔产生的选手(其中一名是女选手)参加,NOI每年在不同的省市举行. N ...

  9. CCF考前注意几点

    1.数组最好保持初始化习惯,且检查数组初始化在循环内还是循环外,若在循环内需要对数组进行处理,则数组初始化必须放在for循环内. 2.for循环保持好习惯,用括号括起来,以免粗心. 3.if条件判断要 ...

随机推荐

  1. eclipse从svn检出maven项目

    使用Eclipse从svn检出项目. 打开Eclipse,在project explorer空白区域右键鼠标移至import选择import. 2 之后选择svn-->从svn检出项目,然后输入 ...

  2. css 光标

    <style> div{width:100;height:50;float:left;border:1px solid red;margin:1px;} </style> &l ...

  3. C# 进程 与 线程

    C#多线程和线程池1.0.线程的和进程的关系以及优缺点windows系统是一个多线程的操作系统.一个程序至少有一个进程,一个进程至少有一个线程.进程是线程的容器,一个C#客户端程序开始于一个单独的线程 ...

  4. vue中使用radio和checkbox

    代码 <template> <div id="app"> <input type="checkbox" v-model=" ...

  5. JavaScript 书写位置

    类似于 CSS 样式,JavaScript 也有三种不同位置的书写方式. 1.写在行内 <input type="button" value="按钮" o ...

  6. service基础概念和操作

    sevice概念介绍 service的实现强烈依赖于kube-DNS组件 新版本k8s安装的是core-DNS 因为每个pod是有生命周期的 为了给客户端访问pod提供一个固定的访问端点 servic ...

  7. 老大难的GC原理及调优,这下全说清楚了

    概述 本文介绍GC基础原理和理论,GC调优方法思路和方法,基于Hotspot jdk1.8,学习之后将了解如何对生产系统出现的GC问题进行排查解决 阅读时长约30分钟,内容主要如下: GC基础原理,涉 ...

  8. php集成开发环境搭建三种方式

    三种方式都是一键搭建php开发环境 三种方式前提都是在linux下 wamp和phpstudy就不再用了 首先打造linux开发环境,通过vagrant+vbox实现本地文件同步到虚拟机上进行同步开发 ...

  9. 关于SQL中的 where 1 = 1 的用法

    在项目中的常见的一个操作:在有关SQL的代码中加入where 1 = 1,关于它的用法,可以总结如下: 首先,where 1 = 1的用法往往是为了方便后续的给SQL增加where限制条件.如果实现加 ...

  10. js检测页面触底

    <script> function getDocumentTop() { var scrollTop = 0, bodyScrollTop = 0, documentScrollTop = ...