AtCoder Regular Contest #002
まだ終わってない時間から書き出すなど.Dメンドそうなんだもん.
結果3完300点の147位,CでくらいまくったWAペナが痛い.
A
とくになし.書くだけ.
http://arc002.contest.atcoder.jp/submissions/6983
main=readLn>>=putStrLn.isLeap isLeap n | 0 == mod n 400 = "YES" | 0 == mod n 100 = "NO" | 0 == mod n 4 = "YES" | otherwise = "NO"
B
Aのコード持ってきて入力年月日開始日のカレンダー生成してfilterしてhead.
http://arc002.contest.atcoder.jp/submissions/7434
import Text.Printf main=getLine>>=p.head.filter f.cal.map read.words.map rep rep '/'=' ' rep c = c cal [y,12,d] = [(y,12,d')|d'<-[d..days y!!11]] ++ cal [y+1,1,1] cal [y,m,d] = [(y,m,d')|d'<-[d..days y!!(m-1)]] ++ cal [y,m+1,1] p (y,m,d) = printf "%04d/%02d/%02d\n" y m d f (y,m,d) = 0 == mod y (m*d) isLeap n | 0 == mod n 400 = True | 0 == mod n 100 = False | 0 == mod n 4 = True | otherwise = False days y = [31, if isLeap y then 29 else 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
C
ムダにハマった.
L/RのショートカットキーにL/Rも含められるもんだと問題を解釈してしまったのが痛い.いやだってあれそう読めるよね?たとえば含められる条件下だと"AABAAB"は"L=>AA","R=>LB"にショートカットできるなら"RR"の入力でOKだけど,できないなら"LBLB"の入力が必要になる.
WAくらって,何がおかしいのかわからぬままもしやで質問ページ開いたらL/RはL/Rを含まないと書かれていたという.
http://arc002.contest.atcoder.jp/submissions/8590
import Data.List main=getLine>>getLine>>=print.f f x = minimum[length$foldr(#)x lr|lr<-mapM(\_->mapM(\_->"ABXY")[1,2])[1,2]] s#(a:b:x) | s == [a,b] = '_':s#x s#(a:x) = a:s#x s#[] = []
D
読んだけどわからない.たぶん会敵しきるまでの手数と,会敵しきった後に後衛で消費できる手数で決められるんだと思うが.