2019-05-01から1ヶ月間の記事一覧

C. The Party and Sweets

Quiz https://codeforces.com/contest/1159/problem/C Submission https://codeforces.com/contest/1159/submission/54040877 問題の意味 A男がn人 女がm人います各男が各女にそれぞれキャンディをいくつかずつ渡します男iについて、(1人に渡したキャンディ…

C++で長い文字列をコードに埋め込む

#include<bits/stdc++.h> using namespace std; #define pn(s) cout << (#s) << " " << (s) << endl string s = "aaaa" "bbbb" "cccc"; int main(){ pn(s); return 0; } 1行で書いてもいいけれど、改行したいときは上記のように書けばいい</bits/stdc++.h>

pythonでsqrt(2)の値を10000桁まで求める

Quiz https://yukicoder.me/problems/no/3006 Submission https://yukicoder.me/submissions/346488 Code import decimal decimal.getcontext().prec = 10000 d = decimal.Decimal(2) s = str(d.sqrt()) n = str(input()) i = s.find(n) print(i-1) 自分用メ…

1163B2 - Cat Party (Hard Edition)

Quiz https://codeforces.com/contest/1163/problem/B2 Submit https://codeforces.com/contest/1163/submission/54007477 問題設定 配列Aの前からx個を見て、その中の1つだけを除外して、他の値の頻度が同じなら、そのxはOK [2,2,1,1,5,4,4]なら5を除外すれ…

C2. Power Transmission (Hard Edition)

Quiz https://codeforces.com/contest/1163/problem/C2 Submit https://codeforces.com/contest/1163/submission/54005559 解法 2点から直線が求まるので、係数a, b, cで表現する この時、係数を定数倍すると一致するものに注意する (a, b, c) = (1, 2, 3), …

D - DivRem Number 約数列挙 約数一覧

Quiz https://atcoder.jp/contests/diverta2019/tasks/diverta2019_d Submit コンテスト中 https://atcoder.jp/contests/diverta2019/submissions/5361687 コンテスト後 整理ver https://atcoder.jp/contests/diverta2019/submissions/5369617 解法 8 = 3x2 …

巨大な数のmod (10000桁とか)

別名、(数値)文字列のmodとも言えるかも 10000桁などの数値はlong longなどでは受け取れない 文字列で受け取るしかない 1文字ずつ処理していけばいい ll string_mod(string s, ll mod){ ll rest = 0; for(char c : s){ ll v = c-'0'; rest = (rest*10 + v) %…

Grundy数を初めて使ってみた Day 1: Game of Stones

Quiz https://www.hackerrank.com/contests/5-days-of-game-theory/challenges/a-game-of-stones/problem AC (要ログイン) https://www.hackerrank.com/contests/5-days-of-game-theory/challenges/a-game-of-stones/submissions/code/1314174009 計算量 長…

木の直径(重みあり) Diameter of a Tree

Quiz http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=GRL_5_A AC http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=3544272#1 補足 前回記事でエッジの重み1バージョンを書いたが、今回はエッジの重みが必要 ほぼ変更は必要なかった。bfs…

木の直径 (エッジコスト1バージョン)

Quiz https://atcoder.jp/contests/agc033/tasks/agc033_c Submission https://atcoder.jp/contests/agc033/submissions/5293995 木の直径 上記問題で木の直径を求める必要があったのでbfsで求めた C, 直径という大局から見るのかぁ— peroon_cp (@peroon_cp)…

E. Thanos Nim

Quiz https://codeforces.com/contest/1162/problem/E Submission https://codeforces.com/contest/1162/submission/53797164 解法 まず、1つでも空にしてしまうと負けである 次のターンに相手がN/2個を空にしてきて、自分はN/2個取れないので負ける 1, 1, 1…

C. Hide and Seek

Quiz https://codeforces.com/contest/1162/problem/C Submission https://codeforces.com/contest/1162/submission/53758184 考察 値 i がguess値と同じ時、1度だけ(i-1, i+1に)「分裂」できるとする すでに分裂済みで、またguess値と当たった時「捕まる」…

XORは分配法則が成り立たないので注意

E - Enumerate Xor Sum https://atcoder.jp/contests/cpsco2019-s3/tasks/cpsco2019_s3_e 上の問題を問いている時、上記の分配法則が成り立つと勘違いして進めた結果、合わなかった XORに掛け算のようなイメージを持って分配法則を使ったりしてはいけない

多点BFS

そんなにメジャーな言葉ではないみたい そういう発想で解けるのはこれ https://atcoder.jp/contests/agc033/tasks/agc033_a http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0623 多点BFSは、始点を一つ作って、そこからコスト0の辺が多点(今回だ…

C - Coins

Quiz https://atcoder.jp/contests/cpsco2019-s1/tasks/cpsco2019_s1_c 観察 Kは最大6 32C6 = 906192 nCkのパターンを全探索すればいい フラグでnCkを全探索する方法は? next_permutation bit (蟻本 v2 p144) 解法1 全探索 next_permutation {0, 0, 0, 1, 1…

No.622 点と三角柱の内外判定

Quiz https://yukicoder.me/problems/no/622 Submission https://yukicoder.me/submissions/344527 解法 ABC平面にDを正射影する その点をEとする ABCEが同一平面上にいるので、外積で三角形の内部判定をする 補足 3次元での面への正射影は面の垂直ベクトル…

pythonで多倍長小数を使うまで (Mac)

結論 Python3にする decimalを使う 環境 Mac デフォルトではPython 2.7 anacondaでPython 3.5が入っている How to change env of anaconda conda activate py35 まず、なぜ3.5を使おうとしているのかと言うと、Python 2.7ではdecimalが正しい値を返してくれ…

文字列 分割 C++ split

vector<string> split_str(string s, char c){ vector<string> ret; stringstream ss; FOR(i, 0, s.size()){ if(s[i]==c){ ret.push_back(ss.str()); ss.str(""); ss.clear(); }else{ ss << s[i]; } } ret.push_back(ss.str()); return ret; } How to use vector<string> S = split_s</string></string></string>…

最大全域木 Maximum spanning tree

Quiz https://atcoder.jp/contests/iroha2019-day2/tasks/iroha2019_day2_d Submit https://atcoder.jp/contests/iroha2019-day2/submissions/5220268 補足 普通必要とされるのは「最小」全域木です クラスカル法で最大全域木も求めることができます 方法は…

F - 総入れ替え

Quiz https://atcoder.jp/contests/iroha2019-day2/tasks/iroha2019_day2_f Submit https://atcoder.jp/contests/iroha2019-day2/submissions/5216485 解法 公式解説と違う解き方で解いたので書いておく まず、くじ引きはいつ引いても平等というのがある た…

最大流 max flow

使った問題 https://atcoder.jp/contests/soundhound2018/submissions/4578400 ライブラリ TODO 理解する方法 蟻本第二版 p188を読む プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?作…

座標圧縮 Coordinate compression

方法 検索すれば豊富に見つかる 使いどころ 座標の範囲が109などで走査したらTLEする 一方で座標データ数が105などで座標圧縮したら間に合う 要素 配列・ソート 二分探索, lower_bound それを使う問題たち Manhattan Crepe Cart (Google Code Jam) https://c…

線分の交差判定 c++ Judgment of intersection of line segments

http://perogram.hateblo.jp/entry/abc016_4 この記事を関数として切り出した ※1番上のを安易に使うと誤判定する場合があります 関数(追記:❌) // 交差判定セット typedef complex<double> C; double cross(C a, C b){ return a.real() * b.imag() - a.imag() * b.</double>…