h_nosonの日記

競プロ、CTFなど

VolgaCTF 2017 Quals write up

ctf

shpxというチームを組ませていただいてから初めてのCTF。 700点を取り、117位という結果で終わりました。 個人では150+50+200(共同)点。全体的に全然わからなかったので精進が必要です。 Write up VC A.pngとB.pngを重ねたら文字が見えたのでそれを読むだけ…

CTF for ビギナーズ Writeup & 参加記

ctf

CTF for ビギナーズに参加してきました。 解けない問題も多かったのですが運よく優勝しました。CTF for ビギナーズ 優勝しました pic.twitter.com/qjBqFGauV8— h_noson (@h_noson) January 29, 2017 Tシャツと本をいただきました。感謝 Writeup Misc 100 Wel…

Amazon Dash ButtonでAC数をカウントする

巷で流行りのAmazon Dash Buttonで何かしようということで,競プロのAC数を数えてみたいと思います. 環境 Amazon Dash Button Python 2.7.13(scapy,requests_oauthlib) ボタンが押されたことを検知 ボタンが押されたことを検知できないと何も始まらないので…

yukicoder No.429 CupShuffle

問題 No.429 CupShuffle - yukicoder N個のコップについて交換の仕方・最終配置が与えられる.ただし,X回目の交換の仕方の情報が抜けている.どのコップを交換したかを求める問題. 解法 解説を見るとX-1回目までswapを行い,一方K回目からX+1回目まで逆順…

CODE FESTIVAL 2016 qual B E - Lexicographical disorder

問題 E: Lexicographical disorder - CODE FESTIVAL 2016 qual B | AtCoder N個の文字列Siが与えられる.以下のクエリにQ回答える問題 整数kと{'a',...,'z'}を並び替えたp1,...,p26が与えられる.文字の順序がp1&ltp2<...&ltp26の時SkはN個の文字列の中で何…

yukicoder No.416 旅行会社

問題 No.416 旅行会社 - yukicoder N個の点とM本の辺が与えられ,CiとDiの間の辺を壊すというクエリがQ個与えられる.それぞれの点は何回目のクエリで点1から到達できなくなるか答える問題. 解法 辺を繋いで(この問題では壊して)ある点から到達できるかを…

Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset

問題 Problem - D - Codeforces 3つのクエリに答える. 1. xをmultiset Aに加える 2. xをmultiset Aから取り除く 3. を出力する 解法1 c++のmultisetを使って二分探索をする. xorをとった値が大きくなるように上位のbitから0か1か決めていけばいい.xを反転…

Codeforces Round #365 (Div. 2) C. Chris and Road

問題 Problem - C - Codeforces N角形のバスがやってくる.幅Wの道路をバスにぶつからずに渡るとき,最短の渡る時間を求める問題 解法 バスを固定すると人が右上に向かって移動することと等しくなる.もしぶつからずにそのまま行けるのであればそのまま行く…

AtCoder Grand Contest 002 D - Stamp Rally

問題 D: Stamp Rally - AtCoder Grand Contest 002 | AtCoder N頂点,M辺からなるグラフがあり,Q組の兄弟がスタンプラリーを行う.i番目の兄弟はそれぞれXi,Yiにいて合わせてZiのスタンプを集めたいと思っている.通ることになる辺の最大の番号を最小にす…

天下一プログラマーコンテスト2016予選A C

トポロジカルソートを初めて書いた気がするので記事に残そうと思う 問題 C: 山田山本問題 - 天下一プログラマーコンテスト2016予選A | AtCoder 文字列Ai,BiがN個ずつ与えられる.Ai 解法 トポロジカルソートを使う.AiとBiを左の文字から比較して初めて異な…

Codeforces Round #363 (Div. 2) E. LRU

問題 Problem - E - Codeforces N個のデータと容量Kのキャッシュがある.キャッシュのアルゴリズムにLRUが使われていて,無限のクエリが飛んできたとき,最後のキャッシュの状態にそれぞれのデータが含まれる確率はいくつか. 解法 簡単に言うと,キャッシュ…

yukicoder No.23 技の選択

問題 No.23 技の選択 - yukicoder 体力がの敵を 攻撃力の通常攻撃(必ず当たる) 攻撃力の必殺技(2/3の確率で当たる) の二つの攻撃を使って倒したい.最小の攻撃回数の期待値はいくつか. 解法 解説を見たら全部DPで解いていたが,通常攻撃の使う回数でル…

CodeChef July Challenge 2016 Chef and Rectangle Array

問題 https://www.codechef.com/problems/CHSQARR の行列が与えられる.個のクエリに対して以下の操作を行う. が与えられての範囲の数がすべて等しくなるように行列の要素の数字を増やすとき,増やす数の最小値を出力する 解法 範囲の和と範囲の最大値を使…

yukicoder No.103 素因数ゲーム リターンズ

問題 No.103 素因数ゲーム リターンズ - yukicoder 個の整数が与えられる. 一度の操作で任意の整数をその素因数で割ることができる.同じ素因数ならば2回まで同時に割れる. AliceとBobが交互に操作を行うとき,すべての整数をにできるのはどちらか.解法 …

Codeforces Round #355 (Div. 2) D. Vanya and Treasure

問題 Problem - D - Codeforces の部屋があり,それぞれ宝箱が置いてある.タイプの宝箱にはタイプの宝箱を開ける鍵が入っている.タイプの宝箱を開けるまでに移動する最小距離はいくつか.解法 単純にタイプごとにダイクストラを行っていたら間に合わない.…

yukicoder No.318 学学学学学

問題 No.318 学学学学学 - yukicoder 数列が与えられる.からについて順番に,同じ数で挟まれた数をで置き換える.書き換えられた後の数列を出力する問題.解法 双方向リストを使う.大きい数から順番に以下の操作を行う. 一番左のが,一番右のがとすると,…

vimでテンプレート読み込み

vim

テンプレートの読み込みはcppの場合、 autocmd BufNewFile *.cpp 0read $VIM/template/template.cpp とするのが普通だと思う。 しかしこの方法では、touchや>で作ったファイルやwindowsの新規作成で作ったファイルなどを編集する時に読み込みがされない。そ…

Codeforces Round #353 (Div. 2) C. Money Transfers

問題 Problem - C - Codeforces 行の銀行が円周上に並んでいる.隣の銀行に送金することが可能になっている.Aさんがそれぞれの銀行に口座を持っていて,お金を預けている(または借りている).預けているお金を隣の銀行に送金することを繰り返し,すべての…

Codeforces Round #352 (Div. 2) B. Different is Good

問題 Problem - B - Codeforces 文字列が与えられる.どの部分列をとっても同じ文字列が現れないように与えられた文字列を書き換えるとき,書き換える最小の文字数は幾つか.解法 部分列は1文字だけ考えればよい.つまり,すべて違う文字になるように書き換…

Codeforces Round #352 (Div. 2) A. Summer Camp

問題 Problem - A - Codeforces 123456789101112...といったように数字を1から並べた列がある.番目にくる数字は幾つか.解法 1から順に数字をstringに積んでいき,番目にきた数字を出力する.ソースコード #include <iostream> #include <vector> #include <algorithm> using namespace s</algorithm></vector></iostream>…

yukicoder No.174 カードゲーム(Hard)

問題 No.174 カードゲーム(Hard) - yukicoder A君とB君がカードでゲームを行う.1から1000までの数字が書かれたカードがあり,その中から枚ずつ配られる.試合は回あり,試合ごとにプレイヤーがカードを出していき,大きい数字を出したほうがその数字…

Codeforces Round #350 (Div. 2) F. Restore a Number

問題 Problem - F - Codeforces AさんはBさんにある数字にその数字の長さを右に付け足して送った.しかし,送られる途中で文字の順番がバラバラになってしまった.Aさんはその数字の部分列を覚えている.送った可能性のある数字の内,その部分列を含むような…

Codeforces Round #350 (Div. 2) E. Correct Bracket Sequence Editor

問題 Problem - E - Codeforces 対応する括弧が存在する括弧の列が与えられる.カーソルの初期位置と R : カーソルを右にずらす L : カーソルを左にずらす D : 今見ている括弧と対応する括弧の間の括弧を消して右に移動する という操作の列が与えられた時,…

Codeforces Round #350 (Div. 2) D1,D2. Magic Powder

問題 Problem - D1 - Codeforces クッキーを作ろうとしている.1つ作るのに種類の材料がずつ必要である.初めにずつ持っているとする.また,のマジックパウダーも持っており,そのパウダーはどの材料にも変えることができる.作れるクッキーの最大値はいく…

Codeforces Round #350 (Div. 2) C. Cinema

問題 Problem - C - Codeforces 人の人がいる.それぞれ使える言語は1つだけである.個の映画があり,音声と字幕は違う言語が使われている.1つの映画を全員で見るとき最も多くの人が満足できる映画はどれか. 音声に満足している人が等しいならば字幕で比…

Codeforces Round #350 (Div. 2) B. Game of Robots

問題 Problem - B - Codeforces ロボットが体いる.それぞれのロボットに番号が付けられている. 左のロボットから順番に,「ロボットの番号を一番左のロボットの番号から自分の番号まで言う」ことを行うとき,回目に言われるロボットの番号は幾つか.制約 …

Codeforces Round #350 (Div. 2) A. Holidays

問題 Problem - A - Codeforces 火星では1年が日続く.また,地球と同じように1週間は平日が5日,休日が2日ある. 1年の休日の数の最大値と最小値はいくつか.解法 7で割り,最大値を求めるときは余りに対してできるだけ休日から割り当て,最小値を求…

yukicoder No.241 出席番号(1)

問題 No.241 出席番号(1) - yukicoder 人の生徒がいて,それぞれ出席番号を割り振る. 1人1つ割り当てられたくない数字があるのでそれを避けるような割り振り方を1つ出力する問題.解法 2部マッチングで解く. 生徒から割り振ることのできる番号へ結び,…

yukicoder No.132 点と平面との距離

問題 No.132 点と平面との距離 - yukicoder 3次元上の点と個の点が与えられる. をから点を通る平面への距離とした時, を求める問題.解法 ベクトル,ベクトル,ベクトルに囲まれた三角錐の体積を求め,三角形の面積で割って3をかけることで,高さつまり…

yukicoder No.335 門松宝くじ

問題 No.335 門松宝くじ - yukicoder 宝くじが2枚か3枚与えられ,それぞれ数字が個書かれている. 当選日になると1つの宝くじにつきランダムに2つの数字が選ばれる.1つ数字を自由に選ぶことができ,その3つの数字で門松列が出来れば3つの数字の最大…