日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

51nod 1693 水群 (spfa)

發(fā)布時間:2023/12/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 51nod 1693 水群 (spfa) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Description

總所周知,水群是一件很浪費時間的事,但是其實在水群這件事中,也可以找到一些有意思的東西。

比如現(xiàn)在,bx2k就在研究怎樣水表情的問題。

首先,bx2k在對話框中輸入了一個表情��,接下來,他可以進(jìn)行三種操作。

第一種,是全選復(fù)制,把所有表情全選然后復(fù)制到剪貼板中。

第二種,是粘貼,把剪貼板中的表情粘貼到對話框中。

第三種,是退格,把對話框中的最后一個表情刪去。

假設(shè)當(dāng)前對話框中的表情數(shù)是num0,剪貼板中的表情數(shù)是num1,那么第一種操作就是num1=num0

第二種操作就是num0+=num1

第三種操作就是num0–

現(xiàn)在bx2k想知道,如果要得到n(1<=n<=10^6)個表情,最少需要幾次操作。

請你設(shè)計一個程序幫助bx2k水群吧。

?

Input

一個整數(shù)n表示需要得到的表情數(shù)

?

Output

一個整數(shù)ans表示最少需要的操作數(shù)

?

Input示例

233

?

Output示例

17

?

思路

我們每一次獨立的操作無疑就是 復(fù)制 1 次 + 粘貼 x 次 + 退格 y 次 ,因為連續(xù)復(fù)制兩次顯然無意義,并且退格在粘貼之前與之后都是同樣的效果。

于是題目相當(dāng)于:當(dāng)前有一個數(shù) x ,操作 1x=x×k ,代價為 k ;操作 2x=x?1 ,代價為 1 ,求從 1n 的最小代價。

顯然我們可以建圖求最短路即為最終的結(jié)果,但是 x=x×k 所生成的邊數(shù)太多,經(jīng)過思考我們可以將 k 質(zhì)因子分解,最終變?yōu)?x=x×[2,3,5,7...] ,這樣便消除了其中的冗余邊。

經(jīng)過測試取前 5<script type="math/tex" id="MathJax-Element-13">5</script> 個質(zhì)數(shù)就可以保證答案~

?

AC 代碼

#include<bits/stdc++.h> using namespace std; const int N = 1e6+10; #define inf 0x7f7f7f7fint prime[]= {2,3,5,7,11};bool vis[N]; int dist[N]; int n,maxn;int spfa(int s,int e) {queue<int> sk;maxn = n+10;for(int i=0; i<maxn; i++){dist[i] = inf;vis[i] = false;}dist[s] = 0;vis[s] = true;sk.push(s);while(!sk.empty()){int u = sk.front();sk.pop();vis[u] = false;if(u-1>0&&dist[u-1]>dist[u]+1){dist[u-1] = dist[u] + 1;if(!vis[u-1]){vis[u-1] = true;sk.push(u-1);}}for(int i=0; i<5&&prime[i]*u<maxn; i++){int to = prime[i]*u;int cost = prime[i];if(dist[to]>dist[u]+cost){dist[to] = dist[u]+cost;if(!vis[to]){vis[to]=true;sk.push(to);}}}}return dist[e]; }int main() {scanf("%d",&n);printf("%d\n",spfa(1,n));return 0; }

總結(jié)

以上是生活随笔為你收集整理的51nod 1693 水群 (spfa)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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