rupc2014_day3_a

7
2014/03/19 立命館大学競技プログラミング合宿 A: D’s Ambition - Dのやぼう - 原案:井上 解答:青木・井上 1

Upload: yuma-inoue

Post on 19-Jul-2015

178 views

Category:

Documents


2 download

TRANSCRIPT

2014/03/19立命館大学競技プログラミング合宿

A: D’s Ambition!- Dのやぼう -

原案:井上!解答:青木・井上

"1

2014/03/19立命館大学競技プログラミング合宿

問題概要“AIZUNYAN”という部分が”AIDUNYAN”のアナグラムに置き換えられた文字列が与えられるので、元の文字列を復元せよ!

“AIDUNYAN”のアナグラムは何も考えず”AIZUNYAN”に復元してよい

例: “ZDDANYANIUPIDD” → “ZDAIZUNYANPIDD”

"2

2014/03/19立命館大学競技プログラミング合宿

想定解法

初めにすべてのアナグラムを検出してから、検出部分を置換

1. “ZDDANYANIUPIDD” → “ZDDANYANIUPIDD”

"3

2. “ZDDANYANIUPIDD” → “ZDAIZUNYANPIDD”

アナグラムの検出には様々な方法がある

2014/03/19立命館大学競技プログラミング合宿

アナグラムの検出現在の位置から7文字前までに使われている文字を種類ごとにカウント!

1つ右の位置に移動するとき、新たな文字を足し、8文字前の文字を減らす

“ZDDANYANIUPIDD” = A:2, D:2, I:1, N:2, Y:1

"4

文字列同士をソートして比較

“ZDDANYANIUPIDD” = A:2, D:1, I:1, N:2, U:1, Y:1

“ZDDANYANIUPIDD” → “AADINNUY”

“AIDUNYAN” → “AADINNUY”

2014/03/19立命館大学競技プログラミング合宿

注意点初めにすべてのアナグラムを検出してから、検出部分を置換!

置換前は”AIDUNYAN”のアナグラムでなくても、置換後にアナグラムになることがある ←置換してはいけない!

サンプル4のケース

“NYANAIDUAIDU”

"5

“AIZUNYANAIDU”

“NYANAIDUAIDU”

“AIZUNYANAIDU”

“AIDUAIZUNYAN”

×

2014/03/19立命館大学競技プログラミング合宿

writer解

井上(C++) 35行 (文字カウント)!

井上(C++) 24行 (ソート)!

青木(Java) 26行

2014/03/19立命館大学競技プログラミング合宿

提出状況

First Acceptance!

on-site: nyn (00:07)!

on-line: Komaki (00:05)!

正答率 29/47 (61.7%)