AtCoder Beginner Contest 175
はい。
https://atcoder.jp/contests/abc175
ooo--- 879(+39) C問題まで。D以降が難関でCまで早解きな感じだとパフォはおいしいです。
A - Rainy Season
PyPy3
s=input() ans=chk=0 for i in s: if i=="R": chk+=1 else: chk=0 ans=max(ans,chk) print(ans)
大したパターン数ではないですけども先頭から数えればいいでしょうということでそうしました。
B - Making Triangle
PyPy3
n=int(input()) l=[int(i) for i in input().split()] ans=0 if n<3: print(0) exit() for i in range(n-2): for j in range(i+1,n-1): for k in range(j+1,n): chk=[l[i],l[j],l[k]] chk.sort() if chk[0]+chk[1]>chk[2] and chk[0]!=chk[1] and chk[1]!=chk[2]: ans+=1 print(ans)
全組み合わせを試すしかないと思う。事前にソートしておけばちょっと楽だったらしい。
C - Walking Takahashi
PyPy3
x,k,d=map(int,input().split()) x=abs(x) ans=0 if x>k*d: print(x-k*d) else: a=x//d p=x-d*a q=abs(x-d*a-d) print(q if (k-a)%2 else p)
#include<bits/stdc++.h> using namespace std; int main(){ long long x,k,d; scanf("%lld %lld %lld",&x,&k,&d); x=abs(x); if (x/d>k) { printf("%lld\n",x%d+d*(x/d-k)); } else { printf("%lld\n",(k-x/d)%2==0?x%d:abs(x%d-d)); } return 0; }
近づけるだけ近づく。移動回数余ったら原点0を跨いで行ったり来たり。Xはabsして正の値としてだけ考えるようにしたほうが都合がいいのでそれはそう。
言語によってはオーバーフローとか気にする必要があったらしい。X÷DとKを比較して原点0超える超えない見たほうが慎重確実だったのかな。次回は制約気にするようにします。
C++で試してみたらやはりオーバーフロー対策必要だったっぽい。面倒でした。もっとシンプルにスムーズに書けるように練習を。。。
D - Moving Piece
あとで