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/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 累乘數字 找...