ubuntuで標準出力からクリップボードへ
xsetは何故か使えなくて諦めたxclipを使う
echo "test" | xclip
C++の.at()で配列外参照(Out Of Range)を検出して配列外参照した時に0などを返すマクロ
priority_queueでclear()をする
競技とかで、priority_queueの中身をclear()したいけどメソッドがない
なので、以下のように書く
priority_queue<int> que;
...
que = priority_queue<int>();
これでもめんどくさいのでこうする
priority_queue<int> que;
...
que = decltype(que)();
以下みたいなの書いとくのもアリかもしれない
#define CLEAR(a) a = decltype(a)();
門松もどき
珍しく競技プログラミングの解説記事です
yukicoderの問題 非常に厳しい問題だった 問題はこちら
No.127 門松もどき - yukicoder
要約すると、左右左右と単調に大きくなりながら真ん中によっていく最長増加部分列問題みたいなやつ
とりあえず最長増加部分列の問題
は蟻本にあったので、そちらを見ると, dpを使っている。なるほどdpを使えば確かに解けそう
というわけで以下のようにdpを組む
- : lから始まって(lが最小)rまでの範囲で、最大となる門松もどき
- : rから始まって(rが最小)lまでの範囲で、最大となる門松もどき
1. l=rで幅が0の時, 門松もどきは1なのでこれで初期化
2.1. は右に広げていくイメージで, 左が最小なのでlの値よりもrが小さければ, 広げる前と同じ.
逆のケースでは, 右から始まっているケースに, +1(lの分)を加えた値と比較して更新
2.2. は左に広げていくイメージで, 右が最小なのでrの値よりもlが小さければ, 広げる前と同じ.
逆のケースでは, 左から始まるケースに, +1(rの分)を加えた値と比較して更新
式にするとこんな感じ
実装方法も少し困ったREP(l,N)REP(r,l)みたいな感じで更新しようとしてもまだ求めていない値を参照する形になってしまう
このdpは, 徐々に幅を広げていくイメージがあったので幅を徐々に広げていくようなdpにした
とすると,
w = 0の時, l=rですべて1
w = 1の時はw=0の時の値を使用
w = 2の時はw=1の時の値を使用
のようにwとlを用いて更新するといい感じにdpできた
もしかするとlrではなくlwでdpをすると綺麗だったかもしれない
今回, dpL, dpRはそれぞれlやrから始まるdpにしているので, dpL[0][N]などを出力しても, 0から始まる門松もどきの最大値となり, たとえば正解が1から始まる門松もどきだったらWAになるので, すべてのdpL, dpRに関しての最大値を出力しなければならない.
.pdfから.jpg等の画像ファイルにしたい
知り合いが困っていたので記事にする
Install
王道のImagemagickを使う
chocolateyが入っているなら
cinst imagemagick
で入ったはず
入ってないのならここからそれぞれの環境に合ったものを入れてください 多分windowsならmingwがいいかな
www.imagemagick.org
使い方
convert input.pdf output.jpg
これで終わり