読者です 読者をやめる 読者になる 読者になる

Codeforces Round #376 (Div.2) 参加記

はい。 oox--x 1209(+27)
http://codeforces.com/contest/731
Aは図とサンプル、Noteで余裕。Bは問題解読でかなり苦戦。Cも解読で苦戦、直前に解読できたけどAC出来る内容じゃなかった。Fも解読出来たしサンプルなんとかなったので出したけども当然にWA。

A. Night at the Museum

ざっくりと大意

・a-zがリング状になっているのを頭出し?する移動距離がいくつか。

Python2

s=0
ans=chk=0
n=raw_input()
for i in n:
    tmp=ord(i)-97
    tmp2=abs(s-tmp)
    if tmp2>13:
        tmp2=abs(26-tmp2)
    ans+=tmp2
    s=tmp
print ans

13離れるのが右回り、左回りの分岐になると思う。相対で距離を見てるのでスタートを97にすれば1文字ずつord()-97する必要はなかったかもしれない(未検証)。

B. Coupons and Discounts

ざっくりと大意

・長さnの数列a、n回の練習会で各回の参加者が\(a_i\)である。
・参加者たちにピザを提供するのにかならずクーポンでお得になるように買いたい。
・クーポン条件はtwo pizzasを1日で購入か、one pizzaを2日続けて購入が条件。
・サンプル1で言うと1日目から (1) (1,2) (1) (1,2)のようにピザが購入されている。1,2日目の1番のピザで2日連続購入クーポン、2日目の2番と3日目1番で2日連続購入クーポン、4日目は1,2番のピザ2枚を1日で購入クーポンでYESになる。

Python2

n=int(raw_input())
l=map(int,raw_input().split())
ans=chk=0
for i in range(n):
    l[i]=l[i]%2
    if i<n-1 and l[i+1]>0 and l[i]>0:
        l[i+1]-=1
        l[i]-=1
print 'YES' if sum(l)==0 else 'NO'

1日で2枚か、2日連続で1枚をシミュレートした。

C. Socks

ざっくりと大意

・靴下はn本(ペア1足ではなく1本)あり、色はk色ある。
・靴下は数列cの順番で並んでいる。
・何番目の靴下を使うかのm件のクエリが与えられる、クエリの内容は左右、l rがそれぞれ何番目の靴下を使うか。
・クエリで与えられる予定と靴下の並んでいる順番のまま履くが左右で色違いは嫌なので塗り替えて揃える。
・最小の塗替え回数は何回か。
・サンプル1は1日目が1,2番目の靴下で色が(1,2)なのを1を塗り替えて(2,2)にする。2日目は色が(2,3)なのを3番目を塗り替えて(2,2)にしているイメージ。
・但し、サンプル1の場合で言えば1,2日目ともに2番目の靴下を塗り替えても回数は2で同じではある。

ACはできず。。

F. Video Cards

ざっくりと大意

ビデオカードの出力を約数、倍数の関係?(但し1以外)になるような値に調節する。
・サンプル1は3を基準にして、2番目のは使わずに3 + 0 + 15 + 9 = 27が最良になる。 ・サンプル2は2を基準にして、全部使って8 + 2 + 2 + 6 = 18が最良になる。