Codeforces Beta Round #12 (Div 2 Only)
はい。
A. Super Agent
implementation
ざっくりと大意
・3*3で.かxが与えられる。
・symmetricな配置ならYES、そうでなければ'NO'らしい。
方針のようなもの
・2列目の[0]と[2]が異なると対称でなくなるので最小に判定させる。 ・1列目を[0]からと、3列目は[2]から比較する。
#!/usr/bin/env python # -*- coding: UTF-8 -*- import time import sys, io import re, math start = time.clock() a=[] ans='NO' for i in range(3): a.append(raw_input()) if a[1][0]==a[1][2]: for j in range(3): if a[0][j]==a[2][-1*(j+1)]: ans='YES' else: ans='NO' break else: ans='NO' print ans
B. Correct Solution?
ざっくりと大意
・とある数nを0始まりがないように並び替えて作ることの出来る最小の数とmが同じであるか??
方針のようなもの
・nから作れる最小の数を作ってmと比較する。
ans=['WRONG_ANSWER','OK'] def men(x): y=list(x) y.sort() z=len(y) for i in range(z): if y[i]!='0': y[i],y[0]=y[0],y[i] break return ''.join(y) n=raw_input() m=raw_input() print ans[1] if m==men(n) else ans[0]
とりあえず一文字ずつstr扱いでリストにしてソートして'0'始まりだったらそれ以外が出るまで探してからスワップで、作ることの出来る最小の数になるのでそれと比較する。
C. Fruits
ざっくりと大意
・m個のフルーツとn個のタグでの最小値と最大値??
・4 2 1 10 5で3種のフルーツ最小なら1,2,4で7 最大なら4,5,10で19
・3 5 1 6 8 1で4種5個のフルーツ最小なら1,1,1,3,5 最大なら3,5,6,8,8で30
方針のようなもの
・多分ソートすればどうとでもなりそうな気がする。
n,m=map(int,raw_input().split()) l=map(int,raw_input().split()) l.sort() w={} while m: m-=1 s=raw_input() if w.has_key(s): w[s]+=1 else: w[s]=1 w2=sorted(w.items(), key=lambda x:x[1]) p=len(w2) a=b=chk=0 for i in range(-1,-p-1,-1): a+=l[chk]*w2[i][1] chk+=1 for j in range(-1,-p-1,-1): b+=l[j]*w2[j][1] print a,b
最小は小さい数のタグと多い数のフルーツを優先して使う、最大は大きい数のタグと多い数のフルーツを優先して使えば大丈夫 だった。