原题传送门

实际就是一道简单的树形dp

设f[u][i][j]表示从根结点到结点u经过i条未翻修公路,j条未翻修铁路的贡献最小值

边界条件:f[leaf][i][j]=(A+i)(B+j)C (题目上公式给的是c(a+i)(b+j),而不是a(b+i)(c+j))

转移方程:f[x][i][j]=min(f[ls][i+1][j]+f[rs][i][j],f[ls][i][j]+f[rs][i][j+1]) (ls,rs表示公路/铁路的起点)

这题有点卡空间qwqwq

  1. #include <bits/stdc++.h>
  2. #define N 40003
  3. #define ll long long
  4. #define getchar nc
  5. using namespace std;
  6. inline char nc(){
  7. static char buf[100000],*p1=buf,*p2=buf;
  8. return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
  9. }
  10. inline int read()
  11. {
  12. register int x=0,f=1;register char ch=getchar();
  13. while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
  14. while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
  15. return x*f;
  16. }
  17. inline void write(register ll x)
  18. {
  19. if(!x)putchar('0');if(x<0)x=-x,putchar('-');
  20. static int sta[25];register int tot=0;
  21. while(x)sta[tot++]=x%10,x/=10;
  22. while(tot)putchar(sta[--tot]+48);
  23. }
  24. inline ll Min(register ll a,register ll b)
  25. {
  26. return a<b?a:b;
  27. }
  28. int n;
  29. int S[N],T[N],dp[N];
  30. int a[N],b[N],c[N];
  31. ll f[N][42][42];
  32. inline void dfs(register int x)
  33. {
  34. if(x>=n)
  35. {
  36. for(register int i=0;i<=dp[x];++i)
  37. for(register int j=0;j<=dp[x];++j)
  38. f[x][i][j]=1ll*(a[x]+i)*(b[x]+j)*c[x];
  39. return;
  40. }
  41. dp[S[x]]=dp[T[x]]=dp[x]+1;
  42. dfs(S[x]),dfs(T[x]);
  43. for(register int i=0;i<=dp[x];++i)
  44. for(register int j=0;j<=dp[x];++j)
  45. f[x][i][j]=Min(f[S[x]][i][j]+f[T[x]][i][j+1],f[S[x]][i+1][j]+f[T[x]][i][j]);
  46. }
  47. int main()
  48. {
  49. n=read();
  50. for(register int i=1;i<n;++i)
  51. {
  52. S[i]=read(),T[i]=read();
  53. if(S[i]<0)
  54. S[i]=-S[i]+n-1;
  55. if(T[i]<0)
  56. T[i]=-T[i]+n-1;
  57. }
  58. for(register int i=n;i<n<<1;++i)
  59. a[i]=read(),b[i]=read(),c[i]=read();
  60. dfs(1);
  61. write(f[1][0][0]);
  62. return 0;
  63. }

【题解】Luogu P4438 [HNOI/AHOI2018]道路的更多相关文章

  1. Luogu P4438 [HNOI/AHOI2018]道路

    题目 注意到\(n\)不大并且深度不大. 记\((u,ls_u)\)为\(L\)边,\((u,rs_u)\)为\(r\)边. 所以我们可以设\(f_{p,i,j}\)表示从根到\(p\)有\(i\)条 ...

  2. 洛谷P4438 [HNOI/AHOI2018]道路(dp)

    题意 题目链接 Sol 每当出题人想起他出的HNOI 2018 Day2T3,他都会激动的拍打着轮椅 读题比做题用时长系列... \(f[i][a][b]\)表示从根到\(i\)的路径上,有\(a\) ...

  3. P4438 [HNOI/AHOI2018]道路

    辣稽题目 毁我青春 耗我钱财. 设\(f[x][i][j]\)为从1号点走到x点经过i条公路j条铁路,子树的最小代价. \(f[leaf][i][j]=(A+i)(B+j)C\) \(f[x][i][ ...

  4. Luogu 4438 [HNOI/AHOI2018]道路

    $dp$. 这道题最关键的是这句话: 跳出思维局限大胆设状态,设$f_{x, i, j}$表示从$x$到根要经过$i$条公路,$j$条铁路的代价,那么对于一个叶子结点,有$f_{x, i, j} = ...

  5. 【题解】Luogu P4436 [HNOI/AHOI2018]游戏

    原题传送门 \(n^2\)过百万在HNOI/AHOI2018中真的成功了qwqwq 先将没门分格的地方连起来,枚举每一个块,看向左向右最多能走多远,最坏复杂度\(O(n^2)\),但出题人竟然没卡(建 ...

  6. BZOJ5290 & 洛谷4438:[HNOI/AHOI2018]道路——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=5290 https://www.luogu.org/problemnew/show/P4438 的确 ...

  7. 【题解】 [HNOI/AHOI2018]道路 (动态规划)

    懒得复制,戳我戳我 Solution: \(dp[i][j][k]\)以\(i\)为子树根节点,到根节点中有\(j\)条公路没修,\(k\)条铁路没修,存子树不便利和 \(dp[i][j][k]=mi ...

  8. 题解 Luogu P3623 [APIO2008]免费道路

    [APIO2008]免费道路 题目描述 新亚(New Asia)王国有 N 个村庄,由 M 条道路连接.其中一些道路是鹅卵石路,而其它道路是水泥路.保持道路免费运行需要一大笔费用,并且看上去 王国不可 ...

  9. [HNOI/AHOI2018]道路

    Description: W 国的交通呈一棵树的形状.W 国一共有\(n - 1\)个城市和\(n\)个乡村,其中城市从\(1\)到\(n - 1\) 编号,乡村从\(1\)到\(n\)编号,且\(1 ...

随机推荐

  1. ubuntu安装elasticsearch

    0x00安装jdk ElasticSearch需要安装jdk1.8以上版本的支持,所以需要先安装jdk.linux下如何安装可以查看另一篇博客 0x01 下载elasticsearch 在es官网下载 ...

  2. 安装配置Greenplum

    一.规划 1.服务器: 192.168.0.191   gpdb01        # master 192.168.0.192   gpdb02        # primary segment . ...

  3. Jquery获取输入框属性file,ajax传输后端,下载图片

    Django web开发获取input属性file,可以用request.FILES.get(' ')直接获取到,然后正常拼接路径就可以下载, 但是今天我们来用异步获取file的值在传输后端下载. 1 ...

  4. vue中router.go、router.push和router.replace的区别

    router.go(n) 这个方法的参数是一个整数,意思是在history记录中向前或者后退多少,类似window.history.go(n) router.push(location) 想要导航到不 ...

  5. weblogic8控制台禁止(允许)访问配置方法

    由于现网上对外网开放,而weblogic控制台的信息和管理比较敏感,如果weblogic控制台被破解账户和密码登录, 面临的风险将是非常的大,所以一般现网部署时,要禁用掉weblogic控制台的访问. ...

  6. springboot热部署配置

    1.pom添加spring-boot-devtools依赖和配置编译插件 <dependency> <groupId>org.springframework.boot</ ...

  7. T-SQL语言基础(2)之SQL Server体系结构

    SQL Server 体系结构 SQL Server 实例 SQL Server 实例是指安装的一个 SQL Server 数据库引擎/服务.在同一台计算机上可以安装 SQL Server 的多个实例 ...

  8. Win2008 IIS7.5安装配置PHP7.3.2步骤,及500错误解决

    安装Visual C++运行库 根据 PHP 版本选择 VC++ 版本,缺少 VC++ 运行库会报500错误. php-7.1.28-nts-Win32-VC14-x64.zip   VC14: Vi ...

  9. python smtp 发邮件 添加附件

    # -*- coding:utf-8 -*- # __author__ = 'justing' import os import smtplib from email.mime.multipart i ...

  10. 使用python写的一个代码统计程序

    # encoding="utf-8" """ 统计代码行数 """ import sys import os def c ...