【BZOJ5290】【HNOI2018】道路(动态规划)

14人阅读 评论(0) 收藏 举报
分类:

题面

BZOJ
洛谷

题目直接到洛谷上看吧

题解

开始写写今年省选的题目
考场上我写了一个模拟退火骗了90分。。。

然而这道题目是道傻逼题
考虑dp
f[i][a][b]表示从i节点向上经过a条公路b条铁路的最小代价
很明显的转移是:

f[i][a][b]=min(f[lson][a][b]+f[rson][a][b+1],f[lson][a+1][b]+f[rson][a][b])

然后从根节点开始做一遍树形dp就行了。。。

真心傻逼题啊。。。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<queue>
using namespace std;
#define ll long long
#define RG register
#define MAX 40404
inline int read()
{
    RG int x=0,t=1;RG char ch=getchar();
    while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
    if(ch=='-')t=-1,ch=getchar();
    while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
    return x*t;
}
int n,A[MAX],B[MAX],C[MAX],son[2][MAX];
ll f[MAX>>1][44][44];
ll Calc(int u,int a,int b)
{
    if(u>=n)return 1ll*C[u]*(A[u]+a)*(B[u]+b);
    return f[u][a][b];
}
void dfs(int u,int a,int b)
{
    if(u>=n)return;
    int v1,v2;
    dfs(v1=son[0][u],a+1,b);
    dfs(v2=son[1][u],a,b+1);
    for(int i=0;i<=a;++i)
        for(int j=0;j<=b;++j)
            f[u][i][j]=min(Calc(v1,i,j)+Calc(v2,i,j+1),Calc(v1,i+1,j)+Calc(v2,i,j));
}
int main()
{
    n=read();
    for(int i=1;i<n;++i)
    {
        int s=read(),t=read();
        if(s<0)s=-s+n-1;
        if(t<0)t=-t+n-1;
        son[0][i]=s;son[1][i]=t;
    }
    for(int i=1;i<=n;++i)A[i+n-1]=read(),B[i+n-1]=read(),C[i+n-1]=read();
    dfs(1,0,0);
    printf("%lld\n",f[1][0][0]);
    return 0;
}
查看评论

网络工程师OSPF路由协议强化训练教程

-
  • 1970年01月01日 08:00

loj 2510. 「AHOI / HNOI2018」道路

题意: 题解: 这题……阅读理解题吧。 既然只有logloglog层,那么f[x][a][b]f[x][a][b]f[x][a][b]记忆化搜索下就好。 code: #include...
  • qq_36808030
  • qq_36808030
  • 2018-04-17 20:40:56
  • 18

[HNOI2018]道路(DP)

Description 咕咕咕。。。 Solution 设f[u][i][j]f[u][i][j]f[u][i][j]表示根节点到uuu一共经过了iii条未修的铁路,jjj条未修的公路。 若u...
  • DSL_HN_2002
  • DSL_HN_2002
  • 2018-04-16 13:12:36
  • 12

LibreOJ #2510.「HNOI2018」道路 树形dp

题意 分析 在考场上的时候以为这是神仙题,就没有太仔细想,结果这就是一道普及dp题。 设f[d,x,y]表示以d为根的子树,上面有x条公路,y条铁路时的最优翻修方案。 记忆化搜索一...
  • qq_33229466
  • qq_33229466
  • 2018-04-16 19:22:47
  • 54

[搜索] bzoj5290: [Hnoi2018]道路

bzoj 5290: [Hnoi2018]道路:https://www.lydsy.com/JudgeOnline/problem.php?id=5290 瞎搞搞 因为深度最多只有40 考虑搜索 ...
  • qq_36038511
  • qq_36038511
  • 2018-04-23 17:11:02
  • 4

[BZOJ5290][HNOI2018]道路(DP)

传送门 Day2的题目顺序很有问题啊,竟然把最简单的题放T3。。 不难发现是一个完全二叉树,然后公路连左孩子,铁路连右孩子。 就是一个类似于一个树形dp的东西,突破的关键就在原题中的一个隐晦...
  • CABI_ZGX
  • CABI_ZGX
  • 2018-04-23 17:02:09
  • 6

[bzoj5290][Hnoi2018]道路【树形dp】

【题目链接】   https://www.lydsy.com/JudgeOnline/problem.php?id=5290   https://www.luogu.org/problemnew/...
  • D_Vanisher
  • D_Vanisher
  • 2018-04-19 22:12:18
  • 4

[HNOI2018]道路

题意 给你一颗二叉树,,,每个叶子节点iii有三个属性ai,bi,ciai,bi,cia_i,b_i,c_i 每个非叶子节点都能标记往左右儿子的边中的一条边(((分别记为LLL边和RRR边))) ...
  • BeNoble_
  • BeNoble_
  • 2018-04-15 17:41:26
  • 124

【BZOJ5290】【HNOI2018】道路(树形DP+滑稽卡空间)

Description click me Solution 我考场上居然傻逼到这种题都没写出来。。还是太菜了。。。 考虑树形DP,设dpu,i,jdpu,i,jdp_{u,i,j}表示...
  • hhaannyyii
  • hhaannyyii
  • 2018-04-18 17:55:21
  • 15

[bzoj5290][记忆化搜索]道路

不想搞题面所以传送门 题解 记忆化搜索的复杂度真的玄学2333 f[i][j][k]表示第i个城市上面有j个铁路k个公路 瞎搜索 #include&amp;lt;cstd...
  • Rose_max
  • Rose_max
  • 2018-04-23 13:46:49
  • 9
    个人资料
    持之以恒
    等级:
    访问量: 4万+
    积分: 5947
    排名: 5378
    友情链接
    yyb In cnblogs
    如果您想评论之类的,不太建议在CSDN下评论
    您可以移步Cnblogs,我在那里也更加活跃
    在Cnblogs上也有我的更多的文章,包括游记等
    友链之类的我也都放到那边啦
    然后这边因为分类很麻烦,我已经放弃添加新的分类了
    所以,如果您想有更加的阅读效果,请移步我的Cnblogs
    CSDN我还在用主要是这里写MD有预览。。。
    所以,大家还是去我的Cnblogs上看把,orz