Codeforces Beta Round #8
はい。
http://codeforces.com/contest/8
A. Train and Peter
strings
ざっくりと大意
・aの先にbが見えたらforward、aの反転したものの後ろにbの反転したものが見えたらbackward。
・両方ならboth、いずれも成立しなければfantasy。
Python2
s=raw_input() a=raw_input() b=raw_input() s1=len(s) a1=len(a) ans=[0,0] for i in range(s1): x=s[i:i+a1] if s[i:i+a1]==a: if b in s[i+a1:]: ans[1]=1 if a[::-1]==x: tmp=s[:i] if b[::-1] in tmp: ans[0]=1 print 'both' if sum(ans)==2 else 'forward' if ans[1]==1 else 'backward' if ans[0]==1 else 'fantasy'
問題文が読解できなくて他の人の解をみて推定した。。つらい。。先頭から1文字ずつずらしてaとaの反転に一致するものを探してごにょごにょした。。問題文が辛かった。
B. Obsession with Robots
constructive algorithms,implementation
ざっくりと大意
・ロボットが迷路探索をしている。 ・迷路の形状は不明。 ・最短経路で探索をしたい。
方針のようなもの
・最大で移動が100回らしいので上下左右に100ずつの大きさが取れるようにリストを用意。 ・左右に移動する際は元々いるマスと、上下のマス(最短で移動できる可能性の合ったマス)をマーキングする。 ・上下に移動する際は(ry
#!/usr/bin/env python # -*- coding: UTF-8 -*- import time import sys, io import re, math start = time.clock() i=raw_input() l=[['*']*200 for a in range(200)] x=y=100 chk=1 l[y][x]='#' for j in range(len(i)): if i[j]=='U': l[y][x-1]=l[y][x+1]='#' y-=1 if l[y][x]!='#': l[y][x]='#' else: chk=False break elif i[j]=='D': l[y][x-1]=l[y][x+1]='#' y+=1 if l[y][x]!='#': l[y][x]='#' else: chk=False break elif i[j]=='R': l[y+1][x]=l[y-1][x]='#' x+=1 if l[y][x]!='#': l[y][x]='#' else: chk=False break elif i[j]=='L': l[y+1][x]=l[y-1][x]='#' x-=1 if l[y][x]!='#': l[y][x]='#' else: chk=False break print 'OK' if chk else 'BUG'
[y][x]という表記でyが縦移動、xが横移動とか色々酷かった。
最初は単に同じ経路、マスを通るとBUGと思ってて失敗した。