練習備份3

2022-05-06 02:39:08 字數 2224 閱讀 7814

#include#include

#include

#include

#include

#include

using

namespace

std;

const

int inf = 0xfffffff

; const

int maxn = 51

;int

n,m,k;

struct

node

node(

int _x,int _y)

};set

p[26

];node person[

51],post[26

];double d[26

];bool canuse[26

];void

test()

}double dis(int index1,int

index2)

int findminpost(int index) //

找到最近的郵局的編號(可用的郵局)

}

}return

u; }

int main(void

)

for(int i=0;i)

for(int i=0;i)

for(int i=0;i)

}//test

test();

for(int i=0;i//

刪除m-k個郵局

else

if(p[j].size()==min)}}

canuse[u]=false

;

for(set

::iterator it=p[u].begin(); it != p[u].end();it++)

test();

printf(

"\n\n");

}for(int i=0;i)

if(canuse[i]) printf("

%d ",i+1

);

return

0;

}

ac思路(dfs+剪枝):dfs最重要的就是建立搜尋樹,這裡每個點都有兩種狀態,如果直接暴力時間肯定很長,所以需要加上剪枝,我們可以將村子的住戶還有備用郵局看作是兩個集合,就像普利姆的思路一樣,總的思路就是更新最短距離陣列,我們先將所有的點全部連線在第乙個備用郵局,也可以不連第乙個,畢竟每個點有兩種狀態,如果第二個備用郵局到住戶的距離足以更新最短距離陣列,那就更新之後尋找下乙個郵局,如果不足以更新最短距離陣列,我們就直接放棄這個點,顯然他是沒有用的,找到k個郵局之後就判定一下話費,是否更短,如果是,更新序號陣列 

[cpp] view plaincopyprint?#include

#include

#include

using

namespace

std;

int n,m,k,j,c[55][2],y[27][2],d[12],f1,f2,f[55]=;

float yc[27][55],s=1000000000

; int dfs(int t,int i,int o[12],float w[55],float

sum)

} else

if(i<=m&&t}

} else

} if(f1&&f2)

else

dfs(t+1,i+1

,o,ww,sum);

} }

} } int

main()

dfs(

0,1,o,w,0

);

for(i=0;i)

cout

<"

";

return

0;

}

/*

#include#includeusing namespace std;

int main()

; sort(a,a+6);

do

; sort(a,a+6

);

reverse(a,a+6

);

dowhile(prev_permutation(a,a+6

));

return

0;

}

鞏固練習3

1.新建使用者組,shengchan,caiwu,jishu 2.新建使用者要求如下 1 adminsc 的初始組為shengchan 2 admincw的初始組為caiwu 3 adminjs的初始組為jishu 4 tem 是shengchan組的附加使用者 5 harry是caiwu組的附加使...

基礎練習3

問題描述 利用字母可以組成一些美麗的圖形,下面給出了乙個例子 abcdefg babcdef cbabcde dcbabcd edcbabc 這是乙個5行7列的圖形,請找出這個圖形的規律,並輸出乙個n行m列的圖形。輸入格式 輸入一行,包含兩個整數n和m,分別表示你要輸出的圖形的行數的列數。輸出格式 ...

編碼練習3

1 隨機函式random的6個常用知識點 練習 將字串中的boy替換成m 習題1 將字串 k 1 k1 2 k2 3 k3 4 處理成字典 演算法1 1 生成乙個空字典來存結果 2 用split拆開字串,生成乙個列表 3 遍歷這個列表,再用 拆開,分別獲取k和1 4 存到乙個字典裡面 將字典拼回字串...