hdu 6166 隨機概率dijkstra

2021-08-08 03:42:10 字數 1055 閱讀 5377

題意:要你在乙個圖指定點鐘找出兩個距離最短的點

分析:列舉 位數, 使包含當前位數的為乙個集合,不包含的為另乙個集合,跑dijkstra

#include #include #include #include #include #include using namespace std;

#define maxn 100400

#define inf (1<<30)

typedef long long int ll;

typedef pairp;

int t;

int n , m;

bool vis[maxn];

vectore[maxn];

int ans;

int k ;

int kx[maxn];

bool mark[maxn];

int d[maxn];

priority_queue,greater>q;

int dijkstra()

if( c > d[u] )continue;

for(int i = 0 ; i < e[u].size() ; ++i)}}

return 1e9;

}void init()

int main()

cin >> k;

for(int i = 0; i < k ; ++i)scanf("%d",kx+i),vis[kx[i]] = 1;

printf("case #%d: ",++cas);

ans = 1e9;

for(int i = 1 ; i < 20 ; ++i)

}init();

ans = min( ans , dijkstra() );

memset(mark,0,sizeof(mark));

for(int j = 0 ; j < k ; ++j)

}init();

ans = min( ans , dijkstra() );

}cout << ans << endl;

}}

HDU3868 HASH 隨機增量

求點集中兩兩之間距離之和最小的三個點 在使用增量法過程中,我們需要對於新加入的點是否能夠構成新的答案進行高效的判定。假設當前集合的答案為r,對於新加入的點,我們發現如果這個點能夠與原集合中另外兩點構成新的最近的三個點的話,那麼另外的兩個點與這個新加入的點的距離一定不超過r 2,證明如下 假設當前新加...

HDU 3007 隨機增量法

題目大意 給定平面上 n 個點,求最小圓覆蓋 我就是抄了個板而已 q 為什麼是 o n 的 a 搖頭搖頭搖頭 q 三角形外心怎麼求 a 不知道 q 學這個有什麼用 a 一臉懵逼 q 怎麼什麼都不知道 a 窩弱嘛tat 怎麼覺得自己又抽了 三角形外心 我知道泥萌都會。因為到各點距離相等,有 x 1 x...

hdu1204 Markov隨機過程

這是乙個概率題,首先我們必須清楚我們要求的是什麼!設f i 表示speakless有i顆糖果的時候贏的概率,我們要求的就是f n 則根據題意我們知道,這時候 1.speakless贏這一局的概率是p 1 q 即f i 變成f i 1 2.speakless輸這一局的概率是q 1 p 即f i 變成f...