[题解]宝藏(状压
时间:2019-10-10
本文章向大家介绍[题解]宝藏(状压,主要包括[题解]宝藏(状压使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
数据范围小,不是爆搜就是状压
发现每个集合s不能表示所有状态,还有一个状态是和起始点的距离,这样我们直接用$f[x][s][d]$表示点x在点集s深度为d的最小代价,暴力枚举每个起始点直接扩展状态,把s跑满就更新答案,图上所以dfs实现还好写
#include<bits/stdc++.h> #define ll long long using namespace std; const int inf=1e9+7; const int maxn=15; int n,m,g[maxn][maxn],ans=inf,lim; int dis[maxn],f[maxn][1<<maxn][maxn];//x在点集s中深度为k的最小代价 inline void dfs(int s,int sum,int dep){ if(sum>=ans)return; if(s==lim){ans=sum;return;} for(int i=1;i<=n;i++){ if(!(1<<(i-1)&s))continue; for(int j=1;j<=n;j++) if(!(1<<(j-1)&s)&&g[i][j]!=0x3f3f3f3f)//没有选过j且ij之间有边 if(f[j][1<<(j-1)|s][dep+1]>sum+dis[i]*g[i][j]){ f[j][1<<(j-1)|s][dep+1]=sum+dis[i]*g[i][j]; dis[j]=dis[i]+1; dfs(1<<(j-1)|s,f[j][1<<(j-1)|s][dep+1],dep+1); } } } int main(){ scanf("%d%d",&n,&m);lim=(1<<n)-1; memset(g,0x3f,sizeof(g)); for(int i=1,u,v,w;i<=m;i++){ scanf("%d%d%d",&u,&v,&w); g[u][v]=g[v][u]=min(g[u][v],w); } for(int i=1;i<=n;i++){ memset(dis,0x3f,sizeof(dis)); memset(f,0x3f,sizeof(f)); dis[i]=1; dfs(1<<(i-1),0,0); } printf("%d",ans); }
原文地址:https://www.cnblogs.com/superminivan/p/11646674.html
- 使用R语言挖掘QQ群聊天记录
- 解析滴滴算法大赛---GBDT进行数据预测
- 数据迁移中的数据库检查和建议(r2笔记71天)
- 决策树案例:基于python的商品购买能力预测系统
- 数据迁移前的准备和系统检查 (r2笔记70天)
- 数据处理的统计学习(scikit-learn教程)
- 机器学习实战,使用朴素贝叶斯来做情感分析
- Python NLTK 处理原始文本
- 通过闪回事务查看数据dml的情况 (r2笔记69天)
- 通过shell和sql结合查找性能sql(r2笔记68天)
- 淘宝的评论归纳是用什么方法做到的?
- Python的机器学习实战:AadBoost
- 通过shell检查分区表中是否含有默认分区(r2笔记87天)
- 利用python爬取人人贷网的数据
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法