NOIP2017 - 宝藏

2024-03-19 18:08
文章标签 宝藏 noip2017

本文主要是介绍NOIP2017 - 宝藏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

LibreOJ链接

Description

给出一个\(n(n\leq12)\)个点\(m(m\leq1000)\)条边的带权无向图,求该图的一棵生成树,使得其边权×该边距根的深度之和最小。

Solution

既然\(n\leq12\),可以猜测是状压DP。
定义\(f[dpt][s][s_1]\)表示一棵深度为\(dpt\),点集为\(s\),最深的(深度为\(dpt\))的点的集合为\(s_1\)的生成树的权值。我们考虑给\(s_1\)接上一些点\(s_2\),从而转移为\(f[dpt+1][s|s_2][s_2]\)。转移方程为:\[f[dpt+1][s|s_2][s_2]=min\{ f[dpt][s][s_1]+w[s_1][s_2]\times dpt \} \space (s_1\in s,s_2\in \complement_U^s )\]其中\(w[s_1][s_2]\)表示将\(s_2\)接在\(s_1\)上的最小花费,预处理一下即可。

时间复杂度\(O(n\cdot 2^n \cdot 2^k 2^{n-k})=O(n4^n)\)。不过似乎有\(O(n^2 3^n)\)的做法?

Code

//「NOIP2017」宝藏
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int const N=15;
int const S=1<<12;
int const INF=0x3F3F3F3F;
int n,m,ed[N][N]; int U;
int w[S][S],f[2][S][S];
void calW()
{memset(w,0x3F,sizeof w);for(int s1=0;s1<=U;s1++) w[s1][0]=0;for(int s1=0;s1<=U;s1++)for(int i=0;i<n;i++){int s2=1<<i; if(s1&s2) continue;for(int j=0;j<n;j++)if((s1>>j)&1) w[s1][s2]=min(w[s1][s2],ed[i+1][j+1]);}for(int s1=0;s1<=U;s1++)for(int s2=1;s2<=U;s2++){if(s1&s2) continue;for(int i=1;i<=s2;i<<=1)if(s2&i) w[s1][s2]=min(w[s1][s2],w[s1][s2^i]+w[s1][i]);}
}
int main()
{scanf("%d%d",&n,&m); U=(1<<n)-1;if(n==1) {puts("0"); return 0;}memset(ed,0x3F,sizeof ed);for(int i=1;i<=m;i++){int u,v,c; scanf("%d%d%d",&u,&v,&c);ed[u][v]=ed[v][u]=min(ed[u][v],c);}calW();int c=0; int ans=INF;memset(f,0x3F,sizeof f);for(int i=1;i<=U;i<<=1) f[c][i][i]=0;for(int dpt=1;dpt<=n;dpt++){c^=1;for(int s=0;s<=U;s++)for(int s2=U^s;s2;s2=(s2-1)&(U^s)){int res=INF;for(int s1=s;s1;s1=(s1-1)&s)if(f[c^1][s][s1]<INF&&w[s1][s2]<INF) res=min(res,f[c^1][s][s1]+w[s1][s2]*dpt);f[c][s|s2][s2]=res;}for(int s2=0;s2<=U;s2++) ans=min(ans,f[c][U][s2]);}printf("%d\n",ans);return 0;
}

P.S.

初始的DP数组要清\(\infty\),而不是\(0\)
DP数组需要滚动,否则会MLE
我这个做法在LOJ上需要稍微卡一下常,第52行的if就是卡常用的。

转载于:https://www.cnblogs.com/VisJiao/p/8489588.html

这篇关于NOIP2017 - 宝藏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

moonlight串流配置太复杂?推荐一款无需配置的宝藏串流软件GameViewer远程

moonlight支持将PC游戏实时串流到安卓、iOS、Apple TV、Chromebook、PS Vita甚至Raspberry Pi等设备上,让用户无需携带笨重的游戏设备,即可随时随地进行游戏。 但是moonlight的门槛较高,很多串流新手不懂得如何配置,同时如果没有IPV6内网穿透则无法使用,这也是很多玩家想尝试moonlight但是被复杂的设置劝退了的原因。如果你因为配置门

宝藏!《联盟自控强化班洗髓题库》(青龙篇) 1-9章:甄选部分

本文内容,全部选自自动化考研联盟的:初试《自控强化班洗髓题库》(青龙篇)。 目录 Part1:资料封面&目录 Part2:资料各个章节具体内容 第1章 自动控制的一般概念 第2章 控制系统的数学模型 第3章 线性系统的时域分析 第4章 线性系统的根轨迹法 第5章 线性系统的频域分析法 第6章 线性系统的校正方法 第7章 线性离散系统的分析与校正 第8章 非线性控制系统分析

员工微信聊天敏感词报警系统是什么?好用的企业敏感词告警系统推荐(宝藏收藏篇)

"风起于青萍之末,浪成于微澜之间。"  在信息如潮的今日,一句不经意的言辞,或许就隐藏着企业安全的隐患。 员工微信聊天敏感词报警系统,正是这风起云涌中的一道坚实防线,它如同敏锐的哨兵,时刻监控着信息的流向,确保企业的每一份机密都能得到妥善保护。 本文将深入解析这一系统,并为您推荐一款宝藏级的企业敏感词告警系统——安企神。 员工微信聊天敏感词报警系统是什么? 员工微信聊天敏感词报警系统,

常见的电脑加密方式|文件加密解密工具分享(宝藏篇)

无论是个人隐私的保护,还是企业核心数据的安全,都离不开有效的加密技术。 电脑加密,作为信息安全防护的第一道防线,其重要性不言而喻。 本文将深入探讨几种常见的电脑加密方式,并分享几款高效的文件加密解密工具,帮助您更好地守护数据安全。 一、常见的电脑加密方式 1. 磁盘加密 磁盘加密,又称全盘加密,是一种对整个硬盘或分区进行加密的技术。它通过在操作系统启动前就对磁盘进行解锁,确保即使物理

[NOIP2017 提高组] 列队

个人难度:Medium+/Hard- 题目描述 给你一个矩阵,每次操作删除一个数 a x , y a_{x,y} ax,y​,然后第 x x x 行 y y y 右边所有数左移一位填补空位,然后第 m m m 列 x x x 上边所有数下移一位填补空位,最后把 a x , y a_{x,y} ax,y​ 放到 n n n 行 m m m 列填补空位。每次操作时求 a x ,

什么牌子的开放式耳机性价比高?五大宝藏款式推荐!

耳机技术不断演进,开放式耳机因其开放耳道设计,受到市场青睐。这种设计不仅提升了佩戴舒适度,还增加了户外运动的安全性,允许用户在享受音乐时保持对周围环境的感知。 面对众多品牌,选择时要考虑音质、舒适度及附加功能。此外,考虑防水、续航和智能模式等特性也很重要。用户应依据个人需求和偏好,挑选适合自己的开放式耳机,以确保健康和安全的听觉体验。小编近期特意整理了开放式耳机六条选购技巧,并为你找到了五款热门

百元蓝牙耳机什么牌子的好?四大宝藏机型真实推荐,快速收藏!

作为一位蓝牙耳机爱好者,无论是上班、娱乐、学习我都离不开蓝牙耳机。通勤时候能听听音乐,是最好的享受,可以让我更加放松,尽情享受音乐带来的乐趣。但市面上的大多数蓝牙耳机都是货不对板的,不是音质一般、就是续航时间短,那么想要一款百元蓝牙耳机什么牌子的好?这里给大家带来四大宝藏机型真实推荐,快速收藏! 百元蓝牙耳机什么牌子的好?四大宝藏机型真实推荐,快速收藏! 1、西圣AVA2蓝牙耳机 售

【Windows】被遗忘的宝藏:Windows 10 LTSC 2021 官方精简版

当Windows 11如火如荼地推广之际,许多用户开始怀念Windows 10带来的流畅体验。虽然Windows 11以其现代化的界面和改进的性能吸引了不少用户,但在实际使用中,一些用户还是觉得它在响应速度上稍显不足。今天,就让我们来重新认识一个被微软“雪藏”的系统——Windows 10 LTSC 2021官方精简版。 什么是Windows 10 LTSC? LTSC,全称为Long-Ter

香蕉梨:自然的甜蜜宝藏

&nbsp; &nbsp; &nbsp; &nbsp;在水果的缤纷世界里,有一种独特的存在,它融合了香蕉的软糯与梨子的清甜,那便是令人惊艳的香蕉梨。 &nbsp; &nbsp; &nbsp; &nbsp;食家巷香蕉梨,外形圆润可爱,色泽金黄中带着一抹清新的嫩绿,宛如大自然精心雕琢的艺术品。当你拿起一个香蕉梨,便能感受到它沉甸甸的分量,那是满满的果汁与营养在向你招手。 &nbsp; &nbs

宝藏!《自控入门班炼气题库》(玄武篇)1-9章:甄选部分

本文内容,全部选自联盟自动化考研联盟的:初试《自控入门班炼气题库》(玄武篇)。 目录 Part1:资料封面&目录 Part2:资料各个章节具体内容 第1章 自动控制的基本概念 第2章 控制系统的数学模型 第3章 控制系统的时域分析 第4章 根轨迹法 第5章 线性系统的频域分析法 第6章 线性系统的校正方法 第7章 线性离散系统的分析与设计 第8章 非线性控制系统的分析 第9