2023-06-01から1ヶ月間の記事一覧

atcoder ABC307 D - Mismatched Parenthesesの勉強

atcoder.jp・参考: Submission #42910610 - Tokio Marine & Nichido Fire Insurance Programming Contest 2023(AtCoder Beginner Contest 307) ・考え方:'('が出てきたらある値(仮にaとする)を+1して、')'が出てきたとき0 n=int(input()) s=input() ans=[…

atcoder ABC138 D - Ki

atcoder.jp・参考: AtCoder ABC 138 D - Ki (緑色, 400 点) - けんちょんの競プロ精進記録Submission #7012551 - AtCoder Beginner Contest 138 ・説明:いもす法を木でやれば良い。いもす法については いもす法 - いもす研 (imos laboratory) を参考。 注…

atcoder ARC 162 Ekiden Race

atcoder.jp参考: [ARC162] A - Ekiden Race|syamashi・基本的には参考記事の考え方でやる。しかし、往路(index)と総合順位を対応させて総合順位でソートする必要があり、それをenumarateで実装している。 t=int(input()) for _ in range(t): n=int(input()…

atcoder ABC 306 D - Poisonous Full-Courseの間違い例と正解例

atcoder.jp・解説: Editorial - Toyota Programming Contest 2023#3(AtCoder Beginner Contest 306) ・反省点:食べたときと食べなかったときの遷移は別々にやるとWA。食べたときの遷移をして、食べたとき(dp[i+1][0],dp[i+1][1])と食べなかったとき(dp[…

atcoder ABC 306 C - Centersの解説

atcoder.jp・説明: cntというリストのa[i]番目(cnt[a[i]])を+1して2になったらa[i]を出力する。つまり前から数えてa[i]が2回出たタイミングでa[i]を出力する。 n=int(input()) a=list(map(int,input().split())) cnt=[0 for _ in range(n+1)] for i in rang…

c++のfor文をpythonで書く。

c++の for (int i=1;i<=n;i*=6) //何らかの処理というfor文をpythonで書くと i=1 while i<=n: #何らかの処理 i*=6 とかける。c++のほうがこの手のfor文は簡単にかける。・参考問題 atcoder.jp

atcoder ABC303 D - Shift vs. CapsLock の勉強

atcoder.jp・参考: drken1215.hatenablog.com ・やり方: 基本的には上の記事を参考。jは0でcapslockキーがoff,1でon。dp[i][j]はi文字でのjがON,OFFであったときにかかる時間。 capslockの遷移はdp[i][0]=min(dp[i][0],dp[i][1]+Z)、dp[i][1]=min(dp[i][1]…

atcoder abc99 Strange Bankのpythonの実装

atcoder.jp ・内容: 貰う DP と配る DP、メモ化再帰、個数制限なしナップサック問題 - Qiita の記事のbfsでの実装をpythonでやった。 ・説明:0から1,6,6*6,,,9,9*9,,,,の辺を取ったグラフと見ればbfsで求められる。詳しくは上の記事を参考。c++ではfor文で…

atcoder ABC D - Restricted Permutationの勉強

問題: atcoder.jp参考:https://qiita.com/sano192/items/c301aa0f8c5680eea429 https://zenn.dev/fjnkt98/articles/c9b21e90150e7b・前提知識:トポロジカルソートについて知っている(アルゴ式などを参考)。dfsについても(けんちょんさんのqiitaの記事など…

AtCoder Beginner Contest 305 ABC D - Sleep Logの勉強

atcoder.jp・参考: Submission #42147989 - KYOCERA Programming Contest 2023(AtCoder Beginner Contest 305) ・考え方:前処理をしてクエリの中の処理を軽くする。二分探索を使うのでスライスにおけるAのi番目までの睡眠時間を前処理として行えば良い。…

AtCoder Beginner Contest 305 ABC C - Snuke the Cookie Picker の解説

atcoder.jp・説明:与えられたマップに対して行ごとと列ごとに'#'の数を求める。'#'の数は必ずどこかの行、列で他の行、列より1小さい。よって行、列毎に'#'の最大値を取り、その数-1の値がある行と列を求めれば良い。 ・実装例 h,w=map(int,input().split()…

AtCoder Beginner Contest 305 ABC B - ABCDEFGの解説

atcoder.jp#説明:アルファベットと数字の対応を辞書型で記憶する。ここでc[p]はcのキーがpのvalueという意味。あとはvalue同士の差を取れば良い。・実装例 p,q=map(str,input().split()) c={'A':0,'B':3,'C':4,'D':8,'E':9,'F':14,'G':23} print(abs(c[q]-…

AOJ pythonでダイクストラ法の勉強

・問題: onlinejudge.u-aizu.ac.jp・ダイクストラ法の詳しい解説:グラフ理論⑤(ダイクストラのアルゴリズム) - YouTube・やること:ダイクストラ法のプログラムの勉強のため上のAOJの問題を解く。・プログラムの説明:はじめに辺がないときの処理をする。ま…

atcoder arc C - 器物損壊!高橋君の勉強

・問題: atcoder.jp・参考: Submission #16162979 - AtCoder Regular Contest 005 AtCoder ARC 005 C - 器物損壊!高橋君 (0-1 BFS) (水色) - けんちょんの競プロ精進記録・0-1BFS: 01-BFSのちょっと丁寧な解説 - ARMERIA・ダイクストラ法: グラフ理論⑤(…

atcoder Darker and Darkerの勉強

・問題 atcoder.jp ・参考 AtCoder AGC 033 A - Darker and Darker (緑色, 300 点) - けんちょんの競プロ精進記録 ・考えたこと:DFSかBFSを使うことは分かったが具体的なやり方は思いつかなかった。上の記事を参考にして、スタートを'#'としてbfsをする。'#…

AtCoder Beginner Contest 304 D - A Piece of Cakeの勉強

・問題: atcoder.jp ・参考: https://atcoder.jp/contests/abc304/submissions/41948730 https://atcoder.jp/contests/abc304/submissions/41961121 ・説明 a,bの線でケーキを切るのでa,bの格子(切り分けられたケーキ)の中でいちごの位置を二分探索してそ…

AtCoder Beginner Contest 304 C - Virusの解答

atcoder.jp・説明:dequeを使って実装する。dequeに0人目(1人目)を入れて、感染した人をif d>=math.sqrt(dx*dx+dy*dy):の条件分岐でdequeに入れていく。 これをwhileでdequeが空になるまでやる。また感染しているかどうかはflagで管理する(例えばflag[i]=1だ…

幅優先探索の問題 atcoder D - Grid Repaintingを解く

・問題: atcoder.jp ・参考文献: スタックとキューを極める! 〜 考え方と使い所を特集 〜 - Qiita ・説明:幅優先探索を使ってとく。詳しくは参考文献を参照。プログラムの説明は'#'の数(kabe)とスタートを含むゴールまでの最短距離(dist[gx][gy]+1)を全…

atcoder E - チーズ (Cheese) のpythonでの解答

atcoder.jp・注意点:TLEする可能性があるのでPypyで提出してください。・説明:幅優先探索を使ってとく。プログラムの流れはgoalにチーズの位置を入れて、チーズの位置をゴール(gx,gy)、次のループでゴールをスタートにして(sx=gx,sy=gy)幅優先探索をする。…