UVa/VolumeC
Last-modified: 2008-05-23 (金) 11:17:22
VolumeC
- 10000:Longest Paths
- Graph? - Floyd-Warshall?
- フロイドのアルゴリズムで、最長経路を探すように変更する.
隣接リスト表現でDFSを行うとTLE.
- 10003:Cutting Sticks
- Dynamic Programming? - Matrix-chain Multiplication Problem?
- 問題なのは、どの順番で切ればいいかである.
これは連鎖行列積問題と良く似ている.
つまり、長さLの棒を位置a,b,c(昇順)で切るとしたとき、
区切る位置をk(a<=k<=c)として、最も最適なkを見つければ良い.
例えば最適解がk=aだとすれば、それは最小コストが、「L」と「aからcまでの長さの棒の最小コスト」の和であることを意味する.
aからcまでの最小コストは、
この場合だと切る位置がbしかないため、c-aとなり、全体の解が得られる.
aからcまでの間に複数の切る位置があった場合は、上記の手順を再帰的に用いる事により解が得られる.
- 10004:Bicoloring
- Graph?
- 与えられたグラフを、
隣接するノードを互いに違う色になるように、
二色を使って塗り分けられるかという問題.
再帰のDFSで全探索すればおk.
- 10006:Carmichael Numbers
- Mathematics?
- Carmichael Number?の定義通りに。
- 10008:What's Cryptanalysis?
- 10013:Super long sums
- Mathematics? - Big Integer?
- タイトル通りに多倍長の和を求める問題.
- 10019:Funny Encryption Method
- 10034:Freckles
- Graph? - Minimum Spanning Tree?
- 最小木問題.Prim's Algorithm?のアルゴリズムで解いた.
- 10035:Primary Airthmetic
- Mathematics? -- Big Integer?
- 桁上がりの回数を数える.
- 10048:Audiophobia
- Graph? - Floyd-Warshall?
- フロイドのアルゴリズムをMinimax法に応用.
- 10050:Hartals
- AdHoc?
- 単純な問題.
普通にストライキの日を計算で求めて日にちを表すbool配列をtrueに.
最後にtrueの数を求める.
- 10055:Hashmat the brave warrior
- 10062:Tell me the frequencies!
- 10066:The Twin Towers
- Dynamic Programming? - Longest Common Subsequence?
- シンプルにLCSを適用.
- 10069:Distinct Subsequence
- Dynamic Programming?
- 与えられた文字列の中に、指定された単語が何通りの方法で見つかるかって問題.
練習問題に最適.
- 10071:Back to High School Physics
- 10079:Pizza Cutting
- Mathematics?
- 和の公式を発展させて、n(n+1)/2 + 1の式で求める事ができる.
- 10098:Generating Fast, Sorted Permutation
- String?
- next_permutation.