Scalaの文法をAOJ_ITP1を使って学んだ

タイトル通りのことをしたものの備忘録 環境構築はまた別 あと全部を埋めたわけではなく、かいつまんで解いていった形になっているので注意 ITP1_1_A // object Main extends App { // println("Hello World") // } object Main { def main(argv: Array[Stri…

operator[]を.at()にする

なにがしたいか std::vectorのoperator[]で.at()みたいに範囲外判定をしてほしい 方法 std::vectorのoperator[]を上書きする #include <iostream> #include <vector> using namespace std; template <> vector<int>::reference vector<int>::operator[](vector<int>::size_type k) { return th</int></int></int></vector></iostream>…

testlib.h で使われる pattern について

yukicoder などの作問作業で使われる testlib.h について軽く触ってみたので、備忘録も兼ねてのメモです inf.readLine などで使われている pattern とはなんぞやという記事になります どうやら、サンプルなどはあるらしいのですがちゃんとした説明はコードを…

コミットメッセージに制限を付ける

コミットメッセージに制限をつけたくないですか?僕はつけたいです ということで、Git フック を使用して実装してみました Git フック とは git コマンドの実行前後に指定したスクリプトを動かせる仕組みです .git/hooks/pre-commit や .git/hooks/commit-ms…

std::variant で再帰的に保持している値を取得する

はい、題名が若干怪しい日本語になってますが気にしないで下さい やりたいこと using V1 = std::variant<int, std::string>; using V2 = std::variant<char, V1>; using V3 = std::variant<double, V2>; int main() { V3 a = "aiueo"; // ここで std::get<std::string>(a); で std::string 型の値("aiueo") を取得</std::string></double,></char,></int,>…

std::variant で再帰的に保持している型を辿る

なにがしたいか using V1 = std::variant<int, std::string>; using V2 = std::variant<double, V1>; using V3 = std::variant<char, V2>; int main() { V3 v3 = "aiueo"; // ここで holds<std::string>(v3) == true; みたいなことがしたい // std::holds_alternative<std::string>(v3) ではエラーになってしまう // std::holds_</std::string></std::string></char,></double,></int,>…

最近作ったライブラリの話

本記事は Aizu Advent Calendar 2021 の 9 日目の記事になります adventar.org はじめに えー、当日になっても書くネタが決まってなかったので最近作った競技プログラミング用のライブラリを紹介していきたいと思います とりあえず直近のものからいくつか選…

オーバーロードされたメンバ関数の有無による条件分岐

メンバ関数の有無による条件分岐をしようと思って調べました。 それ自体はできたのですが、メンバ関数がオーバーロードされていると上手くいかなかったのでそれの解決策と実装例を載せたいと思います。 とりあえず、目標としてはイテレータを返り値とする fi…

オイラーのファイ関数とその別種について

まえがき ACPC 2021 day2 E で出たオイラーのファイ関数に似た何かについてまとめました。 既出ではない...?(知らないだけかも) 本題 オイラーのファイ関数は 1 から N までの自然数について N と互いに素なものの個数を求めるものです。 ここに X を追加…

動的なimos法について

まえがき atcoder.jp ABC221 - D によって苦しめられたので imos 法を勉強しました。 値域の大きな imos 法についての名称が定まっていなかったのでとりあえず、動的 imos 法と名付けます。(動的セグメント木っぽさがあったように感じたので) imos 法とは …

assert するときのメモ

c++ で assert をする際についでにメッセージを表示したいみたいなとき assert(("x == 0", x != 0));

NITIC CTF2 参加記

NITIC CTF2に参加しました 36時間コンテストで9/5 12:00 - 9/6 24:00 (UTC+9)の間に開催されました #nitic_ctf_2 本日昼の12時から開催です!プログラミング未経験の中学生でも解ける問題から、CTF上級者でも難しいと思われる問題まで用意しております〜。参…

水になった、色変記事

入水しました!!!(激遅) 当時高校2年生の2019/2/3に始めてから水色になることができました。 茶色の期間が長く、伸び悩んでいた時期もありましたがなんとか水色に到達して感無量です。 なぜか、茶から緑になるまでよりも緑から水色になるまでの方が早か…

快適なrangeマクロ

僕は普段c++を使って競技プログラミングをしているのですが、その中でrepマクロを使う機会が多くあります。ふと、pythonのrangeのように引数によってその効果が変わるようなrepマクロに近い何かが欲しいなと思ったので記事を参考に作ってみました #define GE…

128ビット整数をいい感じに使えるライブラリを作ってみた(C++)

作ってみたとは書いたものの、肝心の入出力の部分はこちらの記事のコードをがっつりコピペをさせていただきました。 kenkoooo.hatenablog.com この場で感謝します。感謝。 さて、では何を作ったのかというと、入出力に加えて四則演算と剰余を行えるようにし…

vectorと単項の演算を作ってみた

0-indexedのものを1-indexedにして出力したいなぁってなったときにわざわざループを回して+1したりvalarrayにおきかえたりするのはひと手間がかかると感じたので演算子を作った operator+= template <typename T> void operator+=(vector<T> &vs, T x){ for(T &v:vs) v += x</t></typename>…

デバッグ用の可変長引数関数を作ってみた(C++)

目標の形 int main(){ int abc=10; int hoge=5; string str="aiueo"; debug(abc,hoge,str); } // 出力結果 abc:10 hoge:5 str:aiueo debugはマクロでも関数でもなんでも良いから変数名とその値を空白区切りで出力してほしかった(できれば標準エラー出力) …

goto文は使ってもいいんじゃないかと思い始めてきた話

atcoder.jp goto文は多重ループから抜け出す場合は使用することを推奨されている でもほんとにgoto文を使ってもいいのか?とおもって多重ループを抜け出すときの別の案を考えてみた 条件を満たしたらたくさんbreak int n=10; bool flg=false; for(int i=0;i

sshのknown_hostsが変わった

sshについて初期設定をしてから何も触ってないのでよくわからないまま動かなくなっていた。 原因 ssh先のなんかが変わったらしい。 ISTC->遠隔利用の説明->一番下のkeygenのとこをknown_hostsに入れる?

string::nposについて(c++)

知らずに使ってた string::nposはstring型のfindで見つからなかったときに返ってくる値です。 int main(){ string s = "aaa"; if(s.find('b') == string::npos) cout << "Not found" << endl; } Not found この前、int型にstring::nposを入れたら-1だったの…

using namespace std;を使わずに指定したものだけstd::を外す(c++)

using namespace std;はよろしくないから使いたくないけど、std::coutとかって書くのが嫌だなってとき #include <bits/stdc++.h> using std::cin; using std::cout; using std::endl; int main(){ int n; cin >> n; cout << n << endl; } これでよし</bits/stdc++.h>

libraryホームページ作成で詰まったこと

方針が違う 人力dfsみたいなことをした vue.jsのmarked、vue-routerを使おう ↓できないので訂正 nuxt.jsのmarkdown-itを使おう ↓できないので訂正 nuxt.jsの@nuxt/contentを使おう 何ができるか知らないからとりあえず探索していくしかない気がする。nuxt.js…

C++のmapで後ろからループを回すとき

map<int,int> mp; for(auto it = mp.begin(); it != mp.end(); it++){ // hoge } map<int,int> mp; for(auto val : mp){ // hoge } 前からのループは書けるが後ろからのループはどうやって書いたらいいのか分からなかったのですが、ちょうどいいのを見つけました。 https://cpp</int,int></int,int>…

累積和の変数名の候補

累積和を書くときに変数名を何にするかで迷いがち 候補1「r」 ruisekiの頭文字です 良い点 一文字で書きやすい 悪い点 基本的に英語から取っている変数名の中でこれだけローマ字なのが納得いかない rightのrと被る 候補2「rui」 ruisekiの頭3文字です 良い点…

VScodeで変数に色がつかないとき

コンパイルはできるし、おかしいところもないのに変数に色がつかないときがたまにあります。 そういうときは Windowsの人はCtrl+Shift+P Macの人はCommand+P でコマンドパレットを開いて、Reloadをしましょう。そうすれば変数に色がつくと思います。 原因は…

vectorのresizeとassignの違い

c++のvectorではresizeとassignという機能があります。 僕は今までresizeではサイズの指定だけ、assignはサイズと中身、とイメージしていたんですがresizeでも要素を指定できることを知ったので忘れないために違いを書いておこうと思います。 注意※簡単のた…

互除法

ユークリッドの互除法 ユークリッドの互除法の計算量 gcd(a,b)としたときに より簡単にN=max(a,b)とすると、です。 int gcd(int a, int b){ if( b == 0 ) return a; return gcd(b, a%b); } なぜlogが出てくるのか 例えば、計算量にlogが出てくるものといえば…

レポートで気をつけること

色んな警察がいる 色んな警察が息をひそめているので、ひっかからないようにします。個人的にこれで大丈夫だろうと思って書いているものなので本当に正しいかどうかはわかりません。 「~たり、~たり」警察 よくありがちなやつです。 休日にはお菓子を食べ…

学校のパソコンを使わずに学校の印刷機で印刷する豆知識。

備忘録。 印刷するために学校のパソコンにログインして学校のパソコンに書類を送って...みたいなことがだるい。 http://std1pr1.u-aizu.ac.jp にアクセスすれば、pdf限定だけど自分のパソコンもしくは携帯から印刷することができる。std2pr2とかにすると演習…

学校のパソコンにVNCを使ってファイルを送る

学校のパソコンにVNCを使ってファイルを送る ※注VNCを使えること前提で話を進めます。 sendanywhere ↑こちらのサイトでファイルを送ることができます。サイズが大きすぎるフォルダとかはzipで圧縮して送りましょう。