【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.pswp.cn/news/451957.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/451957.shtml
英文地址,請注明出處:http://en.pswp.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…