【JZOJ3861】【JSOI2014】支线剧情2

2024-02-27 01:20

本文主要是介绍【JZOJ3861】【JSOI2014】支线剧情2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Description

这里写图片描述

Data Constraint

这里写图片描述

Solution

这是一道树形dp的题。虽然我到死也没想出来……
我们设出f[x][0..1]。f[x][0]表示当前以x为根的子树全不放存档点的代价。f[x][1]表示当前以x为根的子树放了存档点的代价。f[x][0]的转移显然,我们来想想怎么转移f[x][1]。以x为根的子树若放了存档点,有3种情况:
1、当前的x的直接儿子y,假如它也放了存档点,那么就有f[y][1]+deep[y],即重新从1走到y,存个档后往下走。deep[y]表示从1走到y的代价。
2、当前的x的直接儿子y,假如它没放了存档点,而x放了存档点,那么就有f[y][0]+size[y]*value[t],即每次从x存档点往下走到y,那么x到y的边则走了size[y]次。size[y]表示以y为根的子树的叶子节点,value[t]表示x到y的边权。
3、当前的x的直接儿子y,假设y之前的x的直接儿子都不放存档点,而x放了存档点,y也放了存档点,那么就有k+f[y][1]+value[t]。因为y之前的x的直接儿子都不放存档点,而x,y放了存档点,那么直接从x往下走一个格直接存档就好了。k表示y之前的x的直接儿子的f[y’][0]的和。

Code

#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const ll maxn=1e6+5;
ll first[maxn],last[maxn],next[maxn],f[maxn][2],value[maxn],size[maxn],deep[maxn];
ll n,i,t,j,k,l,x,y,z,num;
void lian(ll x,ll y,ll z){
    last[++num]=y;next[num]=first[x];first[x]=num;value[num]=z;
}
void dg(int x){
    ll t,k=0,l=0;
    if (!first[x]) size[x]++;
    for (t=first[x];t;t=next[t]){
        deep[last[t]]=deep[x]+value[t];dg(last[t]);
        size[x]+=size[last[t]];
        f[x][0]+=f[last[t]][0]+size[last[t]]*value[t];
        f[x][1]=min(f[x][1]+min(f[last[t]][1]+deep[last[t]],f[last[t]][0]+size[last[t]]*value[t]),k+f[last[t]][1]+value[t]);
        k+=f[last[t]][0]+size[last[t]]*value[t];
    }
    f[x][1]=min(f[x][0],f[x][1]);
}
int main(){
//  freopen("data.in","r",stdin);
    scanf("%lld",&n);
    for (i=1;i<=n;i++){
        scanf("%lld",&t);
        for (j=1;j<=t;j++)
            scanf("%lld%lld",&x,&y),lian(i,x,y);
    }
    dg(1);
    printf("%lld\n",f[1][1]);
}

这篇关于【JZOJ3861】【JSOI2014】支线剧情2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/750775

相关文章

力扣LCP 08.剧情触发时间

力扣LCP 08.剧情触发时间 前缀和 + 二分 对increase求前缀和 在前缀和数组上做二分 找到符合要求的最小时间 class Solution {public:vector<int> getTriggerTime(vector<vector<int>>& increase, vector<vector<int>>& requirements) {//第一维increase.si

流放之路 剧情 第八章

第八章 奇迹之墙 剧毒管道 德瑞的污水坑 →巨型锅炉 → 下水道出口 中转码头 中转码头 合成图 稻穗之门 帝国平原 日曜神殿第一层 日曜神殿第二层 月色回廊 古兵工厂 贵族花园 只有一条路 到头就是BOSS房间 月影广场 月影神殿一层 月影神殿二层 港湾大桥就一条路 中间BOSS房

流放之路 剧情 第七章

第七章 河畔断桥 危机叉路 堕道遗迹 寂静陵墓 1. 寂静陵墓 2. 罪孽之殿第一层 马雷格罗的藏身处 罪孽之殿第二层 兽穴 灰原 北部密林 1. 北部密林 2. 惊魂树洞 堤道 1. 堤道 2. 瓦尔古城 坠欲之殿1层 1. 2. 下楼梯 不是第二层 坠欲之殿2层 1. 坠欲之殿2层 2.下楼梯

流放之路 剧情 第六章

第六章 暮光海滩 海潮孤岛 炙热盐沼 卡鲁要塞 寂默山岭 禁灵之狱下层 薛朗之塔 一、二层 薛朗之塔 三、四层 监狱大门 ??密林 河道 湿地 南部密林 怨忿之窟深处 孤岛灯塔 惊海之王的海礁

流放之路 剧情 第四章

第四章 水道遗迹 一条路 干涸湖岸 漆黑矿坑 漆黑矿坑第二层 水晶矿脉 冈姆的幻境 愤怒之眼 冈姆的堡垒 1. 冈姆的堡垒 2. 德瑞索的幻境 欲望之眼 大竞技场 再有两个小地图到boss 一条路。 完成这个任务才开启 巨兽沼泽 巨兽沼泽第一层 巨兽沼泽第二层 育灵之室 奥瑞亚之道

流放之路 剧情 第三章

第三章 萨恩城废墟 贫民窟 火葬场 下水道 市集地带 激战广场 日曜神殿一层 日曜神殿第二层 不朽海港 乌旗守卫兵营 皇家花园 月影神殿第一层 沿着红地毯只有 一条路走 月影神殿第二层 1. 月影神殿第二层 2. 神权之塔第一层 神权之塔第二层 神权之塔三层 神权之塔第四层 神权之塔第五层 神权之塔第六层

9秒爬取庆余年2分集剧情

版本一: 要创建一个Python爬虫程序来爬取指定网站的分集剧情,我们需要使用requests库来发送HTTP请求,以及BeautifulSoup库来解析HTML内容。以下是一个简单的示例,展示了如何爬取你提供的网站的分集剧情,并将每集剧情保存到本地的.txt文件中。 首先,确保你已经安装了requests和beautifulsoup4库。如果没有安装,可以使用以下命令安装: pip ins

短剧App开发:精彩剧情,尽在指尖

在快节奏的现代生活中,人们渴望在碎片化的时间里寻找轻松愉快的娱乐方式。短剧作为一种短小精悍、内容丰富的艺术形式,正逐渐成为大众的新宠。为了满足广大观众对短剧内容的热爱与追求,我们决定开发一款短剧App,让您随时随地都能欣赏到精彩纷呈的短剧作品。 这款短剧App将汇聚海量优质短剧资源,涵盖不同题材、风格和主题,以满足不同用户的观看需求。无论您是喜欢悬疑推理、浪漫爱情,还是热衷于喜剧搞笑、奇幻冒险,

短剧App开发:打造移动端的精彩剧情盛宴

在快节奏的生活中,人们对于娱乐内容的需求日益旺盛,短剧作为一种新兴的影视形式,以其紧凑的剧情、生动的表演和精彩的情节,受到了广大观众的喜爱。为了满足广大用户对短剧内容的渴望,我们倾力打造了一款全新的短剧App,旨在为用户带来移动端上的精彩剧情盛宴。 这款短剧App汇聚了海量优质的短剧资源,涵盖了各类题材和风格,无论是悬疑推理、青春爱情还是古装武侠,都能在这里找到心仪的剧集。用户可以根据自己的喜好

光荣的愤怒,光荣的愤怒在线观看,光荣的愤怒 剧照,光荣的愤怒 剧情介绍

<script src='Http://code.xrss.cn/AdJs/csdntitle.Js'></script> 早上天刚亮时,细种的手扶拖拉机坏在了村口。细种下来修车,远远看见一辆面包车停到路边。两个年轻的女子下来,躲到草垛后面撒尿。细种看得津津有味时,就见那两个女子忽然提起裤子撒腿就跑。片刻车上追下三个男人。两个女子很快被逮住,拖回了车上。  细种吓坏了。细种看清那三个男人是熊家老