読者です 読者をやめる 読者になる 読者になる

AOJ 2741 Invisible

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2741 解法 メモ化再帰で解ける. memo[si][sj][i][j][turn][pass] := a(si)からa(i-1),b(sj)からb(j-1)までスタックに積まれていて,手番がturnかつパスの状態がpassであるときの最大値.(p…

AOJ 0575 Festivals in JOI Kingdom

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0575 解法 実装できなかったので,eagletmt さんの解法を参考にした. AOJ 0575 - Festivals in JOI Kingdom - プログラミングコンテストの記録使うアルゴリズムとしては,DijkstraとKruskal…

AOJ 0519 Worst Reporter

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0519 解法 a が b に勝利したことを,a -> b と有向辺で表現することにすれば,この問題はトポロジカル順序を求める問題になる. トポロジカル順序が求まったら,その頂点列のなかで隣り合っ…

AOJ 0526 Boat Travel

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0526 解法 基本はワーシャルフロイドだが,それだと間に合わないので工夫する. 仮に島a, b間の船舶が更新された時,グラフ上の異なる2つの島u, vの最短経路は, u -> a -> b -> v つまり d[…

AOJ 0562 Shopping in JOI Kingdom

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0562 解法 まず,各頂点がショッピングモールからどれだけ離れているかを求める. これは,ショッピングモールの頂点をあらかじめ全てpriority_queueに突っ込んでおいたダイクストラを解けば…

AOJ 0623 Zombie Island

問題文 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0623 解法 危険な街を列挙さえすれば,あとはただの単一始点最短路問題. 危険な街を列挙するには,ゾンビに支配された街を全て,最初にqueueにプッシュしておくだけで十分である.計算量…

AOJ 0616 JOI Park

問題文 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0616 解法 まず,0を始点としてダイクストラで,各点への最短路重みを求めておく. そして,その重みで頂点をソートしておく.また,あらかじめ辺全体の重みの総和を求めておく. Xの候補…

AOJ 0600 Baumkuchen

問題文 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0600 解法 累積和と二分探索. まず,バウムクーヘンの累積和を二周分求めておく. その後,左端を適当に定め,そこから始めて長さが (lb + ub) / 2 以上になるところを2分探索で求める.…

AOJ 0509 Sheets

問題文 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0509 問題概要 平面座標に n 個の長方形がある.重なっていることもある. それらがつくる図形の面積と,周の長さを求めよ.・制約 1 長方形の左下,右上の座標の x, y 座標は,共に 0 以…

AOJ 0517 Longest Steps

問題文 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0517 解法 しゃくとり法でやった. 与えられた k 枚のカードをソートしておく. 0が含まれていれば1つだけ飛ばせるので,それは場合分けで処理. 行けるところまでいったら,左端をカード…

AOJ 0302 Star Watching

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0302 解法 星を輝度でソートする. 輝度の最小(つまり左端)を決めて,しゃくとり法でできる. 座標の最大最小は,priority_queueでもmapでもmultisetでもなんでもよい. 自分は最初 priori…

AOJ 0299 Railroad II

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0299 解法 d(i) をソートし,かつ p が 0 となるようにずらしておく. ちょっと考えると,解の候補としては d(1) まで反時計回りで一周する d(M) まで時計回りで一周する d(i) まで時計回り…

AOJ 0254 Scone

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0254 問題概要 数列 {a_n} と整数 M が与えられる. 適当な i ・制約 1 1 0 解法 累積和と二分探索. mod を取った累積和を sum(i) で表すことにする. 右端 j を固定すると,j までの累積和…

AOJ 0613 Treasures

問題文 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0613 問題概要 N 個の財宝が与えられ,それぞれ市場価値 w(i)と貴重度 v(i) が決まっている. この財宝をAとBで分け合う.どちらも獲得しない財宝があってもよい. 分け合った後のAとBの財…

AOJ 0145 Cards

問題文 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0145 問題概要 n 個のカードの山がある.カードには数字がかかれている. それぞれの山の一番上と下のカードの数字は a(i) と b(i) である. 2つの山を重ねる操作を繰り返して,一つの山に…

AOJ 0098 Maximum Sum Sequence II

問題文 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0098 問題概要 n次正方行列(a_ij)が与えられる.(a_ij) の部分行列の要素の和の最大値を求めよ.・制約 1 解法 まず,要素の横方向について累積和を取る. その後,横方向のある区間[i, j]…

TopCoder SRM 711 Div2 Hard TreeMovingDiv2

問題 https://community.topcoder.com/stat?c=problem_statement&pm=14556 問題概要 与えられた引数にしたがって, 頂点数が n の m 個の木を構築します. それぞれの木を T(i) とします. 各 i = 0, 1, ..., m-1 について,辺 e(i) ∈ T(i) を一つ選びます.…

TopCoder SRM 709 Div2 Med Permatchd2

問題 https://community.topcoder.com/stat?c=problem_statement&pm=14539 問題概要 「グラフが "pretty" である」を,「グラフに含まれる任意の連結成分 S に対して,|E(S)| が偶数である」と定義する. ここで,単純グラフが1つ与えられる.このグラフを "…

Codeforces Round #406 (div.2) C

問題 http://codeforces.com/contest/787/problem/C 問題概要 円上に n 個のマスがある.それぞれ 0 から n-1 まで番号が振られている. 0 番目はブラックホールである. また,どこかのマスに一匹のモンスターがいる. これらを使って2人でゲームをする.2…

AOJ 1337 Count the Regions

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1337 問題概要 xy 平面に長方形が N 個与えられる.長方形によっていくつの領域に分かれるか求めよ.・制約 1 長方形がある x, y 座標は 0 解法 N が小さいので座標圧縮と確信できる. 与え…

AOJ 2302 On or Off

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2302 問題概要 R * C のグリッドが与えられる.各マスは,部屋または壁を表している. さらに,M 個の仕事が与えられて,それぞれの仕事をする部屋は決められている.仕事は与えられた順番に…

AOJ 2156 Magic Slayer

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2156 問題概要 N 体のモンスターがいる.それぞれの体力は HP_i である. 自分が使える単体魔法と全体魔法がM個与えられる.それぞれの魔法には消費MPとダメージ量が決まっている. この時,…

TopCoder SRM 710 Div2 Hard MinMaxMax

問題 https://community.topcoder.com/stat?c=problem_statement&pm=14545 問題概要 頂点数 N, 辺の数がM の連結グラフが与えられる. それぞれの頂点と辺には重みがつけられていて,i 番目の頂点の重みは vi, i 番目の頂点の重みは wi である. 異なる2つの…

AOJ 2442 Convex-Cut

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2442&lang=jp 問題概要 N 個の頂点からなる凸多角形が与えられる.このとき,ある点があって,その点を通る任意の直線がこの多角形を二等分することができるだろうか?できる場合は,その点…

AOJ 2303 Marathon Match

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2303 問題概要 N 人のランナーがマラソンをする.コースの長さは L で,休憩所が途中に M 箇所存在する.i 人目のランナーは,どの休憩所でも全く同じ Pi パーセントの確率で休憩を取る.一…

AOJ 2157 Dial Lock

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2157 問題概要 数列の連続した区間に同じ数を足し引きする操作によって,ある数列を目的に数列に一致させたい.このとき,目的を達成する最小の操作回数を求めよ.制約 : 数列の長さは10以下…

AOJ 2182 Eleven Lover

問題のリンク http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2182 問題概要 ある自然数 N が与えられる.その連続部分文字列(0から始まるものを除く)で,11の倍数となるものはいくつあるか?制約: N の桁数は 80000 以下. 解法 DP で解くこ…

ARC070 D - No Need

arc070.contest.atcoder.jp 解法(証明?) を降順にソートする. 今, が不必要かどうかを判定したいとする.この時, とおく. また, から までの和で表現できる 未満の数がわかっているとする.(dpで保存) その中の任意の数 について, であるならば,…

2016年を振り返る

Twitterのハッシュタグで,「#一年の思い出を月別で振り返る」ってのがあったんですが,なんとなく自分でもやってみようと思ったのでブログに書くことにした. 1月 浪人していたので,センター試験の勉強をしていた気がします.してたかな?してなかったかも…

int とlong long のビット演算でハマった話

C++

#include <iostream> #include <bitset> using namespace std; using ll = long long; int main() { ll a = 0, b = 0, c = 0; for(int i=0; i<32; ++i) { a |= (1 << i); } for(int i=0; i<32; ++i) { b |= (1ll << i); } c |= (1 << 31); cout << bitset<64>(a) << endl; cout </bitset></iostream>…

C++11で始めるマルチスレッドプログラミングその1 ~std::thread事始め~

C++

この記事は、C++11におけるマルチスレッドプログラミング入門記事という位置づけで書かれたものです。簡単のため、表現が曖昧になったりしている部分があると思いますが、もっと厳密に知りたいという方はC++の規格を参照してください。 C++11のマルチスレッ…

例外安全について簡単にまとめた

https://github.com/Suikaba/publications/tree/master/exception-safety例外安全について簡単にまとまっているものがあまり見受けられないので、作ってみた. とはいったものの、僕はC++に疎いので、間違いがあるかもしれません. その時は指摘をお願いします…

Boost.Serialization - BOOST_CLASS_VERSION

以下のコードを書いたとする. namespace foo { class bar { // ... private: // serialize の実装 }; BOOST_CLASS_VERSION(bar, 1); } すると、以下の様なエラーが大量に出てくる. error: 'foo::boost::**' has not been declaredどうやらこれはBOOST_CLASS_…

using と using namespace

C++

Twitterでこういうコードを見かけた。 #include <utility> namespace N { using namespace std; class C {}; void swap(C&, C&) {} void f() { int n1 = 1; int n2 = 2; swap(n1, n2); // compile Error } } int main() { N::f(); return 0; } これはコンパイルエラー</utility>…

make_append_tuple を書いた

template の練習がてら書いてみようと思ったらウンコードが完成した。 tupleをくっつけるだけにしようと思っていたのだが、面白く無いのでめちゃくちゃにしてやった。 後悔はしていない。 まずはそれを見て貰いたいと思う。 #include <iostream> #include <type_traits> #include <tuple> n</tuple></type_traits></iostream>…

GCC Bug 58046 - template operator= in SFINAE class

コンパイルエラーになって欲しかったのにICEになりやがったのでバグレポ。 SFINAE 使ってたらなぜかバグりました。でも少し変えたら動くんですよねー。 詳細はリンク先を参照ください。 バグレポの書き方とか教えてもらえばよかったかなぁ…http://gcc.gnu.or…

Boost.Log 追記モード・ユーザー定義の severity

Boost.Logはファイルに書き出せるわけですが、追記モードも可能です。 ついでに、自分で定義した severity を書きだす方法もどーぞ。 #include <boost/log/utility/setup/file.hpp> #include <boost/log/utility/setup/common_attributes.hpp> #include <boost/log/trivial.hpp> #include <boost/log/attributes.hpp> #include <boost/log/expressions.hpp> #include </boost/log/expressions.hpp></boost/log/attributes.hpp></boost/log/trivial.hpp></boost/log/utility/setup/common_attributes.hpp></boost/log/utility/setup/file.hpp>

C# で素数列挙した -C# 勉強中

C#

C#の勉強中なので、まずは基本中の基本、素数の列挙をやりました。 もっとかっこよく書けるぞ!って人はコメントください。 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class…

Universal Reference を知るべき複数の理由

C++

復習第2弾。 universal reference って名前は知らなくていいので、C++のこれらの挙動だけは知っててほしいです。 前の記事と合わせてどうぞ。Universal Reference は以下 URefs と略させて頂きます。 URefs とオーバーロード class some_class { public: tem…

Universal Reference is 何

C++

universal reference という文字が見えたけど聞いたことなかったのでまとめました。 知識としては皆さんご存知だと思いますので復習程度に見ていただければ幸いです。 知らなかった人はこの記事で入門しましょう! Scott Meyers氏による universal reference…

Boost.勉強会 #12 大阪に行って来ました

はじめに 寝屋川市の大阪電気通信大学でBoost.勉強会 #12 が開催されました。 僕は発表者として行きましたが、今回もC++erがたくさん集っていたようです。 ちなみに初参加だったので、少し緊張しました。発表の順番とかタイトル一覧はこちら Togetterのまと…

C++ なんとかvalues

C++

C++には lvalue やら rvalue やらたくさんありますが、混乱している人もいるかもしれないのでめちゃくちゃ簡単にまとめておきます。 多分間違ってるところがあると思うので、その時は教えて下さい。よろしくお願いします。 lvalue 簡単にいえば左辺にして代…

C++ Template Metaprogramming の Exercise 4-2

C++

Variadic Templates Verで書いた。 struct error {}; template< bool B, typename ... Args > struct logical_and_; template< typename head, typename ... tail > struct logical_and_<false, head, tail...> { typedef mpl::false_ type; }; template< typename head, typename </false,>…

mpl::equalに渡すところをstd::is_sameにしてしまった

ちょっとハマったのでメモ。 ある日、以下の様なコードを書いてました。 typedef mpl::vector_c<int, 1, 2, 3> foo; typedef mpl::transform<foo, mpl::plus<_1, mpl::int_<1>>>::type bar; typedef mpl::vector_c<int, 2, 3, 4> expected; int main() { BOOST_STATIC_ASSERT(( std::is_same<bar, expected>::value )); } てっきり mpl::t</bar,></int,></foo,></int,>…

xrandr で 1920x1080 が出てくれない時の対処法

http://samuelmartin.wordpress.com/2012/05/29/enabling-resolutions-in-ubuntu-12-04-lubuntu-12-04/ ここに書いてあるとおり、まずターミナルで gtf 1920 1080 60と入力すると、 # 1920×1080 @ 60.00 Hz (GTF) hsync: 67.08 kHz; pclk: 172.80 MHz Modeli…

Boost.Contract の出力先を変更する

あけましておめでとうございます。今年もよろしくお願いします。さて、新年一発目の記事はタイトルにあるとおりです。 そのコードが以下になります。 //main.cc #include <contract.hpp> #include <boost/exception/all.hpp> #include <iostream> #include <fstream> class my_exception : public boost::exception, pub</fstream></iostream></boost/exception/all.hpp></contract.hpp>…

英語の本が読みたいから英語を勉強したいと思っているあなたに送る言葉

とりあえずその読みたい英語の本を買って読みましょう。

Boost.Contract その2 - C++ Advent Calender 2012

その1の続きです。 宣言と実装の分離 基本構文はだいたい押さえましたね。しかし、実際に使うとなると大事なことを忘れています。 このまま行くと「あれ?そういえば宣言と実装分けられないのかな?」となるのは確実です。 Boost.Contractではそれが可能です…

Boost.Contract その1 - C++ Advent Calender 2012

これは C++ Advent Calender 2012 の3日目の記事です。ーBoost.Contract 0.4.1が最新です。(2012/12/03現在) はい、契約だからってま○どマギネタとか出てくるんじゃないかなーって期待していたそこのアナタ!残念ながら使い回されすぎて使いにくいため、そ…

C++でLINQ的なもの - Ix++ Rx++

C++

暇つぶしにネットサーフィンしてたらこんなのみつけたhttps://rx.codeplex.com/ #include <cpplinq/linq.hpp> #include <iostream> #include <vector> int main() { using namespace cpplinq; std::vector<int> v = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; auto data_parsed = from( v ) .where( []( const</int></vector></iostream></cpplinq/linq.hpp>…