文字列

Codeforces 146 B. Lucky Mask

問題 ある数のLucky maskとは、その数から4または7の数字だけを取り出して、 元の順のまま並べて一つの数字にしたものである。 72174994のmaskは7744で、7のmaskは7, 9999047のmaskは47である。 与えられた数4または7のみからなる数bに対して、 aより大きい…

Codeforces 146 A. Lucky Ticket

問題 n桁の数字が書かれたチケットがある。 このチケットがLuckyであるとは、 各桁の数字が4または7 前半のn/2文字と後半のn/2文字の数字の和が等しい ことを言う。与えられたチケットがLukcyであるかそうでないかを判定せよ。 制約条件 n≦50

TopCoder SRM 298 Div1 Hard CountingCommonSubsequences

問題 三つの文字列a,b,cが与えられる。 a,b,cの全てに(必ずしも連続しない)部分文字列として含まれる文字列はいくつあるか、求めよ。 制約条件 a,b,cはアルファベット小文字からなる。 a,b,cの長さ≦50

TopCoder SRM 299 Div1 Medium PalindromePartition

問題 文字列sが与えられる。 文字列を連続する部分文字列に分割し、それぞれ全てが回文になっているようにしたい。 文字列は最小でいくつに分割する必要があるか、求めよ。 制約条件 sはアルファベット大文字からなる sの長さ≦2500

TopCoder SRM 302 Div1 Medium IntegerPalindrome

問題 正の整数が回文であるとは、整数を逆から読んでも同じであることを言う。 ただし、leading zeroはあってはならない。 (12321は回文であるが、123210は回文ではない) K番目(0-indexed)に小さな回文である正の整数を求めよ。 制約条件 K≦1000000000

TopCoder SRM 305 Div1 Medium InterleavePal

問題 二つの文字列s,tが与えられる。 s,tをinterleaveに含む文字列の中で、連続する部分文字列のうち回文となっている部分の長さが最長の文字列の、回文となっている部分の長さを求めよ。 文字列Aから(必ずしも連続しない部分文字列として)Bを抜き出した後…

TopCoder SRM 333 Div1 Medium RepeatedPatterns

問題 '0'または'1'からなる文字列P1,P2が与えられる。 文字列S(n)を、P1を100万回繰り返した後、P2をn回繰り返した文字列とする。 文字列Sを、S(1)+S(2)+……と無限につなげたものとする。 文字列Tを、Sの先頭から10^16文字を取った文字列とする。 Tにおいてゼ…

TopCode SRM 336 Div1 Medium LikelyWord

問題 文字列が辞書順に並んだ辞書dictionary[]が与えられる。 k文字からなる単語を一つ、ランダムに生成する。 ただし、dictionaryの要素に一致するような単語は生成されない。 一致しない単語はすべて等確率で生成される。 生成した単語を辞書に入れるとき…

TopCoder SRM 342 Div1 Medium ReverseResources

問題 文字列strおよび、要素数nの文字列の配列resources[]が与えられる。 文字列strは、resourcesから次のようにして作った文字列である。 resourcesの要素どれか一つresources[i]から出発する 文字列中の"%s"を、resourcesの別の要素に置換する 上の操作を…

TopCoder SRM 342 Div1 Easy TagalogDictionary

問題 タガログ語のアルファベットは、順に a b k d e g h i l m n ng o p r s t u w y である。 与えられたタガログ語の文字列を、 タガログ語での辞書順でソートせよ。 ただし、ngは、必ずアルファベットngとして扱うものとする。 制約条件 文字列の個数≦50…

TopCoder SRM 374 Div1 Easy SyllableSorting

問題 Syllable sortingとは、文字列を音節に分解したものを元に文字列をソートすることを言う。 ここで、音節に分解するとは単語を、(空で無い子音が連続するものを最も長く取る)+(空で無い母音が連続するものを最も長く取る)に分割することである。 二つの…

TopCoder SRM 385 Div1 Easy UnderscoreJustification

問題 n個の単語を、幅w文字になるよう単語と単語の間に"_"を入れて一行に書きたい。 それぞれの単語と単語の間の"?"の数はなるべく均等になるようにしたい。 (すなわち、最も多い"_"と最も少ない"_"の差が1以下になるようにしたい) それが複数ある場合、辞…

TopCoder SRM 394 Div1 Easy RoughStrings

問題 文字列sのroughnessとは、 sに出現する文字のうち、最も多いものの出現回数をa、 最も少ないもの(ただし一回以上出現するもの)の出現回数をbとしたとき、 a-bで定義される。 与えられた文字列からn個以下の文字を消して得られる文字のうち、 roughnes…

TopCoder SRM 396 Div1 Easy DNAString

問題 長さlの文字列sが、p周期であるとは、 すべての0≦i<l-pなるiについて、s[i+p]=s[i]を満たすことを言う。 A,C,G,Tからなる文字列が与えられる。 この文字列をmaxPeriod以下の周期を持つように書き換えたい。 最低でいくつの文字を書き換えなければなら…

TopCoder SRM 428 Div1 Medium TheLongPalindrome

問題 英小文字からなる、長さがn文字以下で、使われているアルファベットがk種類以下であるような回文の数をmod 1234567891で求めよ。 制約条件 n≦10^9 k≦26

TopCoder SRM 528 Div1 Medium SPartition

問題 'o'または'x'からなる、長さが偶数の文字列が与えられる。 この文字列をちょうど等しい二つの部分文字列にわける。 そのような分け方は何通りあるか、求めよ。 制約条件 文字列の長さ≦40

TopCoder SRM 432 Div1 Medium GroupedWord

問題 文字列がgrouped wordであるとは、 同じ種類のアルファベットの二文字の間に他のアルファベットがはさまれていないことを言う。 文字列を連続する部分文字列に区切った集合が与えられる。 元の文字列が一意に復元できるならその文字列を、 複数通りに復…

Codeforces 137 E. Last Chance

問題 文字列が与えられる。 この文字列の連続する部分文字列で、母音の数が子音の数の2倍以下であるようなものを、goodなsubstringという。 goodなsubstringで、長さ最長のものの長さおよび、その長さのgoodなsubstringが現れる回数を求めよ。 制約条件 文字…

TopCoder SRM 488 Div1 Medium TheBoringStoreDivOne

問題 Johnは文字列Jの看板を、Brusは文字列Bの看板を持っている。 Johnは看板から連続する部分文字列を、空でないかつ重ならないように二つ切り出す。 これらをA,Bとする。 Brusも同様に自分の看板から二つの連続する部分文字列を二つ切り出す。 これらをC,D…

TopCoder SRM 433 Div1 Easy MagicWords

問題 文字列Tがmagic wordであるとは、 Tをi(0≦i<|T|)文字シフトした文字列がTに等しくなるようなiがちょうどK個あることを言う。 n個の文字列が与えられる。 0からn-1の数の順列p[i]について、この順に これらの文字列を結合した文字列をSとする。 Sがmagi…

Codeforces 58 D. Calendar

問題 n個の都市の名前がある。 これらを一行に二つずつ、文字dで区切って並べる。 各行は全て同じ文字数でなくてはならない。(このような並べ方が存在することは保証されている) 並べた後のn/2行の文字列を、そのまま順につなげた文字列が辞書順で最小にな…

Codeforces 95 B. Lucky Numbers

問題 super lucky numberとは、各桁が4または7であり、 4の現れる回数と7の現れる回数の等しいような数を言う。 与えられた数n以上の、最小のsuper lucky numberを求めよ。 制約条件 n≦10^5

Codeforces 86 C. Genetic engineering

問題 m個の塩基配列が与えられる。 n文字の塩基配列で、全ての文字が塩基配列にカバーされている (すべてのiに対して、ある整数l≦i≦rが存在して、塩基配列のl文字目からr文字目までがいずれかの塩基配列に等しい) ようなものの数をmod 10^9+9で求めよ。 制…

Codeforces 83 C. Track

問題 hxwマスのグリッドのそれぞれに、a-zの文字またはS,Tが書かれている。 SからTのマスへのパスを考えたとき、パス上にある文字をつなげた文字列をsとする。 sに現れるアルファベットの数がk個以下で、最小の長さをもつようなsを求めよ。 複数ある場合は辞…

Codeforces 120 H. Brevity is Soul of Wit

問題 文字列の、「4文字以下の(必ずしも連続しない)部分文字列」をその文字の略称にできるとする。与えられたn個の文字列の略称を、重複なく定められるかどうかを判定せよ。 重複なく定められる場合、その略称をどれか一組出力し、 そうでない場合-1を出力…

Codeforces 128 B. String

久々にCodeforces参加したらボロボロだった。 問題 文字列が与えられる。 与えられる文字列の空でない部分文字列を辞書順に並べ替えたとき、 k番目に来るものを求めよ。 制約条件 文字列の長さ≦100000 k≦100000

POJ 3367 Expressions

問題 アルファベットの小文字であらわされる数値および、アルファベットの大文字であらわされる演算子からなる式が与えられる。ただし式は後置記法になっていて、 abOは、 スタックにaを積む スタックにbを積む スタックからa,bを取り出し、スタックにb O a…

POJ 3359 Wordfish

問題 文字列が与えられる。 文字列の順列のうち、与えられた文字列の次の10個および前の10個に対して、 隣り合う文字間の距離の最小値が最大のもの、およびその値を求めよ。 ただし文字aと文字b間の距離とはabs((int)a-(int)b)を意味する。

POJ 2334 Simple prefix compression

問題 n個の文字列A[0],A[1],...,A[n-1]が与えられる。 接頭辞圧縮とは、次のような圧縮を言う。 A[i]とA[i+1]に対して、j<min(len(A[i]),len(A[i+1])かつ 次が成り立つ最大のjについて、 A[i][0]=A[i+1][0], A[i][1]=A[i+1][1], ..., A[i][j]=A[i+1][j-1] A…

TopCoder SRM 519 Div1 Medium RequiredSubstrings

問題 n個の文字列が与えられる。 このうちちょうどC個をその部分文字列として含むような、長さLの文字列の個数を求めよ。 制約条件 n≦6 L≦50