一開始太激動了。。。還以為是Div2 的250呢。直接暴力就交了。。。
想想不對。。用1e17測了下,果然超時。。太腦殘了今天。。
最后重提交了。。。cha對一個,cha錯一個,得了個140+,排350多名。。淚奔啊。。
歸根結底還是自己水平不行,繼續(xù)努力吧。
貼一下最終的代碼,還好過了system test,還有一點點安慰。。。
???class?UnrepeatingNumbers
??????????????{
??????????????public:
??????????????long?long?getNext(long?long?A)
??????????????????{
????????????????????return?_get(A+1);
??????????????????}
??????????????????/*_get()函數(shù)用于獲得>=A的第一個非重復數(shù)。
????????????????? 如果A是一個非重復數(shù),直接返回。否則A必然為?xxaaXXXX形式。
????????????????????其中XXXX為非重復的。也就是說我們找第一個重復數(shù)字。那
???????????????????? 么下一個非重復數(shù),必然大于(xxaa+1)0000。
??????????????????? 這樣就跟暴力比就大大減小了計算次數(shù)。。
????????????????? */
??????????????????long?long?_get(long?long?A){
????????????????????long?long?t?=?1;
????????????????????long?long?res?=?A;
????????????????????int?last?=?A%10;
????????????????????A/=10;
????????????????????while(?A){
???????????????????????????if(?A%10==last){
?????????????????????????????return?_get((A*10+last+1)*t);
???????????????????????????}else{
?????????????????????????????????last?=?A%10;
?????????????????????????????????A/=10;
?????????????????????????????????t*=10;
???????????????????????????}
????????????????????}
????????????????????return?res;
??????????????????}
}
附題:
如果一個數(shù)字十進制表達時,不存在連續(xù)兩位相同,則稱之為“不重復數(shù)”。例如,105、1234和12121都是“不重復數(shù)”,而11、100和
1225不是。
給定一個long類型數(shù)字A,返回大于A的最小“不重復數(shù)”。
DEFINITION
Class:UnrepeatingNumbers
Method:getNext
Parameters:long
Returns:long
Method signature:long getNext(long A)
CONSTRAINTS
-A 取值范圍是[0, 1017],注意是閉區(qū)間。
EXAMPLES
0)
54
Returns: 56
大于54的最小數(shù)字是55,但55不是“不重復數(shù)”。下一個數(shù)字是56,它滿足條件。
1)
10
Returns: 12
2)
9
Returns: 10
3)
98
Returns: 101
99和100都不是“不重復數(shù)”,但101是。
4)
21099
Returns: 21201
雖然沒什么名次,但還是應該吸取一些教訓吧。
這次的問題主要在于:
1.水平問題 對題目限制條件不敏感,暴力不能解決問題,至少不能解決絕大部分問題。平時做題,對1000分的題基本上不看,對難題沒信心
2.心態(tài)問題 作為一個混跡TopCoder這么長時間的還是一個綠色的資深loser來說,在一堆紅黃藍面前,開始就沒打算能進top 200。不夠足夠認真,謹慎,開始就沒有太強的比賽意識
教訓有:
平時做題要和平時比賽一樣,要緊張高效,不能慢慢吞吞的,加強Div2前兩題的正確性和編碼速度。嘗試學習理解牛人代碼,嘗試解1000分題.寫代碼要爭取一次編譯通過,少在細節(jié)問題上犯錯誤。
比賽要全力以赴,至于結果如何并不全由自己能把握,不留遺憾,發(fā)揮出自己水平就可以了。
今年大的比賽可能都已經結束了,縱觀騰訊tic,百度之星,有道難題,都只過了初賽。這一方面,說明我的算法水平縱向地比,比以前有了很大提高,但是橫向比較的話,還是處在一個比較低的水平。畢業(yè)以后可能提高算法水平的機會不太多了,爭取在畢業(yè)前多做一些題,多學一些。此外,不能只顧著做題的量,不能閉門造車,要多學習牛人的代碼開闊思路。