2020-01-01から1年間の記事一覧

CIで実機(Rapsberry Pi 3 Model b+, HiFive Unleashed board)のdebian imageを自動作成する

動機 linux kernelの設定やboot partitionのカスタマイズ等で実機用のimage(sdcardに焼くimage)を柔軟に作成したい。できればCIでcommitごとに自動で完成品のimageが所定の場所(e.g) AWS S3など)にuploadされてほしい。 今回は、aarch64(Rapsberry Pi 3 Mode…

Atcoder Problemsにある"Boot camp for Beginners"のmediumを100問完了した

はじめに Atcoder Problemsには、実はtrainingという物があって、easy, medium, hardの問題が100問設置されている。 場所は、https://kenkoooo.com/atcoder/#/training (おそらくloginする必要がある) 手始めに、mediumの問題を100問全て解いた。 最近は htt…

逆累積和の実装のコツ

累積和は競技プログラミングでは当たり前のようによく出てくるが、配列の逆順からの累積和(逆累積和ということにする)もたまーに出る。少しややこしいのでメモ。 逆累積和は練習問題に上げた問題の他に全方位木DPでも登場したりするので、まぁまぁ重要である…

ABC 169 C - Multiplication 3 にみる浮動小数点の取り扱い方

ABC 169 C - Multiplication 3の問題。 いいねが結構ついている記事 https://qiita.com/mod_poppo/items/910b5fb9303baf864bf7 を見たが、一番シンプルな実装が書かれていない。 int get_int2(int *a1, int *a2) { scanf("%d.%d", a1, a2); return 0; } 単純…

Aizu Online Judge(AOJ)の「データの集合とクエリ処理(DSL)」のコースを制覇した。

AOJの「データの集合とクエリ処理(DSL)」のコースをC言語で制覇した。 DSL全制覇! 問題 解答例 DSL_1_A 互いに素な集合 Union Find木 DSL_1_B 重み付きUnion Find木 重み付きUnion Find木 DSL_2_A Range Minimum Query(RMQ) セグメント木 DSL_2_B Range Sum…

しゃくとり法の実装のコツ

The Smallest Window I から考える。 int sum = 0; int left; int right = 0; for(left = 0; left < num; left++) { for(; right < num; right++) { if(sum >= limit) break; sum += arr[right]; } if(sum < limit) continue; #ifdef DEBUG printf("%d: [%d,…

セグメント木/遅延評価セグメント木の実装のコツ

はじめに セグメント木と遅延評価セグメント木を自分がどうやって空で実装しているのかをメモする。C言語での実装。 セグメント木が実装できれば、大体の場面で平衡二分探索木を実装する必要性がなくなり、競技プログラミング等で解ける問題の幅がぐっと広が…

permutationの実装例

調べてもまとまったものがないので。どちらも辞書順で並ぶ。C言語で実装する。 C++のnext_permutationのような実装 [1,2,4,3]の場合、2の後は逆順なので、2が繰り上がって3になる([1,3,*,*])。後は、*の部分の数字を昇順の数列で埋めれば良い。 ステップとし…

初中級者が解くべき過去問精選 100 問を全問解いてみた

e869120さんの初中級者が解くべき過去問精選 100 問をC言語で全問解いてみた。 他の人に対するアドバイス的な感想は note.com にかいた。 ここで書くのは、もう少し個人寄りの感想&分析。 木に関する問題(特に全ての点で答えを導出するような問題) は苦手だ…

qemu-riscv64-static + chroot + debootstrapでriscv環境を動作させる

chrootでriscv環境を動かす chroot + qemu-aarch64-staticでaarch64のバイナリがx86_64のPC上で動くことを最近知った。どうやるかというと # qemu-user-static(qemu-riscv64-static) is required for second stage debootstrap. see https://www.debian.org/…