日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

题解P1613跑路

發(fā)布時(shí)間:2025/3/11 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 题解P1613跑路 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
今天沒(méi)什么好說(shuō)的那我就賣(mài)個(gè)萌吧(~ ̄▽ ̄)~

Luogu

一道思維題可能僅是對(duì)我來(lái)說(shuō),對(duì)于大佬們都是顯然的


簡(jiǎn)化題意

給你一個(gè)圖,找到一個(gè)路徑,使其路徑的二進(jìn)制位中\(1\)的個(gè)數(shù)最少

分析

這題的題目就有兩個(gè)坑點(diǎn)或許僅是對(duì)我而言

  • 每次走的時(shí)候,只有在端點(diǎn)才可以停下,即如果有一條路從\(i\)\(j\),如果其路徑長(zhǎng)為7,則不可以從\(i\)直接走到\(j\),你要走\(3\)次。

  • 由于\(1.\)所以直接跑最短路不一定是最優(yōu)。

  • 然后想解法

    首先,由于~~標(biāo)簽/路徑太長(zhǎng)了/牛*的~~機(jī)器特殊的跑路方式,所以我們想到了用倍增來(lái)解決這個(gè)問(wèn)題

    然后考慮這題最后還是要求最短路。我們又看到了數(shù)據(jù)范圍\(n<=50\),所以就想到弗洛伊德,求最短路。但由于上面的結(jié)論,我們不可以直接跑最短路,故而我們需要對(duì)這個(gè)圖的做一個(gè)轉(zhuǎn)化。這道題很難對(duì)圖的點(diǎn)做出轉(zhuǎn)化,所以我們選擇對(duì)邊/路徑做出轉(zhuǎn)化。

    然后就考慮對(duì)路徑的轉(zhuǎn)化。考慮之前不能直接跑最短路的原因:我們無(wú)法在較短的時(shí)間里直接確定怎樣的路徑中二進(jìn)制位的\(1\)的個(gè)數(shù)更少,所以當(dāng)我們把路徑的貢獻(xiàn)轉(zhuǎn)化為它在二進(jìn)制中\(1\)的個(gè)數(shù)你就可以算的最短路。

    所以先預(yù)處理出從\(i\)\(j\)的最短路徑中\(1\)的個(gè)數(shù),然后再求一邊最短路就好的。

    對(duì)于求\(i\)\(j\)的最短路徑中\(1\)的個(gè)數(shù),由于\(i\)\(j\)的路徑有一種性質(zhì)我哦不知道具體的名字:\(i\)\(t\)中個(gè)數(shù)為\(k\),\(t\)\(j\)中個(gè)數(shù)為\(k\),那么\(i\)\(j\)中的\(1\)的個(gè)數(shù)就是\(k+1\)。故,我們可以用類(lèi)似于傳遞閉包的方式來(lái)求的每?jī)蓚€(gè)點(diǎn)之間的最短路中的二進(jìn)制位的\(1\)的個(gè)數(shù)


    code

    #include<iostream> #include<cstring> using namespace std; int n,m,x,y,dis[55][55]; bool map[55][55][65]; inline void pre(){for(register int t=0;t<=64;t++)for(register int k=1;k<=n;k++)for(register int i=1;i<=n;i++)for(register int j=1;j<=n;j++)if(map[i][k][t-1]&&map[k][j][t-1])map[i][j][t]=1,dis[i][j]=1; } inline void floyed(){for(register int k=1;k<=n;k++)for(register int i=1;i<=n;i++)for(register int j=1;j<=n;j++)dis[i][j]=min(dis[i][k]+dis[k][j],dis[i][j]); } int main(){scanf("%d%d",&n,&m);memset(dis,0x3f,sizeof(dis));for(register int i=1;i<=m;i++)scanf("%d%d",&x,&y),dis[x][y]=1,map[x][y][0]=1;pre();floyed();printf("%d",dis[1][n]); }

    最后國(guó)際慣例,thankyou for your attention

    轉(zhuǎn)載于:https://www.cnblogs.com/fallen-down/p/11589151.html

    總結(jié)

    以上是生活随笔為你收集整理的题解P1613跑路的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。