AtCoder Beginner Contest 023

はい。
https://beta.atcoder.jp/contests/abc023

A - 加算王

Python2

n=int(raw_input())
print n%10+n/10

%10と/10でそれぞれの桁を計算。

B - Cakes and Donuts

Python2

n=int(raw_input())
s=raw_input()
ans='b'
cnt=0
while n:
    if ans==s:
        print cnt
        break
    elif len(ans)>=len(s):
        print -1
        break
    cnt+=1
    if cnt%3==1:
        ans='a'+ans+'c'
    elif cnt%3==2:
        ans='c'+ans+'a'
    else:
        ans='b'+ans+'b'

手順をシミュしてあり得るかどうか確認する。

C - 収集王

Python3

r,c,k=map(int,input().split())
n=int(input())
d={}
x=[0]*c
y=[0]*r
ans=0
for i in range(n):
    a,b=map(int,input().split())
    a-=1
    b-=1
    x[b]+=1
    y[a]+=1
    if a in d: d[a].add(b)
    else: d[a]=set([b])
 
s={}
for a,i in enumerate(x):
    if i in s: s[i].add(a)
    else: s[i]=set([a])
 
for a,i in enumerate(y):
    i=k-i
    if i in s:
        ans+=len(s[i])
        if a in d:ans-=len(s[i]&d[a])
    if i+1 in s and a in d and len(s[i+1]&d[a]):
        ans+=len(s[i+1]&d[a])
print(ans) 

解説の言いなりに。各行と列ごとにいくつあるかでK個になる組み合わせを選ぶ。但し、選択した行と列の交点に飴がある場合は1つ減る 。それと合わせてK+1になる組み合わせで交点に飴があるものも解の候補になるのでこれを数える。