2012-12-01から1ヶ月間の記事一覧

Codeforces Round 158 (Div 2) Problem A - Adding Digits

問題概要 ある数字aに、一ケタの数字を末尾に自由に付け足していく処理をn回行う。 ただし、毎回bで割り切れるようにケタを追加していかなければならない。 n回ケタを追加した後の値を出力せよ。 もし、このような数が作れない場合は、-1を出力せよ。 解法 1…

PKU 2823 - Sliding Window

PKU

問題概要 N個の要素をもつ数列が与えられる。 この数列において、K個の要素をもつ区間それぞれについて、最小値・最大値を求めよ。 解法 セグメントツリーを使って、区間の最小値・最大値をO(log n)で求めてしまいましょう。 セグメントツリーは、プログラミ…

PKU 1731 - Orders

PKU

問題概要 文字列が入力される。 この文字列の順列全てを辞書順で出力せよ。 解法 next_permutationやるだけで解けました。 プログラム #include <iostream> #include <algorithm> #include <cstdio> using namespace std; int n; char s[1002]; int main(){ while(scanf("%s", s) != EOF){</cstdio></algorithm></iostream>…

PKU 3761 - Bubble Sort

PKU

問題概要 n, kが入力される。 n個の要素がある数列をバブルソートでソートされることを考える。 このとき、数列が並び終わるまでに、バブルソートの一重ループ目を実行した回数がkであるとする。 このようになる数列の初期配置は、何パターンあるか求めよ。 …

PKU 3705 - Reverse

PKU

問題概要 nが入力される。 1, 2, ..., nの昇順数列をn, n-1, ..., 1の降順数列にするための最小の操作数と、操作方法を出力せよ。 数列に対する1回の操作では、次のことをできる。 (pos1, length, pos2) まず、数列のpos1番目からlength個を取り出す。 次に…