Atcoder Beginner Contest #010
ABC過去問解きその5。Cまでは易しい問題セット。けどD問題は最小カットを使うフロー問題。そんなの解けません。問題はこちら。
A:
与えられた文字列の後ろに"pp"を加えて出力する問題。
print raw_input()+"pp"
B:
n 輪の花のそれぞれの花びらの枚数が与えられる。花占いをしていきたいのが、占い方には「好き➞嫌い➞好き」と「好き➞嫌い➞大好き」の2つのパターンがある。どちらのパターンでも嫌いが出ないように、はじめに花びらを何枚かちぎって調節したい。ちぎるべき花びらの合計枚数の最小値を答える問題。
2で割ったあまりと3で割った余りで条件を満たすかどうかを判断できるので、条件に合うまで花びらを一枚ずつちぎっていけばいい。
n = int(raw_input()) a = map(int,raw_input().split()) ans = 0 for i in a: while i%2 == 0 or i%3 == 2: i -= 1 ans += 1 print ans
C:
スタート地点 (xa,ya)とゴール地点 (xb,yb)、さらにスタートからゴールまでの移動にかけられる時間 T と移動速度 V が与えられる。N 個の 点(x,y) が与えられるので、1つでもその点を経由して T 時間以内にゴールに到達できるものがあれば "YES" と答え、なければ "NO" と答える問題。
やるだけなのだが、距離を求めるのに√を使っているので、誤差に気をつけないといけない。幸い、今回の条件ではそういったきわどいケースは存在しないので気にしなくても済んだ。
def S(x1,y1,x2,y2): return ((x2-x1)**2 + (y2-y1)**2)**0.5 xa,ya,xb,yb,T,V = map(int,raw_input().split()) n = int(raw_input()) for roop in range(n): x,y = map(int,raw_input().split()) if S(xa,ya,x,y)+S(x,y,xb,yb) <= T*V: print "YES" break else: print "NO"
D:
解法がいまだ理解できていない