牛客小白月賽22

2021-10-03 03:47:31 字數 2054 閱讀 5709

d題

題目鏈結

解題思路:直接暴搜,因為只有10個卡片嘛10 所以最多計算 10*10!次,直接列舉全排列算就可以了

#include

#include

using namespace std;

const int inf=0x3f3f3f3f;

int x[22],y[22],c[22]

;int main()do

num=min(num,ans)

;}while(next_permutation(c,c+k))

; cout<<

"the shortest path has length "

; cout<}return 0;

}

這裡的曼哈頓距離是指:

設平面空間內存在兩點,它們的座標為(x1,y1),(x2,y2)

則dis=|x1−x2|+|y1−y2|

即兩點橫縱座標差之和

j題

題目鏈結

本來簡單的乙個題 ,一直沒法把乙個字串賦值給另乙個。。。明明和別人差不多的 ,我搞出來的就是空的

最後用了乙個函式:

substr(start, length) 即返回乙個從指定位置開始,並具有指定長度的子字串。

注意:如果 start 引數是負數且 length 小於或等於 start,則 length 為 0。

#include

#include

using namespace std;

string add(string str1,string str2)

else

len1=str1.length();

int cf=0,temp;

for(int i=len1-1;i>=0;i--)

if(cf!=0)

str=char(cf+'0'

)+str;

return str;

}int main()}

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

//cout

)-1||ans!=

(s.size(

)-1)

||num!=1)

a=s.substr(0,x)

; b=s.substr(x+1,s.size());

//cout

}

a題

題目鏈結

乍一看 線段樹 不會 就沒再看了 。。結果用map就可以解決

關於stl

我自己沒有注意的地方:

map一開始是空的 並不是全為0 等於0也不算是空的

mp.begin()->second 是指首元素的key值

#include

#include

using namespace std;

int main()}

if(flag)

continue;}

if(t==-1)

}else

}return 0;

}

c題

題目鏈結

#include

using namespace std;

char s[55]

;int ans=12;

void f(

) if(s[i-2]

=='o'

&&s[i-1]

=='o'

&&s[i]

=='-')}

int num=0;

for(int i=0;i<12;i++)

if(s[i]

=='o'

) num++;

ans=min(num,ans);}

int main(

)return 0;

}

牛客小白月賽22

我們知道將乙個大於1的數乘以另乙個大於1的數會使乘積大於任意乙個乘數。現在給出兩個數字 n,d,你能否計算將n乘以d次100的結果。多組輸入 每組輸入在一行中給出 n,d,1 n,d 100。每組輸入輸出一行代表答案。5 1 11 1 85 2 500 1100 850000 author 一屆書生...

牛客小白月賽22題解

a 操作序列 單點增加,區間求和,下標最小的非零數變成零,單點查詢。說完了不就線段樹嘛。由於範圍比較大,先存下來,離散化,再進行樹上的操作。注意這裡的左右區間離散化值不一樣的,左邊離散化要找到大於等於左邊界的值,右邊離散化要找到小於等於右邊界的值。b 樹上子鏈 類似於 dp 求樹直徑 c 交換遊戲 ...

牛客小白月賽22 題解

題解鏈結 題目知識點 題目難度 a 操作序列 stl,map,set,模擬 普及 提高 b 樹上子鏈 樹形dp,樹的直徑 普及 提高 c 交換遊戲 記憶化搜尋,狀態壓縮 普及 提高 d 收集紙片 全排列,dfs,狀壓dp,tsp問題 普及 提高 e 方塊塗色 簡單數論,容斥原理 入門f 累乘數字 找...