生活随笔
收集整理的這篇文章主要介紹了
2018.08.09洛谷P3959 宝藏(随机化贪心)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
傳送門
回想起了自己賽場上亂搜的20分。
好吧現(xiàn)在也就是寫了一個隨機(jī)化貪心就水過去了,不得不說隨機(jī)化貪心大法好。
代碼:
using namespace std;
inline
int read(){
int ans=
0;char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<
3)+(ans<<
1)+(ch^
48),ch=getchar();
return ans;
}
int up,cost[
20][
20],n,
m,dep[
20],p[
20],ans,sum;
int main(){n=
read(),
m=
read(),up=
1<<n;memset(cost,
0x3f,sizeof(cost));ans=
0x3f3f3f3f;
for(
int i=
1;i<=n;++i)cost[i][i]=
0,p[i]=i;
for(
int i=
1;i<=
m;++i){
int u=
read(),v=
read(),w=
read();cost[u][v]=cost[v][u]=min(cost[u][v],w);}
for(
int tim=
1;tim<=
80000;++tim){random_shuffle(p+
1,p+n+
1);sum=
0;
for(
int i=
1;i<=n;++i)dep[i]=
0;dep[p[
1]]=
1;bool f=true;
for(
int i=
2;i<=n;++i){
int pos=p[i],stp=
0x3f3f3f3f;
for(
int j=
1;j<=n;++j)
if(j!=
pos&&dep[j]&&cost[
pos][j]!=
0x3f3f3f3f)
if(dep[j]
*cost[
pos][j]<stp)stp=dep[j]
*cost[
pos][j],dep[
pos]=dep[j]+
1;
if(stp==
0x3f3f3f3f){f=false;
break;}sum+=stp;}
if(f)ans=min(ans,sum);}cout<<ans;
return 0;
}
轉(zhuǎn)載于:https://www.cnblogs.com/ldxcaicai/p/9738390.html
總結(jié)
以上是生活随笔為你收集整理的2018.08.09洛谷P3959 宝藏(随机化贪心)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。