【BZOJ3590】[Snoi2013]Quare 状压DP

题解:

一道比较水的题

但这个测试数据极弱我也不知道我的代码正确性是不是有保证

构成一个边双联通

可以由两个有一个公共点的边双联通或者一个边双加一条链构成

所以我们需要要预处理出所有环

令f[i][j][k]表示起点为i,终点为j,经过点的状态为k,这样递推

那么最后环就是加上j-i这条边就可以了

但是注意一个二元环,一个为最长边一个为次长边

其他环都不会用到次长边

代码:

#include <bits/stdc++.h>
using namespace std;
#define IL inline
#define rint register int
#define dep(i,t,h) for (rint i=t;i>=h;i--)
#define rep(i,h,t) for (rint i=h;i<=t;i++)
char ss[1<<24],*A=ss,*B=ss;
IL char gc()
{return A==B&&(B=(A=ss)+fread(ss,1,1<<24,stdin),A==B)?EOF:*A++;
}
template<class T>void read(T &x)
{rint f=1,c; while (c=gc(),c<48||c>57) if (c=='-') f=-1; x=(c^48);while(c=gc(),c>47&&c<58) x=(x<<3)+(x<<1)+(c^48); x*=f; 
}
void umin(int &x,int y)
{if (x>y) x=y;
}
int dp[15][15][1<<14],ff[1<<14],f[20][20][2],n,m;
bool tf[1<<14];
const int INF=1e9;
int main()
{int T;read(T);rep(tt,1,T){read(n); read(m);rep(i,1,n) rep(j,1,n)f[i][j][0]=f[i][j][1]=INF;rep(i,1,m){int x,y,z;read(x); read(y); read(z);if (z<=f[x][y][0]) f[x][y][1]=f[x][y][0],f[x][y][0]=z,f[y][x][1]=f[y][x][0],f[y][x][0]=z;else if (z<f[x][y][1]) f[x][y][1]=z,f[y][x][1]=z;}rep(i,1,n)rep(j,1,n)rep(k,1,(1<<n)-1) dp[i][j][k]=INF;rep(i,1,n) dp[i][i][(1<<(i-1))]=0;rep(i,1,(1<<n)-1){int a[100];int cnt=0;rep(j,1,n)if ((i>>(j-1))&1) a[++cnt]=j;rep(i1,1,cnt)rep(j1,1,cnt)rep(k,1,n)if (!((i>>(k-1))&1))umin(dp[a[i1]][k][i|(1<<(k-1))],dp[a[i1]][a[j1]][i]+f[a[j1]][k][0]);}rep(i,1,(1<<n)-1) tf[i]=0;rep(i,1,(1<<n)-1) ff[i]=INF;rep(i,1,n)rep(j,1,n)if (i!=j)tf[(1<<(i-1))+(1<<(j-1))]=1,ff[(1<<(i-1))+(1<<(j-1))]=min(INF,f[i][j][0]+f[i][j][1]);rep(i,1,(1<<n)-1)if (!tf[i])rep(j,1,n)rep(k,1,n)umin(ff[i],dp[j][k][i]+f[j][k][0]);rep(i,1,(1<<n)-1)for (int j=i;j;j=i&(j-1))rep(k,1,n)if (j&(1<<(k-1)))umin(ff[i],ff[(i^j)|(1<<(k-1))]+ff[j]);if (ff[(1<<n)-1]!=INF) cout<<ff[(1<<n)-1]<<endl;else cout<<"impossible"<<endl; }return 0; 
}

 

转载于:https://www.cnblogs.com/yinwuxiao/p/9317508.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java swing简介

UI 组件简介 在开始学习 Swing 之前&#xff0c;必须回答针对真正初学者的一个问题&#xff1a;什么是 UI&#xff1f;初学者的答案是“用户界面”。但是因为本教程的目标是要保证您不再只是个初学者&#xff0c;所以我们需要比这个定义更高级的定义。 所以&#xff0c;我再次…

定时任务 cron 表达式详解

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 &#xff08;Spring定时任务的几种实现&#xff1a;见博客另一页&#xff1a;http://blog.csdn.net/jiangyu1013/article/details/54405…

Android Studio 超级简单的打包生成apk

为什么要打包&#xff1a; apk文件就是一个包&#xff0c;打包就是要生成apk文件&#xff0c;有了apk别人才能安装使用。打包分debug版和release包&#xff0c;通常所说的打包指生成release版的apk&#xff0c;release版的apk会比debug版的小&#xff0c;release版的还会进行混…

推荐16款最棒的Visual Studio插件

Visual Studio是微软公司推出的开发环境&#xff0c;Visual Studio可以用来创建Windows平台下的Windows应用程序和网络应用程序&#xff0c;也可以用来创建网络服务、智能设备应用程序和Office插件。 本文介绍16款最棒的Visual Studio扩展&#xff1a; 1. DevColor Extension…

网络爬虫--22.【CrawlSpider实战】实现微信小程序社区爬虫

文章目录一. CrawlSpider二. CrawlSpider案例1. 目录结构2. wxapp_spider.py3. items.py4. pipelines.py5. settings.py6. start.py三. 重点总结一. CrawlSpider 现实情况下&#xff0c;我们需要对满足某个特定条件的url进行爬取&#xff0c;这时候就可以通过CrawlSpider完成。…

可以生成自动文档的注释

使用/**和*/可以用来自动的生成文档。 这种注释以/**开头&#xff0c;以*/结尾

怎么安装Scrapy框架以及安装时出现的一系列错误(win7 64位 python3 pycharm)

因为要学习爬虫&#xff0c;就打算安装Scrapy框架&#xff0c;以下是我安装该模块的步骤&#xff0c;适合于刚入门的小白&#xff1a; 一、打开pycharm&#xff0c;依次点击File---->setting---->Project----->Project Interpreter&#xff0c;打开后&#xff0c;可以…

illegal to have multiple occurrences of contentType with different values 解决

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 在网上查到说是&#xff1a;“包含页面与被包含页面的page指令里面的contentType不一致&#xff0c;仔细检查两个文件第一行的 page....…

xpath-helper: 谷歌浏览器安装xpath helper 插件

1.下载文件xpath-helper.crx xpath链接&#xff1a;https://pan.baidu.com/s/1dFgzBSd 密码&#xff1a;zwvb&#xff0c;感谢这位网友&#xff0c;我从这拿到了 2.在Google浏览器里边找到这个“扩展程序”选项菜单即可。 3.然后就会进入到扩展插件的界面了,把下载好的离线插件…

网络爬虫--23.动态网页数据抓取

文章目录一. Ajax二. 获取Ajax数据的方式三. seleniumchromedriver获取动态数据四. selenium基本操作一. Ajax 二. 获取Ajax数据的方式 三. seleniumchromedriver获取动态数据 selenium文档&#xff1a;https://selenium-python.readthedocs.io/installation.html 四. sele…

视音频编解码技术及其实现

核心提示&#xff1a;一、视音频编码国际标准化组织及其压缩标准介绍 国际上有两个负责视音频编码的标准化组织&#xff0c;一个是VCEG&#xff08;VideocodeExpertGroup&#xff09;&#xff0c;是国际电信联合会下的视频编码专家组&#xff0c;一个是MPEG&#xff08;MotionP…

什么是NaN

NaN&#xff0c;是Not a Number的缩写。NaN 用于处理计算中出现的错误情况&#xff0c;比如 0.0 除以 0.0 或者求负数的平方根。由上面的表中可以看出&#xff0c;对于单精度浮点数&#xff0c;NaN 表示为指数为 emax 1 128&#xff08;指数域全为 1&#xff09;&#xff0c;…

排序系列【比较排序系列之】直接插入排序

最近在和小伙伴们一起研究排序&#xff0c;排序分好多总&#xff0c;后期会做整体总结&#xff0c;本篇则主要对插入排序进行一个整理。 插入排序&#xff08;insert sorting&#xff09;的算法思想十分简单&#xff0c;就是对待排序的记录逐个进行处理&#xff0c;每个新纪录…

Mysql 无法插入中文,中文乱码解决

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 在计算机中搜索 my.ini文件 找到后打开 &#xff0c;并找到这2行作 如下设置 &#xff1a; default-character-setutf8character-se…

gcc g++安装

2019独角兽企业重金招聘Python工程师标准>>> 安装之前要卸载掉老版本的gcc、g sudo apt-get remove gccgcc-xx #可能有多个版本&#xff0c;都要删掉 sudo apt-get remove g sudo apt-get install gcc 安装g编译器&#xff0c;可以通过命令 sudo apt-get installb…

网络爬虫--24.【selenium实战】实现拉勾网爬虫之--分析接口获取数据

文章目录一. 思路概述二. 分析数据接口三. 详细代码一. 思路概述 1.拉勾网采用Ajax技术&#xff0c;加载网页时会向后端发送Ajax异步请求&#xff0c;因此首先找到数据接口&#xff1b; 2.后端会返回json的数据&#xff0c;分析数据&#xff0c;找到单个招聘对应的positionId…

18条工作感想:不要不情愿地工作

18条工作感想&#xff1a;不要不情愿地工作。人生有两个基点支撑&#xff1a;家庭与工作。对工作不满意&#xff0c;就是毁掉一半的人生。 001 不要不情愿地工作。不情愿&#xff0c;就一定没热情&#xff0c;没激情&#xff0c;没动力&#xff0c;就不会用心……那么&#xf…

bzoj 1999: [Noip2007]Core树网的核【树的直径+单调队列】

我要懒死了&#xff0c;所以依然是lyd的课件截图 注意是min{max(max(d[uk]),dis(u1,ui),dis(uj,un))}&#xff0c;每次都从这三个的max里取min #include<iostream> #include<cstdio> using namespace std; const int N500005; int n,m,h[N],cnt,d[N],s,t,mx,f[N],a…

01-汇编初学

0、前言 对于一个iOS App来说&#xff0c;它其实就是一个安装在手机中的可执行文件&#xff0c;这个可执行文件本质上是二进制文件&#xff0c;它由iPhone手机上的CPU执行。如果我们需要对操作系统、App进行深入了解&#xff0c;以及App的逆向都需要我们熟悉汇编语言 1、汇编语…

jquery.dataTables.min.js:62 Uncaught TypeError: Cannot read property ‘style‘ of undefined原因

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 报错&#xff1a; jquery.dataTables.min.js:62 Uncaught TypeError: Cannot read property style of undefined 原因&#xff1a;data…