[PR]
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
今まで上手くビルドできていたのに、別プログラムをビルドしようとしたらむっちゃ怒られた。上手く動かないのである。
cmakeを実行したときの出力とにらめっこしていると、MSVC向けにビルドしているにもかかわらずMinGW用のOpenCVを使おうとしていた。
(私の環境に入っているOpenCVはMSVC用のとMinGW用の2種類がある。)
CmakeLists.txtは全く同じものを利用していたため予想だにしていなかったが、CmakeLists.txt中のfind_package(OpenCV REQUIRED)は状況によって異なる OpenCVConfig.cmake・opencv-config.cmakeを見つけてくるらしい。
(OpenCVConfig.cmakeやopencv-config.cmakeはOpenCVの利用に必要なものを記述したもの...だと思う。)
CmakeLists.txtに次の一文を追加した。
set(OpenCV_DIR "使いたい方のOpenCVに付属したOpenCVConfig.cmakeやopencv-config.cmakeを含むディレクトリ")
つまり、使いたい方のOpenCVに付属したOpenCVConfig.cmakeやopencv-config.cmakeを含むディレクトリをOpenCV_DIR
という変数に設定したのである。
これは一度MinGW用のOpenCVを消去してcmakeコマンドを実行したときに出た以下のメッセージをみて知った方法である。
Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
OpenCVをCMakeからビルドするときにはOpenCV_DIR
変数を設定することでパッケージの探索先を明示的に示そう。
源ノ明朝, 源ノゴシックのJP Subset OTFsを導入した。
元のデータは取り敢えず/usr/usrname/document/font/の下に置く。
・tlmgrとは
TeX Liveのパッケージ管理ソフト
・tlmgrのアクセス先は変更できる。
参考:http://www.fugenji.org/~thomas/tori-tex/node15.html
・自分で処理をすることもできる
platex hoge.tex
dvipdfmx hoge.dvi
のような手順で hoge.tex から hoge.pdfを作ることができる。
・パッケージの文書(技術文書)を表示することができる。
texdoc パッケージ名
参考:ここ
・\documentclass[a4j]{jsarticle} が上手くいかない。
→\documentclass[uplatex, a4j]{jsarticle} にする。
jsarticleなどは、そのままではupLaTeXで使うことができない。
参考:ここ
→或いは \documentclass[a4j]{ujarticle} にする。
・LaTeXドキュメントをHTML二変換したい場合
こことか使えそう。
AtCoderBeginnerContestの各問題におけるミソを自分用にまとめた記事。
その001-010。
リンク先はそのミソについてまとめられた(まとめた)記事になっています。
A問題 なし
B問題 なし
C問題
小数の計算誤差。
http://kikihijidarake.blog.shinobi.jp/nocategory/avoidcalcerror
一般には私がまとめたのより、こちらのサイトの方が詳しいし良いかも。http://d.hatena.ne.jp/komiyam/20111210/1323503019
D問題
A問題 なし
B問題 なし
C問題
小数の計算誤差。
同上
D問題
A問題
計算順序とかもっといい方法があった。
詳細はいずれ。(書かないかも)
B問題
別解:文字に点数をつけて、その合計点を見ることで条件を満たすか否かを判別する方法。
文字と点数の結びつけは連想配列で。C++ならstd::mapとか。
→連想配列の詳細 http://vivi.dyndns.org/tech/cpp/map.html
詳細はいずれ。(書かないかも)
C問題
組み合わせが膨大な問題に対してどう取り組むか。
詳細はいずれ。(書かないかも)
D問題
A問題 なし
B問題
マスをどうやって回転させるか。
→c[i][j]とc[3-i][3-j]をswapすればよい。
C問題
膨大な計算をどう削減するか。
→今回は繰り返し(規則性)の発見。
→やっている計算も同じようなことを繰り返しているだけだしね。
詳細はなし。
D問題
A問題 なし
B問題 ソートするか入力段階でmin値を更新していくか。
C問題 別解の二部グラフってなに。調べたら追記。
D問題
A問題 なし
B問題 なし
C問題 1変数の固定とか、3変数のうち既に求めた2変数を用いて残りの1変数を導出するとか。
D問題
A問題 なし
B問題 なし
C問題 幅優先探索の例題
D問題
A問題 なし
B問題 なし
C問題
D問題
A問題 なし
B問題 降順ソートのやり方
http://kikihijidarake.blog.shinobi.jp/Entry/8/
C問題
D問題
A問題 なし
B問題 なし
C問題
小数の計算誤差。
ABC001 C問題と同じ
D問題
割り算の結果が小数になる場合、その誤差が時に問題を生じさせる。
特に比較をするときなどは顕著だろう。
その解決策である。
因みに私は記事を書いてなおよくわかっていない。
割られる数が整数などの場合、計算結果に、例えば0.00001のような小さめの値を足すという方法がある。
double ans = 241 / 60 + 0.00001;
「少しだけ」が曖昧なので、妥当な数字がどれくらいかを考えるのは難しい気がする。
また割られる数が小数以下の細かい数字の場合、この方法をとることが出来ない。
整数xを整数yで割る。このとき、商を10^-nの精度で求めたいとする。
解決策2では、xを先に10^n倍してyで割るのだ。そして計算結果を10^-n倍すればよい。
もし計算結果をそのまま出力するとか、文字にするのならば10^-n倍しないことも可能だろう。こうすると完全にずれはなくなる…気がする。
// n = 1, y=2 のとき
const int a = 何かしらの値1
const int b = 何かしらの値2
cin>>x;
x = x * 10 / 2;
cout<< x / 10 << '.' << x % 10 << flush;
また、計算が続くのならば、すべての計算が終わった段階で10^-n倍するとよいかもしれない。 この方法で注意すべきは、変数のオーバーフローである。特に計算が長く続き、かつ最後に10^-n倍をする場合、その計算途中で桁が溢れる危険があるので使う際には留意されたし。
そもそも小数を扱わなければいけないような計算をしなければいい。
例えば、入力xについて、xを7で割った商で条件分岐する場合を考える。
このとき、境目となる値を先に7倍し、7倍された値とxを比較すればよいのだ。
// a > b
const double a = 何かしらの値1
const double b = 何かしらの値2
cin>>x;
double quotient = x/7;
if(quotient > a){
//何かしらの処理
}
else if(quotient > b){
//何かしらの処理
}
else{
//何かしらの処理
}
// a > b
const double A = 何かしらの値1*7
const double B = 何かしらの値2*7
cin>>x;
if(x > A){
//何かしらの処理
}
else if(x > B){
//何かしらの処理
}
else{
//何かしらの処理
}