西瓜の備忘録

競プロとかで気づいたこととか考察を書き留めるためのブログ

C++

天下一プロコン2017 D

天下一プロコンは調子乗ってBeginnerじゃないほう参加したら見事に爆死しました Cはともかく、Dは自力で解けなかったので解法をメモ tenka1-2017.contest.atcoder.jp 問題概要:N個の非負整数がある それぞれの値と価値はAi,Biである Aiの任意の組み合わせの…

競プロで頻出の初歩的な(?)テクニック

使い所は多いけれど説明・紹介されることはあまりないようなテクニックのメモ ほぼ全ての言語で使えるもの 整数での切り捨て切り上げ 自然数A,Bで除算をするとき、大半の言語では切り捨てられることを利用するテク ex) 切り捨て A/B 切り上げ (A+B-1) / B bi…

にぶたん

何故かめぐる式二分探索をバグらせてしまったのでメモ めぐる式二分探索とは(自分がそう呼んでるだけだが)↓を参照 【めぐるのアルゴリズム講座】二分探索(整数)の書き方難しさ:4 pic.twitter.com/LGLbkS0D7l — 因幡めぐる@競技プログラミング (@meguru…

ARC069Dを解いた

解くのに無駄に時間がかかったので自分への戒めに解説を載せておく arc069.contest.atcoder.jp 問題概要は省略 以下、狼と羊をそれぞれWとSと表記する siがoのとき動物列をaiとすると {ai-1,ai,ai+1} = {SSS},{WSW},{SWW},{WWS} xのとき {ai-1,ai,ai+1} = {S…

ABC073

A問題 今回はWAしなかった(ドヤ顔 文字列でs[0],s[1]調べるだけ ソースコードは省略 B問題 最初bool配列用意して席を埋めていくトンチンカンなコードを書いた 席は連続、同じ席に二人以上座らないという制約があるので r-l+1の総和を取れば良い C問題 概要…

ABC072

A問題 最初max(A-B,0)をmin(A-B,0)と書いて1WA ソースコードは省略 B問題 文字列の偶数文字目(1-indexed)を抜き取って出力 C問題 概要:長さNの整数列に±1(or0)したとき同じ数にできる数の個数の最大値を求めよ 制約が0≦Ai<10^5と小さいので素直に10^5の大…

yukicoder No.92を解いた

No.92 逃走経路 - yukicoder DPで解いた dp[i][j]:=i(

競プロで使えそうな関数とか

タイトル通り 関数 std::min() std::max() 言わずと知れた最小最大を返す関数 DPを更新するときとかによく使う ex)dp[i][j] = max(dp[i-1][j],dp[i-1][j-A[i]]) ナップザックDP std::sort() ソートを一から実装する必要がないときは普通これを使う ex)sort(a…

yukicoder No.7を解いた

No.7 プライムナンバーゲーム - yukicoder 21言ったら負けのゲームのように相手に確実に負けとなる数を渡せるかどうかを配列作って管理すれば良い

ABCかと思ったらARCだった(ARC080)

タイトル通り 何を言ってるのか わからねーと思うが ABC参加しようと思ってARC参加ボタン押してました 初めて1時間でD問まで解けたのに悲しい 以下自分のガバガバ解答 C 長さNの数列与えられて隣り合う2数の積が4の倍数になるように並び替えできるかという…

AtCoderのTDC-Fを解いた

tdpc.contest.atcoder.jp タイトル通り TLでDP頑張ってる人に触発されて解けそうなDP問題探してたらいい感じのを見つけたのでがんばって解いた 内容はフィボナッチ数列の拡張(直前K項の和)みたいな感じ 累積和取ってi<K-1なら直前の総和 i=K-1なら総和-1 i=Kなら総和 i>Kなら総和からK項前の和を引いた数って</k-1なら直前の総和>…

テンプレートのメモ+α

いちいち#include<bits/stdc++.h>(ryって書くのはめんどくさいのでテンプレートを作った(不便になったら逐次改良していく予定 念のためのVSCodeでのテンプレート作成の手順のメモ ファイル->基本設定->ユーザースニペット と進んでテンプレートを作りたい言語を選択 1</bits/stdc++.h>…