なが月・2日目

(つやすみ)(んばり)(間)です。

2日目

午前

ABC126A-Dを解いた。D問題では木構造を効率的に実装する方法をつかめていないので、Python3での1st ACを写経した。1st ACなのに速度面でも最速と比べて60msしか差がない、すごい

そして何回か提出して分かったこととして、input()がかなり遅い!!!なぜわざわざimport sysしてまで1st ACの方がfor line in sys.stdinにしているのかと疑問に思っていたが、for _ in range(N)―input().split()をfor line in sys.stdin―line.split()に変えただけで700msから520msになってしまった。

Pythonの知っておくと良い細かい処理速度の違い8個 というページでの検証では10倍の速度差、10^6行の入力において350msもの違いが生じていることが示されている。ローカル環境でテストケースを実行するときにEOFを送らなければ入力が終わらないのは多少不便だが、3桁msはTLEを左右しかねない。これから入力が多いものにはsys.stdinを使おうと思った。

時間を要したがD問題を本質的に理解できたので喜ばしい。アレンジ写経をした際につかめた処理の意味をコメントで記したのが以下である。

午後

来学期の並列計算の準備のためC言語を学ぶ。ひとまずJetBrainsのCLionをインストールし、東工大C言語入門を教材として選んだ。

第2章で累乗が**で表現できないことに驚いた。#include <math.h>してpow()ということだ。fabsがdoubleで受け渡し、stdlibのabsがintで受け渡し、labsがlongで受け渡し、と何とも煩雑である。3章まで終えた。

 

AtCoderに+1時間割いたのでPhotoshopは30分に削った。

今日はhttps://helpx.adobe.com/photoshop/how-to/combining-images-basics.htmlでレイヤーマスクを使った画像の合成のチュートリアル

別の画像をレイヤーとして追加するためにはファイル>埋め込みを配置を行わないといけないところにもどかしさを感じた。画像を開きたい人こそメニューバーに触れて「開く」を押すべきで、ドラッグ&ドロップしたらレイヤー追加されるべきではなかろうか。ともかくレイヤーの合成を知り、レイヤーマスクを追加して黒く塗ったところが透過されることが分かった。範囲を選択して「選択とマスク」ウィンドウを開くと、ぼかしやエッジの強調などを加えたマスクにできることも知った。

f:id:napier_0b:20190808231918p:plain

画面下の黄色い物体を合成しているが、右が「選択とマスク」を使って境界をぼかしたマスク、左がただ範囲選択してレイヤーマスクを追加した場合。手前の絵筆がボケているのに、左はピントがばっちり合っていて遠近感がよくわからなくなるが、右は風景に元から存在していたように思える。