佇列(一本通)

2021-09-29 08:27:13 字數 2815 閱讀 1937

這道題重點是關係的轉換和初始化

#include#include#include#includeusing namespace std;

int a[101];//記錄接著的的那個節點

int n,m;

int main(),,,};

int ans;

void bfs(int x,int y)

} } }

int main()

} cout<

#include#include#include#include#include#includeusing namespace std;

//這道題得思路很難想,從邊緣開始搜尋,標記沒有被1包圍的0使他們和 1 成為同樣的節點,最後列舉剩餘的0即可

int map[20][20];

int queue[101][2];

int dis[4][2]=,,,};

void bfs(int x,int y)

}}int main()//這裡0還是0,1變為了-1

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

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

for(int j=1;j<=10;j++) if(map[i][j]==0) ans++;//這個時候還有的0就是被包圍的,因為從邊緣搜尋得到的0全部都被標記為了-1

cout<

大樓的每一層樓都可以停電梯,而且第i層樓(1≤i≤n)(1≤i≤n) 上有乙個數字ki(0≤=ki≤=n)ki(0≤=ki≤=n) 。電梯只有四個按鈕:開,關,上,下。上下的層數等於當前樓層上的那個數字。當然,如果不能滿足要求,相應的按鈕就會失靈。例如:3 3 1 2 5代表了ki(k1=3,k2=3,……)ki(k1=3,k2=3,……) ,從一樓開始。在一樓,按「上」可以到44 樓,按「下」是不起作用的,因為沒有−2−2 樓。那麼,從aa 樓到bb 樓至少要按幾次按鈕呢?

#include#include#include#include#include#includeusing namespace std;

int pre[10001],aa[10001],vis[10001];

int sum[10001];

//pre表示當前的樓層(佇列),a表示能上公升和下降的數量

//vis表示是否經過(保證最小距離)sum表示所用的次數!!!!(useful)

int n,a,b;

int main()

} }while(head

沒有想到在一本通也有。。。。在洛谷上面做的資料更大一些,必須得換乙個方法不然會爆掉

一本通:

給出乙個整數n(n≤2000)和k個變換規則(k≤15)。

#include#include#include#include#include#include#includeusing namespace std;

int n,k;

int be[16],af[16];

int vis[10001];

queuequ;

int main()}}

mod*=10;

} }cout《洛谷上面:

資料是會超過long long的,所以必須用高精度

#include#include#include#include#include#include#include#include#includeusing namespace std;

//產生數

/*很容易看出這是一道搜尋題

考慮搜尋方案,如果按字串轉移,必須儲存每種狀態,空間複雜度明顯會**

觀察到每一位之間是互不影響的,考慮使用乘法原理

搜尋出每一位的情況總數,求它們的連乘積即為答案!!!!!!注意資料很大

時間複雜度o(n2^k)o(n2k)

可以看出答案最大可以達到三十的十次方,會爆掉longlong longlong,所以需要寫高精

具體處理可以選擇stl(懶得自己寫)

對於對映,這是map的專長

如果乙個數能夠對映到多個數呢?

用map的時候從charchar對映到vectorvector即可

*/map> st;

int c[10],num[111],k;

string a;

//用來判斷數字出現個數的,和記錄結果的

void dfs(char z)

//我根本就沒有考慮到乙個數字可以有多種變換

num[0]=1;

int l=a.length();

//接下來計算每一位的變換次數進行連乘

for(int i=0;i0) i--;

for(;i>=0;i--) cout《家庭問題(並查集的題目)

#include#include#include#include#include#include#includeusing namespace std;

//這個是並查集

//操作:合+並

int father[101];

bool isroot[101];

int sum[101];

int n,k;

int findfather(int x)

while(a!=father[a])

return x;

}void un(int a,int b)

void inti(int n)

}int main()

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

int ans=0,maxn=-1;

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

cout

}

情感修煉一本通

實踐準則 經驗親密關係構成要素 了解 關心 相互依賴性 相互一致性 信任以及承諾 親密的伴侶彼此間有著廣泛而私密的了解。他們熟知彼此的經歷 愛好 情感和心願,而且一般不會把這些資訊透露給其他人。親密的伴侶關心對方,彼此能從對方身上感受到更多的關愛。如果人們認為自己的伴侶了解 理解並欣賞自己,其親密程...

一本通 確定進製

注意一些細節問題就可以了。1 餘數必定小於進製數 2 注意判斷數字範圍 1 p,q,r 1000000 開始以為p q會很大,但是實際 p q 1000000 因為p q r 10000000 所以,本身沒有必要使用高精度,但是如果本題目使用高精度來計算。則需要運用大整數的相關技巧來解決這個問題了。...

分治 一本通1244

分治就是把一組大資料分成小資料管理,如1000可以分成1 500,501 1000分開操作。給出若干個整數,詢問其中是否有一對數的和等於給定的數。第一行是整數n 0 n 100,000 表示有n個整數。第二行是n個整數。整數的範圍是在0 0 0到10 8 108 108之間。第三行是乙個整數m 0 ...