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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

洛谷1550 打井

發布時間:2024/3/26 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷1550 打井 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

洛谷1550 打井
找一個數組來存以x為根的樹的最小值,所有邊按從小到大排序,
如果e[i].v<=Min[t1]||....(見代碼

1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 #include<algorithm> 5 #include<cmath> 6 #include<ctime> 7 #include<set> 8 #include<map> 9 #include<stack> 10 #include<cstring> 11 #define inf 2147483647 12 #define ls rt<<1 13 #define rs rt<<1|1 14 #define lson ls,nl,mid,l,r 15 #define rson rs,mid+1,nr,l,r 16 #define N 100010 17 #define For(i,a,b) for(int i=a;i<=b;i++) 18 #define p(a) putchar(a) 19 #define g() getchar() 20 21 using namespace std; 22 23 int n,x,cnt,num; 24 int a[310]; 25 int b[310][310]; 26 int d[310],Min[310]; 27 int ans; 28 29 struct kru{ 30 int l; 31 int r; 32 int v; 33 bool operator < (const kru &temp)const{ 34 return v<temp.v; 35 } 36 }e[90010]; 37 38 void in(int &x){ 39 int y=1; 40 char c=g();x=0; 41 while(c<'0'||c>'9'){ 42 if(c=='-')y=-1; 43 c=g(); 44 } 45 while(c<='9'&&c>='0'){ 46 x=(x<<1)+(x<<3)+c-'0';c=g(); 47 } 48 x*=y; 49 } 50 void o(int x){ 51 if(x<0){ 52 p('-'); 53 x=-x; 54 } 55 if(x>9)o(x/10); 56 p(x%10+'0'); 57 } 58 59 int find(int x){ 60 if(d[x]==x)return x; 61 return d[x]=find(d[x]); 62 } 63 64 int main(){ 65 in(n); 66 For(i,1,n){ 67 d[i]=i; 68 in(a[i]); 69 Min[i]=a[i]; 70 } 71 For(i,1,n) 72 For(j,1,n){ 73 in(x); 74 if(i<j){ 75 e[++cnt].l=i; 76 e[cnt].r=j; 77 e[cnt].v=x; 78 } 79 } 80 sort(e+1,e+cnt+1); 81 For(i,1,cnt){ 82 int t1=find(e[i].l); 83 int t2=find(e[i].r); 84 if(t1!=t2&&e[i].v<=max(Min[t1],Min[t2])){ 85 if(e[i].v<=Min[t1]&&e[i].v>=Min[t2]){ 86 Min[t1]=Min[t2]; 87 ans+=e[i].v; 88 d[t1]=t2; 89 } 90 else 91 if(e[i].v>=Min[t1]&&e[i].v<=Min[t2]){ 92 Min[t2]=Min[t1]; 93 ans+=e[i].v; 94 d[t2]=t1; 95 } 96 else 97 if(e[i].v<min(Min[t1],Min[t2])){ 98 if(Min[t1]>=Min[t2]){ 99 Min[t1]=Min[t2]; 100 ans+=e[i].v; 101 d[t1]=t2; 102 } 103 else{ 104 Min[t2]=Min[t1]; 105 ans+=e[i].v; 106 d[t2]=t1; 107 } 108 } 109 num++; 110 } 111 if(num==n-1)break; 112 } 113 For(i,1,n) 114 if(d[i]==i) 115 ans+=a[i]; 116 o(ans); 117 return 0; 118 } View Code

?

轉載于:https://www.cnblogs.com/war1111/p/10324907.html

總結

以上是生活随笔為你收集整理的洛谷1550 打井的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。