路径规划

news/2024/10/1 14:58:09
  • 独立做出了百度之星决赛的金牌题,开心~
  • 动态转移的时候直接新开一个数组存储历史值,更清晰简洁,不给自己找麻烦
  • 在memcpy语句中,被操纵的数组在前
点击查看代码
#include <bits/stdc++.h>
using namespace std;
vector<int>a[100005],c[100005];
int cnt[100005];
long long f[100005][105][2],g[105][2],len[100005];
int w[105];
int n,m;
void dp(int n1,int fa)
{if(a[n1].size()==1&&n1!=1){cnt[n1]=1;}f[n1][0][0]=f[n1][0][1]=0;for(int i=0;i<a[n1].size();i++){if(a[n1][i]!=fa){int k=a[n1][i];dp(k,n1);cnt[n1]+=cnt[a[n1][i]];memcpy(g,f[n1],sizeof(f[n1]));len[n1]=max(len[n1],len[a[n1][i]]+c[n1][i]);f[n1][0][1]=f[n1][0][1]+f[a[n1][i]][0][1]+2*c[n1][i];f[n1][0][0]=f[n1][0][1]-len[n1];for(int j=1;j<min(cnt[n1],m+1);j++){f[n1][j][0]=min(g[j][1]+f[k][0][0]+c[n1][i],g[j][0]+f[k][0][1]+2*c[n1][i]);f[n1][j][0]=min(f[n1][j][0],g[j-1][0]+f[k][0][0]+c[n1][i]);for(int l=1;l<=cnt[k];l++){if(j-l<0){break;}if(l<cnt[k]){f[n1][j][0]=min(f[n1][j][0],g[j-l][1]+f[k][l][0]+c[n1][i]);}f[n1][j][0]=min(f[n1][j][0],g[j-l][0]+f[k][l][1]+2*c[n1][i]);}}for(int j=1;j<=min(cnt[n1],m);j++){f[n1][j][1]=g[j][1]+f[k][0][1]+2*c[n1][i];f[n1][j][1]=min(f[n1][j][1],g[j-1][0]+f[k][0][0]+c[n1][i]);for(int l=1;l<=cnt[k];l++){if(j-l<0){break;}f[n1][j][1]=min(f[n1][j][1],g[j-l][1]+f[k][l][1]+2*c[n1][i]);if(j-l-1>=0){f[n1][j][1]=min(f[n1][j][1],g[j-l-1][0]+f[k][l][0]+c[n1][i]);}}}}}
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);memset(f,0x3f,sizeof(f));cin>>n>>m;for(int i=1;i<n;i++){int u,v,w;cin>>u>>v>>w;a[u].push_back(v);a[v].push_back(u);c[u].push_back(w);c[v].push_back(w);}for(int i=1;i<=m;i++){cin>>w[i];}dp(1,0);sort(w+1,w+m+1);int cur=0;long long ans=INT_MAX;for(int i=0;i<=min(m,cnt[1]);i++){ans=min(ans,f[1][i][1]+cur);cur+=w[i+1];}cout<<ans<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/66798.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

应用中的错误处理概述

title: 应用中的错误处理概述 date: 2024/10/1 updated: 2024/10/1 author: cmdragon excerpt: 摘要:本文介绍了Nuxt中的错误处理机制,包括全局错误处理器和组件层级错误捕获,以及错误传递规则和生产环境下的处理方式 categories:前端开发tags:错误处理 Nuxt应用 全局处理…

TypeScrip在vue中的使用----defineEmits

向父元素发送消息 之前的语法: 在TS语法中,我们既要对defineEmits做类型约束,又要对emits做类型约束。 最主要是对defineEmits做一个泛型的约束。//在泛型对象中,有几个事件就写几个约束 type emitsType = {//()中有n个参数,第一个固定的是e,其他有具体参数决定。具体的写…

电影《749局》迅雷BT下载/百度云下载资源[MP4/2.12GB/5.35GB]超清版

电影《749局》:近未来的冒险与成长之旅电影《749局》是一部融合了科幻、冒险与奇幻元素的电影,由陆川编剧并执导,王俊凯、苗苗、郑恺、任敏、辛柏青领衔主演,李晨特邀主演,张钧甯、李梦、杨皓宇特别主演。该片于2024年10月1日在中国大陆上映,以其独特的科幻设定、宏大的视…

电影《749局》迅雷百度云下载资源4K分享[1.16GB/2.72GBMKV]高清加长版【1280P已完结】

电影《749局》的深度剖析与全面解读电影《749局》是一部集科幻、冒险、动作与奇幻元素于一体的力作,由陆川编剧并执导,王俊凯、苗苗、郑恺、任敏、辛柏青领衔主演,李晨特邀主演,张钧甯、李梦、杨皓宇特别主演。影片于2024年国庆档在中国大陆上映,以其独特的科幻设定、宏大…

南沙C++信奥赛陈老师解一本通题 1983:【19CSPJ普及组】公交换乘

​【题目描述】著名旅游城市 B 市为了鼓励大家采用公共交通方式出行,推出了一种地铁换乘公交车的优惠方案: 1、在搭乘一次地铁后可以获得一张优惠票,有效期为 4545 分钟,在有效期内可以消耗这张优惠票,免费搭乘一次票价不超过地铁票价的公交车。在有效期内指开始乘公交车的…

Flutter 实现骨架屏CE

什么是骨架屏 在客户端开发中,我们总是需要等待拿到服务端的响应后,再将内容呈现到页面上,那么在用户发起请求到客户端成功拿到响应的这段时间内,应该在屏幕上呈现点什么好呢? 答案是:骨架屏 那么什么是骨架屏呢,来问下 GPT:骨架屏(Skeleton Screen)是一种现代的用户…

[rCore学习笔记 028] Rust 中的动态内存分配

引言 想起我们之前在学习C的时候,总是提到malloc,总是提起,使用malloc现场申请的内存是属于堆,而直接定义的变量内存属于栈. 还记得当初学习STM32的时候CubeIDE要设置stack 和heap的大小. 但是我们要记得,这么好用的功能,实际上是操作系统在负重前行. 那么为了实现动态内存分配…

解决MacOS 13.0.1 苹果M1芯片 导入pyaudio报错的问题

【问题】 如果正常按照网上的教程,在terminal先使用brew安装portaudio(brew install portaudio),再使用pip在conda环境里安装pyaudio(pip install pyaudio),然后python直接导入pyaudio(import pyaudio)会报错如下:【分析】 可知报错来自于portaudio动态库。网上搜索解…