Codeforces Beta Round #81
はい。当時すでにDiv.1 Div.2分かれ始めてたのが同じコンテストで開催された回のようです。難易度高いと思います。。
あと当時発売のプレステ2版のゲームのディスガイアがなんやらで問題文もゲーム風なアレ。
http://codeforces.com/contest/105
A. Transmigration
implementation
ざっくりと大意
・nの既に習得しているスキル、m個の未修のスキル。
・Transmigrationするとそのm個のスキルが習得できるが、既習のスキルの熟練度?がk落ちる。
・既習のは100未満になったら使えなくなった扱い、Transmigrationで習得したものは0からスタート??
方針のようなもの
・リストでそのルール通りに処理するだけかな?
#!/usr/bin/env python # -*- coding: UTF-8 -*- import time import sys, io import re, math n,m,k=map(str, raw_input().split()) n,m=int(n),int(m) k=int(k[-2]+k[-1]) #l=[int(x) for x in raw_input().split()] a1,a2,b,answ,ansj=[],[],[],[],[] for i in range(n): sk,ju=map(str, raw_input().split()) a1.append(sk) a2.append(int(ju)) for j in range(m): b.append(raw_input()) for jk in range(n): chk=int(a2[jk]*k) if chk>=10000: answ.append(a1[jk]) ansj.append(chk/100) for jd in range(m): if b[jd] not in answ: answ.append(b[jd]) ansj.append(0) to=[] for i in range(len(answ)): to.append([answ[i],ansj[i]]) to.sort() print len(to) for j in range(len(to)): print to[j][0],to[j][1]
コピペミスを省けば3回書き直しかな?最初に書き始めた方針に修正を重ねて無理やりにAC。
引っかかったのが、少数丸め誤差とnにmのスキルが既にあってもTransmigration消えないなら無視で消えるなら熟練度?を0で追加させるのとかがアレでした。