2021/2/13(土)

美雲このはラバーストラップが届いた。やったー。

せっかくなので前のやつと並べて飾ってみる。

特に固定できるような場所もないスタンドだが、ラバーなので多少ぺとっとくっついてくれた。これは僥倖。

絵柄以外全く同じ感じで作られたものかと思っていたけど、髪の色合いとかラバーの厚さとかちょいちょい違う。意外。


ブックオフに行った。創作関係で参考になる本が無いかと思って探すと、「萌えキャラクターの描き方」という本がシリーズで置いてあった。

頭・からだ編、しぐさ・ポーズ編、コスチューム編と並んでいたので、一番興味のないコスチューム編を買った。興味が無いものは本当に良く分からない。こういうのを置いておけば何かにはなろうという目論見。


ARC112に出た。AB2完。

Aは頑張って不等式を作って範囲を求めた後に等差数列の和にしてなんちゃら。もっと速く解きたい。

Bは2種類の行動があって、お金を使いきらなくてもOKなので、お金の無駄にしかならない行動パターンを2つ見つけてシンプルなパターン4つに落とし込む。-1→×(-1)→-1のバターンと×(-1)→×(-1)は無駄なので、×(-1)の前後両方に-1を行うことは無く×(-1)を2回連続でやることもない。とすると×(-1)は一番最初と一番最後以外やる意味がない。AGC008-Aの類型。

-1を出来る回数を考えれば作りうる数の範囲は割り出せるのだが、問題は4パターンの数直線を重ね合わせて個数を手に入れる必要があるというところで、当たり判定処理みたいなコード書くことになった。めんどっちいのお。

C通せず。頂点数が奇数の部分木と偶数の部分木で場合分けするのは分かったが、先手有利な部分木と後手有利な部分木で場合分けするのは分からなかった。というか本番中は後手有利になるようなケースがありうるのかを疑っていた。これはちょっと考察に先入観が入ってしまったと思う。

まあ選ぶ人が一番有利になるような枝を選ぶべきなのはそれはそうとして、奇数個の部分木は(後手のとるコインの数)-(先手の取るコインの数)でソートするのでなぜ上手くいくのか今一つよく分かっていない。ABC167-Fでも薄ら似たものを感じたような気がする。

Twitterを見ていたら零和ゲームは差分だという情報が飛んできた。とにかく先手と後手の差分は大事らしい。何もわからん。これをみると典型らしい。差分をとるのの理論的な基盤はミニマックス法?なんかどこを見ても唐突に「先手と後手の差分」の式が発生しているように見える。

Aを先手の得点、Bを後手の得点とすると、零和ゲームならA+B=N(Nは定数)という関係が成り立つので、ここでA-Bを最大にしたり最小にしたりするとA-B=N-2B=2A-Nになるので確かにAやBを最大にしたり最小にしたりすることになる。まあ、言われてみれば。

配列を関数の値でソートするライブラリを作った。なんかそういう発想が出たときに実装を躊躇しない用のお守り的な。

template<class It, class ...T>
void sortf(It begin, It end, T ...f)
{
	using val_t = remove_reference_t<decltype(*begin)>;

	sort(begin, end, [f...](const val_t& a, const val_t& b) {
		bool sg[] = { (f(a) < f(b))... };
		bool rsg[] = { (f(b) < f(a))... };

		rep(i, sizeof...(f))
			if (sg[i] || rsg[i])
				return sg[i];
		return false;
	});
}

スクワットとジョギングで破壊された脚の調子がようやく戻ってきた。

鍛えるのだからまた破壊しないといけない。腕は筋肉痛などむしろ出なくなってきて不安になっているくらいだが、脚もこの調子で鍛えればそんなくらいになるのだろうか。

Categories: