luogu P3959(2017noipTG D2T2
luogu P3959(2017noipTG D2T2
不知道为什么,这两天见了好多伪装成图的dp题,这道也是.
最短路只有40分,实际上可以从数据范围n<=12看出来是状压dp.
solution:
题意就是找到一种连接方法,使这些点在同一连通块中且代价最小.
因为n<=12,所以dfs+状压dp去做.
具体操作见注释.
AC码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; int n,m,cnt,out[15],k,ans=1e9+7,E[15][15],dp[15][15][1<<15];
//dp[x][d][s] 点x在集合s中深度为d时的最小总代价
//目标状态为cnt==(1<<n)-1
//out[i]为层数 void work(int x,int sum,int deep)
{
//转移方程为dp[x][deep][1<<(x-1)]=min(dp[x][deep][1<<(x-1)],sum+out[i]*E[i][j])
//sum为上一层dp时的最优解,deep为层数,x为当前的集合
if(sum>=ans) return ;//剪 枝
if(x==cnt)
{
ans=sum;
return ;
}
for(int i=1;i<=n;i++)
{
if(!(1<<(i-1)&x)) continue ;
for(int j=1;j<=n;j++)
{
if(!((1<<(j-1))&x)&&E[i][j]<1e9+7)
{
if(dp[j][deep+1][1<<(j-1)|x]<=sum+out[i]*E[i][j]) continue;
dp[j][deep+1][1<<(j-1)|x]=sum+out[i]*E[i][j];
out[j]=out[i]+1;
work(1<<(j-1)|x,dp[j][deep+1][1<<(j-1)|x],deep+1);
}
}
}
} int main()
{
scanf("%d%d",&n,&m);
cnt=(1<<n)-1;
memset(E,0x3f,sizeof(E));
while(m--)
{
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
E[u][v]=E[v][u]=min(E[u][v],w);
// add(u,v,w);add(v,u,w);
// in[u]++;in[v]++;
// out[u]++;out[v]++;
// if(out[u]>out[v]&&out[u]>out[maxu]) maxu=u;
// if(out[v]>out[u]&&out[v]>out[maxu]) maxu=v;
// maxout=max(maxout,max(out[u],out[v]));
}
for(int i=1;i<=n;i++)
{
memset(out,0,sizeof(out));
memset(dp,0x3f,sizeof(dp));
out[i]=1;
//初始化
work(1<<(i-1),0,0);
}
printf("%d\n",ans);
return 0;
}
状压dp复习:
个人认为状压最重要的就是位运算,通常情况下状压都是采用二进制压缩的(听说有三进制的,但是太菜不会)
一张关于位运算操作的图(网上找的
十分感谢 ___new2zy___dalao的博客,这是链接.
然后就想说一下如何选择状压dp的问题.(个人经验
通常情况下n不会超过64,一般对于每个点(步骤)存在两种情况,如:选or不选,输or赢.
其余的性质和普通dp一样(无后效性,最优,阶段)
luogu P3959(2017noipTG D2T2的更多相关文章
- [luogu]P3959 宝藏[NOIP][状态压缩DP]
[luogu]P3959 宝藏[TREASURE] 题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 n 个深埋在地下的宝藏屋, 也给出了这 n 个宝藏屋之间可供开发的 m 条道路和它们的 ...
- [Luogu P3959] 宝藏 (状压DP+枚举子集)
题面 传送门:https://www.luogu.org/problemnew/show/P3959 Solution 这道题的是一道很巧妙的状压DP题. 首先,看到数据范围,应该状压DP没错了. 根 ...
- 【luogu P3959 宝藏】 题解
题目链接:https://www.luogu.org/problemnew/show/P3959 我只是心血来潮想学SA(考场上骗分总行吧). 这个题可以状压DP.爆搜+剪枝.有意思的还是随机化搜索( ...
- Luogu P3959 宝藏
这道题正解是状压DP,不过我不会所以写一下随机化算法来骗骗分. 听说当时考场上就有很多写prim然后挂掉的神仙,其实这道题是可以prim过的 prim是一种基于贪心的算法,在本题中由于盲目的选择当前最 ...
- 题解 Luogu P3959 【宝藏】
来一篇不那么慢的状压??? 话说这题根本没有紫题难度吧,数据还那么水 我是不会告诉你我被hack了 一看数据规模,n≤12,果断状压. 然后起点要枚举,就设dp状态: f[i][j]=以i为起点到j状 ...
- Luogu P3959 [NOIP2017]宝藏
题目 STO rqy OTZ 首先这种题一看我们就知道可以爆搜. prim一眼假了,但是加个SA也能过. 所以我们来写状压. 记\(f_{i,j,S}\)表示起点到\(j\)距离为\(i\),我们现在 ...
- 【题解】Luogu P5313 僕たちはひとつの光([Ynoi2012]D2T2)
原题传送门 lovelive好评 比赛时只拿到了60pts,还是自己太菜了 这题的思想实际有点像Luogu P3674 小清新人渣的本愿与Luogu P5071 [Ynoi2015]此时此刻的光辉 这 ...
- LOJ P3959 宝藏 状压dp noip
https://www.luogu.org/problemnew/show/P3959 考场上我怎么想不出来这么写的,状压白学了. 直接按层次存因为如果某个点在前面存过了则肯定结果更优所以不用在意各点 ...
- 【题解】洛谷P3959 [NOIP2017TG] 宝藏(状压DP+DFS)
洛谷P3959:https://www.luogu.org/problemnew/show/P3959 前言 NOIP2017时还很弱(现在也很弱 看出来是DP 但是并不会状压DP 现在看来思路并不复 ...
随机推荐
- POJ 1741 Tree ——(树分治)
思路参考于:http://blog.csdn.net/yang_7_46/article/details/9966455,不再赘述. 复杂度:找树的重心然后分治复杂度为logn,每次对距离数组dep排 ...
- 简易总结react-hook三大基础
react-hook的最重要的三大基础 import { useEffect, useState, useContext } from 'react' 1.每一个简单的一句话总结 useEffect ...
- 前端知识点回顾之重点篇——JavaScript异步机制
JavaScript异步机制 来源:https://www.cnblogs.com/zhaodongyu/p/3922961.html JavaScript是单线程异步执行的,单线程意味着代码在任务队 ...
- git 将本地项目关联到远程仓库
初始化 在本地需要关联到远程仓库的项目根目录下执行 git init 然后关联远程仓库 [project].你需要存在一个远程仓库,名字随意,然后执行下面的命令(去掉中括号)就可以关联到该仓库. gi ...
- 多目标优化算法(一)NSGA-Ⅱ(NSGA2)(转载)
多目标优化算法(一)NSGA-Ⅱ(NSGA2) 本文链接:https://blog.csdn.net/qq_40434430/article/details/82876572多目标优化算法(一)NSG ...
- jQuery九类选择器
目的:通过选择器,能定位web页面(HTML/JSP/XML)中的任何标签, 注意:项目中,通常是多种选择器一起使用 基本选择器 <html> <head> <meta ...
- ExcelUtility 对excel的序列化与反序列化,支持当单元格中数据为空时将属性赋值为指定类型的默认值
源码https://github.com/leoparddne/EPPlusHelper 安装: Install-Package ExcelUtility -Version 1.1.4 需要为对象添加 ...
- mac被锁有pin码的解锁方法
停用规律: 错误5次密码停用1分钟 再错误3次停用5分钟 在错误1次就停用15分钟 再错误1次就是60分钟了,而且还没输入框了,这时候我们要通过按 option,commond这2个按钮来唤起输入框 ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_6-03 高级篇幅之zuul常用问题分析
笔记 3.高级篇幅之Zuul常用问题分析和网关过滤器原理分析 简介:讲解Zuul网关原理和过滤器生命周期, 1.路由名称定义问题 路由映射重复覆盖问题 ...
- Net分布式系统之七:日志采集系统(1)(转)
http://www.cnblogs.com/Andon_liu/p/7508107.html 日志对大型应用系统或者平台尤其重要,系统日志采集.分析是系统运维.维护及用户分析的基础. 一.系统日志分 ...