1789 Truck History 解題報告

2021-04-23 12:03:17 字數 1199 閱讀 6321

本來以為對最小生成樹的學習告一段落了,昨晚跟波波聊的時候他說prim不一定比kruskal慢,於是我就拿1789來開刀。果然,於是我先用kruskal,ac,1641ms,恩,不錯.再用prim寫,一交,果然timelimitexeeded!!看來波波錯了,但是他是已經ac了的..看看他的時間,只有375ms,不算cin的時間消耗他的程式比我快了足足3倍!!看他的解題報告,原來他用的儲存結構和我的不一樣..換他的那種方法試試,ac,282ms.orz,幸好有他提醒,不然我就用kruskal一輩子了...現在把1789貼出來,等會兒再刷幾道最小生成樹的~

accecpttime:              2008-12-22 10:30:23

language:                    c++

memory:                     15624k

time:                          282ms

errors:                        2 tl

algorithm:                  prim

#include 

#include 

#include 

#include 

using

namespace std;

// 最大值

#define inf 99999999

// 最多的邊數

#define n 2000

// 路徑儲存

int road[n][n];

char type[n][8];

int main()

}//prim最小生成樹

res = 0;

int lesscost[n];

for(i = 0; i < n;i++)

lesscost[i] = road[0][i];

for( i = 1; i < n ;i++) 

res += min;

// 將剛加入集合的節點的所有邊和現有邊做乙個比較,保留小的邊

for(j = 0; j < n;j++)

if(lesscost[j] > road[mink][j])

lesscost[j] = road[mink][j];

}printf("the highest possible quality is 1/%d./n",res);}}

杭電1789 貪心

題目大意 有 t 組資料,每組資料報含乙個n,n個作業的截止日期 和 遲交要扣的分數,問做完這些作業扣的最少分數是多少?1 include 2 include 3 include 4 include 5 include 6 include 7 include 8 include 9 include ...

POJ 1789 解題報告

這道題是求最小生成樹。很久之前是用kruskal演算法求的 之前已經用過這個模板很多次 但是超時了,這裡是稠密圖,對所有邊排序是非常耗時的操作。這裡改用沒有優化的prim演算法 用的是陣列而不是heap,這意味著每次選最近的節點都需要過一遍陣列,o n 但是還是很輕鬆地通過了。thestoryofs...

hdu1789 貪心 回溯

hdu1789 鏈結題目傳送 include include include includeusing namespace std define n 10010 int v n t,sum,n,flag struct node bool cmp node a,node b int main if f...