/*此篇適合給有一點水平的孩子,不適合純新手*/
ACM呢,是一個非常適合人們鍛鍊程式技巧的地方
從簡單到難的題目這裡都有
簡單的可以很簡單 程式碼不用寫十行
難的就可以很難 難到你想數個月都想不出來

寫程式的訓練,除了程式技巧
最重要的就是思考
初階的題目思考和程式技巧的比例大致相等
到後來思考會加重
思考加重的時候,穩定的程式技巧就很重要
所以兩者是相輔相成
你多寫,就會多進步
我在升高二暑假沒有朝深入演算法發展
但是做到了解決了被 一個叫做Lucky貓的ACM園地的網站http://luckycat.kshs.kh.edu.tw/
歸類成一星的中譯題目全部OVER掉
這一年來也是斷斷續續練一些沒有太複雜技巧的題目
這個暑假開始學難的東西
上手和撰寫便很快地可以接軌
一個星期多來已經寫了過去一年的分量XD

好 廢話不多說
入手的話
首先就來推薦簡單的題目

Lucky貓網站就請大家自行研究
在這裡就開列推薦的入手題清單

先開列Lucky貓一星題清單
----------------------------------------
題目編號    題目名稱
100     The 3n+1 problem 
  最多人拿來當示範的題目 需要一定的基礎
  可以用這題來重新審視自己對寫程式概念的清楚與否

272     TeX Quotes
  可訓練字串讀入讀出技巧 這裡的技巧是逐字讀入後處理 馬上讀出

458     The Decoder
  需要對於ASCII碼的了解 需要看ASCII碼可以去http://www.asciitable.com/
476     Points in Figures: Rectangles
  數學題目 請善用座標判斷
477     Points in Figures: Rectangles and Circles
  接續上題 並且增加圓的部份 請善用距離公式
//478也是接續 但是更困難 可以想想怎麼做XD
488     Triangle Wave
  有很多種作法的題目 可以直觀輸出就好 以後有機會多練一點會發現這題可以用的方法 會影響程式執行效率很多XD
  有許多PE問題 要注意
494     Kindergarten Counting Game
  善用ASCII判斷 注意不一定是用空白分隔
579     Clock Hands
  //我當年的第一題>/////<
  角度計算 屬於數學 有>180的情況要處理
591     Box of Bricks
  嗯 也是數學 不難想的題目 觀察兩圖形 自己想一下XD
913     Joana and the Odd Numbers
  請愛用等差級數公式Sn=2a1+(n-1)*d
10018     Reverse and Add
  作法可用字串處理 亦可用數字處理
  看個人啦 這題用陣列是比較好的
10035     Primary Arithmetic
  數學 應該不難 自己模擬一下做加法的過程
  我手寫我口~
10038     Jolly Jumpers
  要處理的題目 請善用abs()~
10055     Hashmat the brave warrior
  這個題目相當單純。
  陷阱就在於 他的數很大
  請使用long long變數型態 格式為%lld
  另外如果要在DEVC作測試 請用%I64d
  傳出去時要改回來!
10062     Tell me the frequencies!
  一樣是ASCII 請開陣列處理
10071     Back to High School Physics
  物理公式 自己導一下 最後的答案會簡單的很可愛ˇ
10082     WERTYU
  可用switch() 直接暴力吧!
10107     What is the Median?
  //本題使用插入排序法為最佳 如果不瞭解者請跳過 或另想解決方式
10141     Request for Proposal
  字元字串處理 有些麻煩的 善用函式
10209     Is This Integration ?
  數學題 有學過三角應該知道
  另外pi=2.0*acos(0.0)
  可以用define操作 (#define pi 2.0*acos(0.0))
10222     Decode the Mad man
  同10082 暴力吧!
10300     Ecological Premium
  數學 就照著文字敘述去計算 要有點耐心看完
10340     All in All
  一樣是字串處理 可採用字元比對 計算長度
{
      今天經過學妹的測試  發現了一些要注意的地方
   第一點strlen()是跑很慢的函式
  如果要使用在迴圈 請用變數儲存後再使用 以免TLE
   另外break;指令跳出迴圈時
   i++,j++這一類寫在for最後面的指令並不會被執行
  要記得這樣XD
}
10370     Above Average
  數學again 簡單的算平均 應該沒問題
10473     Simple Base Conversion
  進位轉換 不懂的網路google一下
10499     The Land of Justice
  1是例外,其他直接推規律吧=w=/ 不過%要用printf("%%")才輸的出去
10550     Combination Lock
  我手寫我口 就照著做吧 注意一些角度上的問題就是了
10589     Area
  和10209很像的圖XD
  不過要輸出的面積是用估計的 請自行閱讀題目~
10673     Play with Floor and Ceil
  floor()和ceil()是include在math.h的兩個函數
  前者是傳回小於引數的最大整數 後者是傳回大於引數的最小整數     (20090202註記:之前寫錯了!!!)
  剩下的請自行處理~
10696     f91
  會寫遞迴吧?就寫成函式 秒殺~
10783     Odd Sum
  暴力法,謝謝。
10789     Prime Frequency
  字元處理 請用ASCII 並且判斷質數 應該不難
10812     Beat the Spread!
  很簡單的數學題 要注意他的判斷和輸出
10878     Decode the tape
  有點難度的字串處理XD
  上面標示的空白是0 圈圈是1
  二進位數字的處理~
-----
BY 雄中 Eric學長當年跟我講的
對每一行來說, 只需要寫成這樣

  d=0;
  for(i=1;i<10;i++){
    if(i==6)    //中間隔著的 '.'
      continue;
    d<<=1;     //把 d 左移一格
    if(s[i]=='o')  //如果這一格是圈圈
      d|=1;    //把 d 的最右邊一格寫成 1
  }
  printf("%c",d);
-----
<<=是二進位處理
就是像i=3(00000011)
用i<<=2後
i就會變成12(=00001100)

|=則是位元OR指定運算子
d|=1就是將d和右邊的值做or運算
然後將那個值放回d
-----

10903     Rock-Paper-Scissors
  國中機率問題~沒什麼好說的
10924     Prime Words
  ASCII+質數問題 如果有用到i<=sqrt()記得#include<math.h>
10929     You can say 11
  簡單的數學問題~不過注意它會耍詐用0011之類的
  請到迴圈中判斷字串的第一個字和第二個字如果為...(自己想吧XD)
  就跳出
10963     The Swallowing Ground
  請不要想太多 比對距離 如果皆相同 就對 不同 就不行
  別想太多 真的
11059     Maximum Product
  我用了long long 就乾脆地迴圈暴力乘吧!
11172     Relational Operators
  簡單的關係式 請愛用if
11185     Ternary
  一樣是換進位問題 應該很容易 請自尋google方法

----------------------------------------------------
其實這些就很夠寫了XD
下一次再往外擴張 來貼一些其他地方容易上手的題目
或是稍有難度的題目
好啦 各位加油XD

arrow
arrow
    全站熱搜

    aikosenoo 發表在 痞客邦 留言(13) 人氣()