ABC098(バーチャル):水色競プロerの復習
一昨日のABC100、昨日のABC099に続き、今日はABC098でバーチャルコンテストしました。
コンテストの時期的に、これもリアルタイムで参加したはずです。
〇コンテスト名:ABC098
〇配点:不明
〇制限時間100分(A~Dまでの4問の時代のコンテスト)
〇今回の方針
本番のコンテストのつもりで解く
とにかく速く解く
コンテスト開始!
A - Add Sub Mul
何も考えず、A+B,A-B,A*Bの最大値を出せば良いですね。
A,B=map(int,input().split()) print(max(A+B,A-B,A*B))
1:00 AC
B - Cut and Count
英小文字からなる文字列が与えられる。どこかで切って、前半にも後半にもある文字の種類数の最大値を出力せよ。
文字で説明は難しいですね。
リストの中に0が26個並んだリストを用意して、aが出たら最後のリストの0番目を+1して加える、cが出たら2番目を+1して加える・・
やっぱりコードを見ていただく方が良さそうです。
N=int(input()) S=list(input()) import copy A=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"] L=[[0 for i in range(26)]] for i in range(N): l=copy.deepcopy(L[-1]) for j in range(26): if S[i]==A[j]: l[j]+=1 L.append(l) ans=0 for i in range(N): cnt=0 for j in range(26): if L[i][j]>0 and L[-1][j]-L[i][j]>0: cnt+=1 if ans<cnt: ans=cnt print(ans)
9:13 AC これB問題とは思えない難易度なんですが。想定解ではなかったのでしょうか?
C - Attention
人が1列に並んでいる。人は東もしくは西を向いている。リーダーを適切に選んだ時、全員をリーダーの方に向かせ(リーダーはどちらを向いていても良い)るのに向きを変える最小の人数を求めよ。
西から順に西を向いている人数の累積和を求める。
同様に東から順に東を向いている人数の累積和を求める。
リーダーの位置を全探索。
で求められますね。
これBより簡単なのでは?
N=int(input()) S=list(input()) RS=S[::-1] W=[0] E=[0] for i in range(N): if S[i]=="W": W.append(W[-1]+1) else: W.append(W[-1]) W.append(0) for i in range(N): if RS[i]=="E": E.append(E[-1]+1) else: E.append(E[-1]) E.append(0) E=E[::-1] #print(W) #print(E) ans=10**9 for i in range(1,N+1): if W[i-1]+E[i+1]<ans: ans=W[i-1]+E[i+1] print(ans)
はいフラグ回収!
22行目のN+1が最初Nになっていて1WA
WAの原因を探るためにプリントデバッグして、そのまま19,20行目のコメントアウトを忘れてもう1WA
23:28 2WA
D - Xor Sum 2
連続する区間の合計=区間の全てのXORとなる範囲の数を求めよ。
合計を持って置き、先頭の先を足したもの=先頭の先のXORであれば先頭を伸ばし、合計も増やす。そうでなければ、それまでの先頭と終わりの差を答えに足す。を繰り返す。
これも文章では難しいですが、やっていることは難しくないです。
N=int(input()) A=[0]+list(map(int,input().split()))+[0] x=[0] for i in range(1,2*(10**5+3)): x.append(x[-1]+i) S=0 E=0 SUM=0 ans=0 for i in range(10**6): if S==N+1: ans+=x[(S-E-1)] break if SUM+A[S+1]==SUM^A[S+1]: SUM+=A[S+1] S+=1 else: ans+=(S-E) SUM-=A[E+1] E+=1 #print(ans,S,E,SUM) print(ans)
68:02 AC
難しいことをしていないのにバグがとれず、時間がかかってしまいました。
実装力の無さを実感しています。
結局68:02 全完(4完) 2WA
過去のABCによる精進は水色下位には有効そうですね。