' P '

whatever I will forget

AtCoder

グラフ系の問題: ABC166 C - Peaks / ABC068 C - Cat Snuke and a Voyage

問題1 atcoder.jp 問題タイプ グラフ グラフの問題に慣れるのに良い問題. それぞれの展望台と繋がっている道のグラフを作って、それらを比較する. 気を付けるところ 展望台Nから展望台N'を比較する際に、道がある全ての展望台より自展望台が高い場合のみ、co…

区間分割・連長圧縮系: ABC143 C - Slimes

概要 左から文字列を1つずつ確認して、次の文字と同じか、同じではないかを確認する問題. 最終的にはユニークなCharを連結して出力する. 10 aabbbbaaca 答え abaca atcoder.jp 問題タイプ 区間分割・連長圧縮と呼ばれるアルゴリズム. ランレングス圧縮、RLE…

ABC137 C - Green Bin

概要 atcoder.jp 問題形式 連想配列 解法の中での重要な要素 Pythonでは、通常のdictとdefaultdictが存在する. 簡単に違いをまとめると: dict keyが存在しない場合、エラーになってしまう. 例えば、dict[key] += 1をした際に、keyがない場合はエラーになるの…

ABC157 C - Guess The Number

概要 atcoder.jp 問題タイプ 全探索. 1 <= N <= 3なので、最大3桁の999までの数字のどれかが答えになる(答えがある場合). 解法 1-3桁の999までの数字で与えられた桁数の数字とマッチする一番小さい数字を求める問題. 1桁目が7、3桁目が2である最低の数字は…

アルゴリズム: Merge Sort & Quick Sort

Merge Sort 概要 arrayを二分していって値の比較をしていくSortアルゴリズム 計算量は O(N log(N)). 詳細 www.youtube.com サンプル問題 Kth Largest Element in an Array - LeetCode サンプルコード class Solution: def findKthLargest(self, nums: List[i…

ABC177 B - Substring

問題 atcoder.jp わからん ぱっと解説コードを見たときにイマイチわからない. 図解してもわかりにくい.... やっていること 解説動画のコードのほうが直感的にわかりやすい(これ大事). Sの現在のindex + Tのlength > Sのlengthの場合、探索を行う必要はない…

ABC221 B - Typo: String内のCharの交換

問題 atcoder.jp 要は隣り合わせのCharを交換しろってこと これ情けないですがわかりませんでした..... たとえば、隣り合わせの2文字をSliceして、交換して、残った文字をくっつける回答を考えてたのですが、前につけるのか後ろにつけるのかの判定がややこし…

Atcoder 典型90問 076 Cake Cut

問題 atcoder.jp 公式解説を見ても右側の例が何を言ってるのか理解できない... 解き方 まずは、問題が円形の要素であること。 これは単純に要素を*2するだけなのでわかる。 次に隣り合う要素の和が全体和の÷10と一致するか?というところ。 累積和 累積和が…

ABC113 C - ID

問題 atcoder.jp パッと見たとき例題が全く意味がわかりませんでした。 昇順で出力せよとなっているけど、どういうこと??? 解説 要は同じ県が登場した場合はその出場回数を計算・取得する必要がある。 それを求めるために一度sortを行い、同じ県で登場年…

n進数から10進数への変換

問題1 atcoder.jp 数学の解き方 数値の1桁目 * n進数^数値の桁数-1 + 数値の2桁目 * n進数^数値の桁数-2 + ... + 数値のx桁目 * n進数0 juken-mikata.net mankozooyork.hatenablog.com 問題2 atcoder.jp 8進数から9進数に変更する問題 解き方としては8進数 →…

Python 文字列の反転

問題 atcoder.jp 無理矢理やるなら たぶんぎりぎりACの処理速度() Number % 10してstr化して、int化して比較 楽な方法 pythonでは、strにしてからnum[::-1]としたら反転が可能 なので上記やって比較するだけ indexを指定した反転も可能 s[:1] # prefix s[1…

小数点の誤差を避けるには

問題 atcoder.jp A * 0.08とB * 0.1をする 普通にやると WAになる int()を使う場合 今回は小数点以下を切り捨てでよいので実はint()変換するだけでよい pythonのint()変換は整数値のみを返す codechacha.com 王道 小数点を掛け算すると誤差が怖い場合は A * …

ABC 093 B - Small and Large Integers

問題 与えられた数値の幅から、与えられた幅の小さい値、大きい値を昇順で出力せよ、という問題 3~8の数値幅で、2と与えられたら、3,4,7,8と出力する atcoder.jp TLE まずは最初、重複を省いたlistを作って、それぞれ小さい側の幅、大きい側の幅でLoopさせて…

最小金種の支払いアルゴリズム

背景 お釣りができないように払うという問題の場合 atcoder.jp 考え方 支払い金額 / 一番大きい金種 = 払った金種の枚数 支払い金額 % 払った金種 = 残りの支払い金額 1-2を繰り返し 払った金種の枚数の合計 = 最小金種支払い 例 2021円を払う. 1. 2021 / 10…

python 10進数の各桁の足し算

atcoder.jp 解法1 よく出現するものであるので関数を作っておく n, a, b = map(int, input().split()) def calc_num_sum(number): sum = 0 while (number > 0): sum += number % 10 number //= 10 return sum ans = 0 for i in range(1, n+1): if a <= calc_…

ABC 198 B - Palindrome with leading zeros (文字列操作系)

mankozooyork.hatenablog.com 問題文をしっかり読んでないミス Nを十進法で表した文字列の先頭に0個以上の 0 をつけることで... 文字列の後ろにも"0"をつけるパターンとか考えてて解けず... となったが先頭だけでよかったのか... 乙すぎ.... StringBuilder完…

C - Doubled

atcoder.jp 最悪なくらい難しく考えててWA 考えたこと 規則性の問題だと思ってその解き方をして結局解けず 11 22 33 ... 99 N >100 => 9個 1010 1111 1212 ... 1919 ... 9191 9292 9393 ... 9999 9*10なので、 N>1000 => 9*10 => 90個 N>100000 => 9*10*10 =…

C - Doubled

C - Doubled 最悪なくらい難しく考えててWA #考えたこと 規則性の問題だと思ってその解き方をして結局解けず 11 22 33 ... 99 N >100 => 9個 1010 1111 1212 ... 1919 ... 9191 9292 9393 ... 9999 9*10なので、 N>1000 => 90個 N>100000 => 91010 => 900個…

C - Unexpressed

問題 atcoder.jp これは解きたかったなぁ、、 素朴に素因数分解を1-NまでやってるとTLEになるのは当たり前なんですが、 割っていく問題ではなく、二乗できるかどうか、なのでi*iの値がNより小さいか同値であればそれはNGの数字としちゃっていいんですよね。 …

C - Digital Graffiti

問題 atcoder.jp 深く考えすぎて全くわからず! 意外と単純な問題らしい... こういうのを三角形として捉えなくてよいようです。 下記は多角形として捉えたらよいようです。 解き方 自身の位置から自分の位置、左、左上、上をみて#になっていたらその数をカウ…

B - Billiards 考え方

B - Billiards えっえっ?解説読んでも見ても全く意味不明なんですけど、、 って方他にいないですかね。(いないか) 僕は全くもって意味不明だったのでメモします。 まず、この問題を特には数学2の知識が必要です。 内分点の求め方 詳しくは、下記の動画を…

数学、計算量考慮系 B - Trapezoid Sum

B - Trapezoid Sum Bが解けなかったよ。。というわけで僕みたいなアホにもわかる解説を書いてみる。 計算量考慮しないといけないけど これは数学の公式を覚えてるか、変動する上限下限に対応できるいもす法を知ってるかじゃないとなので、まあいまのレベルじ…

計算量考慮編(数式の変形)ABC179 C - A x B + C

atcoder.jp うーんこういう問題、絶対解法思いつきませんw 思考の流れ まず全探索ではないことはすぐわかった(Nが106のため、O(N3)になる) なので、A,B,Cの約数列挙かなー? ギブアップ 次に活かしたい点 こういう問題は、下記がポイントかも 式をとりあ…

1000000007系: 式変換

これはまたどこかで使えそうなので記事化 C - Sum of product of pairs 制約のが <= 105 なので、まあ二重ループは使えません、と。 で、どうしたらいいかが全くわからず、なんか累積和っぽいなーと思いつつも結局わかりませんでした。 以前何度か読んだ下記…

三角形の成立条件

全く持って忘れてましたよね。。 参考 integraldx.info a,b,cの三辺の三角形の場合、 a < b + c, b < a + c, c < a + bが成立していればOK。 かつ、もしaの辺が一番長いとわかっている場合は、a < b + cのみ確認を行えばいいらしい。 問題 atcoder.jp 提出し…

時計の時針と分針からなる角度を求める

数学?算数の問題ですね。。 単純に下記を覚える [時針]1分ごとに変わる角度: 0.5度 (360/12*60) [分針]1分ごとに変わる角度: 6度 (360/60) double hDegree = (h*60+m)*0.5; double mDegree = m*6; double degree = Math.abs(hDegree-mDegree); 参考 dorilu.…

mod系

C - Repsept 一応解説でもCにしてはムズイとなってたのでよしとする(?)ダメだけど、、 下記のmodの世界での規則系に気付けるかどうか。 その世界でもn*10+7してmod kした値は単純にn%kした答えと同じになる 単純にn%kした場合、ループの最大回数を何にし…

ビット全探索

C問題が解けるためには避けては通れない道っぽい.... 2進数とか16進数とかすごい嫌いw まずは理解できるまで下記を読みまくるのがいい気がする. 参考 qiita.com qiita.com drken1215.hatenablog.com lovedvoraklayout.hatenablog.com ちなみに、ABC167のC問…

全探索系

とりあえず全探索に弱い。 何も考えずにできるものであってもできないかもしれない。というわけでまとめあげ。 B - ATCoder 注記に書いてあることがよく理解できなかった... 単にACGTのどれかの文字列を発見したら、そのindexからどれだけの長さの文字列が最…

パリティ(偶奇性)

パリティとは 偶数と奇数に関する性質のことを指すらしい。(全くしらん) C - Same Integers atcoder.jp 全くわからず。なんとなーく3つの数字の和が関係している&3つの数字の最大値は関係があるような気はしたけど、 3つの値の最大値*3(または最大値+1*3…