Posted on 2009-12-26 17:28
rikisand 閱讀(176)
評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi):
Topcoder 、
C/C++ 、
Algorithm
tchs-1 none 1000pt DFS 利用進(jìn)入的方向劃分四個(gè)邊
tchs-2 250pt 直接算就行 我寫(xiě)了2分 500pt 暴力可以過(guò),但是判斷時(shí)候不能用stringstream 用算術(shù)判斷 也可以用構(gòu)造法 1000pt 每一位有三種可能性
不用,保持不動(dòng),變化,分別遞歸計(jì)算value并更新結(jié)果即可,由于遞歸深度最多只有13層所以不會(huì)tle
另外也可以寫(xiě)出基數(shù)為3的循環(huán)來(lái)遍歷每一種情況具體看代碼
for(i=0,A[0]++;A[i]>2;i++){
A[i]=0;A[i+1]++;
}
tchs-3 1000pt 要想使乘積最大,需要更多的3即可 500pt 又看錯(cuò)題了 ~~~ft 要注意題目一定要看清楚
tchs-4 500pt 模擬題,好難懂 音樂(lè)的~ 可以都乘以16 用整數(shù)來(lái)計(jì)算 浮點(diǎn)會(huì)很煩~ 這種題思路要清晰 一步一步來(lái)
tchs-5 250pt 簡(jiǎn)單題,注意使用double 可以用1.0*int就不用double()了還有 int(h+1e-9);
500pt 簡(jiǎn)單題,把所有word提取出來(lái)然后排序,再依次插入標(biāo)點(diǎn)即可,注意有些小技巧
Code Snippet
string wordSort(string s)
{
vector<string> SA,SB;
string A="",B="";
for(int i=0;i<s.size();i++)
if(s[i]>='A'&&s[i]<='Z'||(s[i]<='z'&&s[i]>='a')){
if(B!=""){
SB.push_back(B);B="";
}
A+=s[i];
}
else{
if(A!=""){
SA.push_back(A);A="";
}
B+=s[i];
}
if(A!="")SA.push_back(A);if(B!="")SB.push_back(B);
sort(SA.begin(),SA.end());string res="";
int i=0;
for(; i<SA.size()&&i<SB.size();i++)
if(s[0]>='A'&&s[0]<='Z'||(s[0]<='z'&&s[0]>='a'))
res=res+SA[i]+SB[i];
else
res=res+SB[i]+SA[i];
for(;i<SA.size();i++)res+=SA[i];
for(;i<SB.size();i++)res+=SB[i];
return res;
}
思路要清晰,兩個(gè)輪替記錄即可
1000pt 顯然的BFS 利用隊(duì)列 只是題意不太好理解,最好把判斷寫(xiě)成小函數(shù),主程序會(huì)看起來(lái)比較清晰,不容易出錯(cuò)~ 一步一步來(lái)