純粋培養な僕がWUPC4th開催にあたって、色々パソコンカタカタ分からん!ってなった所のメモを残しておきます。
当方gitを触るのも初経験でございました…(この機会に触れられてかなり良かった、周りの環境が競プロerだと気兼ねなく質問しやすい(当社比))
rimeの基本的な使い方についてはbeetさんの記事が詳しいです。期間中幾度となくお世話になりました。
Rimeのinstall方法
beetさんの記事で分かりやすく書いてあります。
ただ僕ここでもpipってなんだ、みたいになってやや時間を食った記憶があります、がまあ僕ですら色々調べてたら出来たので多分何とかなります。
gitのセットアップ
ここからやりました。
$ git config --global user.name "username" $ git config --global user.email "email address"
$ git config --global user.name $ git config --global user.email
で正しく設定できてるか確認。
gitのコマンド叩いたらエラーを吐かれた
warning: unable to access '/.config/git/attributes': Permission denied
この記事を読んで解決しました。
一応軽く書いておくと、
$ cd ~/ $ ls -al
でファイルの所有者を見ると、 .configの所有者がrootになってるのが原因でした。
Unable to access 'git/attributes' - Stack Overflow
ここに載ってるコマンドを適当に叩いてたら直った!!という記憶だけ残っています。ちゃんとメモしておけば良かった。
上のコマンドを再び実行して、rootがstaffになっていればOK。
g++: fatal error: cannot execute 'cc1plus'
困りました。
具体的には手元で
$ rime test
を実行した時にコンパイルエラーを吐かれていました。
調べるとg++とgccのバージョンが違う、みたいな話が出ていて調べたのですがパッと見まあそこは大丈夫そうで(普段競プロは出来ていたので)困り果てていました。
WUPC開催3週間前にこれじゃマズイ!とヘドバンしてTwitter検索してたら、同じような要件を見かけてそこに付いてたリプ通りに、
$ rm -f /usr/local/bin/g++ $ ln -s /usr/local/bin/g++-10 /usr/local/bin/g++
をしたら解決・・・
下のはシンボリックリンクを貼ってる(合ってる?)という理解を得られているのですが、元々入ってるg++を消している気がするけど大丈夫なのかな(何も分からず) ただ現状これで何も問題なく動いてるように見えるのでOKです。
gitの使い方が分からない
合宿、この状態からGitHubの機能をゴリゴリ使って開発するようにした話をそのうち書きたい pic.twitter.com/dY3ocfgKUF
— beet (@beet_aizu) 2020年9月3日
これと同じ英才教育を先輩から受けました。
WUPCの作問チーム「とりあえずmasterにpush!w」
— ツバサ (@emtsu_ba) 2020年9月3日
僕「git怖い」
— かっつ WU/PC 9/12 (@_KKT89) 2020年9月3日
先輩「失敗した時に復旧できるのが強みだから失敗してもOK」←頼もしい
まあ何とかなった。
stack overflow回避について
よく分かっておりません(完)
flags=['-std=c++11','-O2','-fsplit-stack']
をジャッジに追加すると動くみたいな話になって、でもmacだとCEになるよ〜みたいな話になり、パソコン分からん人向けに
$ rime test
する前に、ソースコードの '-fsplit-stack'を一時的に消して手元で
$ ulimit -s unlimited
を叩いてから実行すると良いよと教えて貰ったのですが、
$ ulimit -s unlimited -bash: ulimit: stack size: cannot modify limit: Operation not permitted
困りました。
色々彷徨った結果このページに辿り着き、
取り敢えず見よう見まねで
$ ulimit -s 65532
を叩いてから実行したら無事テストが動いて get a 事なき。ちゃんとした対策法をよく分かってないですが次困ったらまたその時に考えます。
木の入力に対するvalidator
困ったことというか、これは単なるミスです。
そもそもvalidatorとは、与えられた入力の形式が正しいか、をチェックする為に用いられます。
そもそも入力のフォーマットは正しいか(変数の与えられる順番/行の末尾のスペースの有無/改行位置 等)
入力の条件は正しいか(値の大きさ、その他の条件)
例えばN頂点の木が与えられます、という入力でチェックすべき点は、
辺の数は 本与えられる
辺の情報 について、
与えられた入力は 頂点の木になっている
なんですが、1番目の条件に気を取られ と書いてしまったのを指摘されました。
この作業をしていた時、yukicoderでinputに関するミスが目立っていたこともあり、かなり念入りに作業したつもりでもこういう抜けが生じてしまいました(なので本当に複数人でチェックするべき)。
4番目の条件はUnionfind等を使って実装しました、他の問題のvalidatorでこの条件を調べて忘れている人もいたのでやはり複数人によるチェックは大切。