Codeforces Round #763 (Div. 2) Dまで四完。
— titia (@titia_til) December 28, 2021
B r-lが小さい順にソート
C 決め打ち二分探索+後ろから見る
D 大学受験典型。数列の和をS-xSで求めるやつ
2021年12月30日木曜日
Codeforces Round #763 (Div. 2)
Educational Codeforces Round 120 (Rated for Div. 2)
Educational Codeforces Round 120 (Rated for Div. 2) Eが分からず終了。
— titia (@titia_til) December 27, 2021
B 0と1で場合分けしてそれぞれをソート。
C 最初、min(A)をいくつまで減らすか三分探索かと思いハマった。何個そのままにするか? で全探索。
D 「最初に動かす1はどれか?」で場合分け
E. Math Test
2021年12月26日日曜日
Codeforces Global Round 18
E、通りました。最大値の初期化ミスでした。時間ギリギリで直せなかったのを直したら本当に通った。あと2秒あれば通ってたよ……。https://t.co/WNoDOGRb4a
— titia (@titia_til) December 24, 2021
赤はできるだけ葉に割り振りたい。それにより青が置ける個数をできるだけ減らす。深さ最大のものから消していく。青は全探索。
D. X(or)-mas Tree
2021年12月21日火曜日
Codeforces Round #761 (Div. 2)
D1 隣接三項を聞く。x,x+1,x+2とx+1,x+2,x+3が違う答えなら、x+1とx+2は違う値なので、それを使って判定していく。
— titia (@titia_til) December 16, 2021
D2. Too Many Impostors (hard version)
E. Christmas Chocolates
2021年12月15日水曜日
Codeforces Round #760 (Div. 3)
E 全部足したのと、隣接の差を使う。
— titia (@titia_til) December 14, 2021
F 大体、後ろに1をくっつけるか前に1をくっつけるかなはずなんだけどWA。WAの原因が分からずランダムテストを書いていたら、制約が甘いから全列挙すれば良いかー、となった。(いまだにWAの原因は不明……)
F 末尾0のとき先頭に1付け加えるのはダメかー。確かにそうですね。
— titia (@titia_til) December 14, 2021
2021年12月14日火曜日
AtCoder Beginner Contest 230
AtCoder Beginner Contest 230 Fまで六完。
— titia (@titia_til) December 3, 2021
D 区間スケジューリング
E ルートNで分ける
F 累積和Sを計算。和が0の区間があれば前の方を採用したい。たとえばS[3]=S[6]なら、DP[2]はDP[6]には加えない。もらうDPにしてセグ木で高速化。
G - GCD Permutation
2021年12月13日月曜日
Codeforces Round #759 (Div. 2, based on Technocup 2022 Elimination Round 3)
Codeforces Round #759 pretestはE以外。
— titia (@titia_til) December 12, 2021
C 正負に分け、絶対値の大きい方からk個ずつ。
D 転倒数の偶奇で良いの?
E オイラーツアーして頑張るしかないと思うんだけど、実装ができずに終わった。
F 既出。解法覚えてなかった。https://t.co/lPYSzoMBvm
E. Frequency Queries
2021年12月12日日曜日
Codeforces Round #758 (Div.1 + Div. 2)
D BとWは同じ個数になることをふまえて、(?の個数, あと必要なBの個数)の二項係数が答えになりそう。実際、BBやWWがあればそれが答え。ただ、BBやWWがないとき、BWとWBが両方含まれるとダメなので、それを除く。
— titia (@titia_til) December 11, 2021
2021年12月9日木曜日
AtCoder Regular Contest 131
AtCoder Regular Contest 131 ABCEの四完でした。
— titia (@titia_til) December 5, 2021
A B*5とAをくっつけた
B 可能なら一番小さい数字を入れるだけ
C 一手目だけ調べてあとはNの偶奇(一応証明できたつもり)
E 各xからx+1~Nへは同じ色を塗るとすれば良い。
Dは三分探索しようとしたがコンテスト後にWAでした。
D - AtArcher
2021年12月8日水曜日
AtCoder Regular Contest 130
AtCoder Regular Contest 130 AB解いた後、まずCD考えたけど、ふとFを見たらこっちの方が解けそうに見えて、結局解けぬまま終わるというのをやってしまった。
— titia (@titia_til) November 28, 2021
C - Digit Sum Minimization
D - Zigzag Tree
F - Replace by Average
2021年12月7日火曜日
AtCoder Grand Contest 056
C - 01 Balanced
2021年12月3日金曜日
Educational Codeforces Round 118 (Rated for Div. 2)
Educational Codeforces Round 118 (Rated for Div. 2) pretestはEまで。
— titia (@titia_til) December 1, 2021
C 二分探索
D iまでで、0,1,2,3...となる部分列の個数をDPで数える。0,1,2,3,5となれば、その後は3か5しか取れないので、i以降の出現個数をもっておき答えに足し込む。
E 最初Union-findを考えたけど、シンプルにDFSで通った。
2021年12月2日木曜日
NECプログラミングコンテスト2021(AtCoder Beginner Contest 229)
NECプログラミングコンテスト2021(AtCoder Beginner Contest 229) Eまで五完。F分からなかったし、Gはあと少しだと思ったけど違ったっぽい。
— titia (@titia_til) November 27, 2021
D 尺取り
E 後ろからUnion-findで。
F - Make Bipartite
G - Longest Y
2021年11月30日火曜日
AtCoder Beginner Contest 223
AtCoder Beginner Contest 223 Fまで六完。
— titia (@titia_til) October 17, 2021
C 両端から頑張って計算したけど大変だった
D 入次数0になったら使える
E どれか一つは「X*?」か「?*Y」なので、二個の問題へ帰着できる
F 遅延セグ木
H 基底がセグ木に乗るのかなー、と思ったけどTLEでした。
G - Vertex Deletion
2021年11月29日月曜日
Deltix Round, Autumn 2021 (open for everyone, rated, Div. 1 + Div. 2)
Deltix Round, Autumn 2021 pretestはEまで
— titia (@titia_til) November 28, 2021
D 難読だが、二乗が通る制約なのでUnion-findを使うだけ。
E クエリがなくてもDPするしかなさそう。こういうのはセグ木を使うしかなさそう、と自分のブログのhttps://t.co/NVdMFvylKd
のSweets Distribution(Hard)を見たのが(ブラウザ履歴によると)0:46。
2021年11月27日土曜日
Codeforces Round #757 (Div. 2)
Codeforces Round #757 (Div. 2)
— titia (@titia_til) November 26, 2021
B 0,1,-1,2,-2……と使っていく。
C 区間&の双対セグ木で一個決めて、あとは桁ごとにやるいつもの。
D1 各数の倍数が何個ずつ出現するか計算。あとはDP[i]でiを使うときの最大値でDP。約数列挙に時間を食われた。
D2. Divan and Kostomuksha (hard version)
2021年11月24日水曜日
AtCoder Beginner Contest 226
F、他の方のツイートを見て誤読してたことに気付いた(同じ誤読した人結構いるっぽい)。
— titia (@titia_til) November 7, 2021
それじゃ実験と一致しても答えが合わないねー。
F - Score of Permutations
G - The baggage
Codeforces Global Round 17
D Aを2ベキで分類。奇数が含まれればOK。偶数のみでグループを作る場合、同じ2ベキの人が偶数個いたらそれより大きい2ベキたちとグループを組んでOK(一応証明したつもり)。
— titia (@titia_til) November 23, 2021
E. AmShZ and G.O.A.T.
2021年11月23日火曜日
AtCoder Regular Contest 129
AtCoder Regular Contest 129 Cまで三完。
— titia (@titia_til) November 21, 2021
A 最上位bitが打ち消し合うように。
B 左端の最大値と右端の最小値を管理
C "7"*xを組合せると高々5個で済むので、間に入れる数字を1 mod 7になるようにすればOK。
D - -1+2-1
2021年11月6日土曜日
yukicoder contest 321
No.1730 GCD on Blackboard in yukicoder
No.1731 Product of Subsequence
2021年11月5日金曜日
技術室奥プログラミングコンテスト#6 Day2
B - Replace to the Other
C - Strange Paper
D - NG Word Game
2021年11月4日木曜日
AtCoder Regular Contest 126
C - Maximize GCD
D - Pure Straight
2021年11月3日水曜日
AtCoder Regular Contest 127
C - Binary Strings
D - Sum of Min of Xor
2021年11月2日火曜日
AtCoder Grand Contest 055
A - ABC Identity
B - ABC Supremacy
2021年10月31日日曜日
AtCoder Grand Contest 052
A - Long Common Subsequence
B - Tree Edges XOR
2021年10月30日土曜日
Codeforces Round #748 (Div. 3)
Codeforces Round #748 (Div. 3) pretestは全完
— titia (@titia_til) October 13, 2021
C ソート
D1 gcd
D2 判定問題はn回で解ける。10^6*nでもいけそうだけど(?)、xでダメならkxでもダメなことを利用して削減。
E 葉からDP
F DP。復元が面倒。
G 偶数番目の[と奇数番目の]がペアになるので、偶数個目の[]と奇数個目の[]を累積和で前計算
システムテスト全部通っていたら、ツイート貼り付けただけで記事書かなくても良いかなー、とか思っていたら、D2はWA、FはTLEと二問も落ちてしまった。
Educational Codeforces Round 116 (Rated for Div. 2)
E. Arena
2021年10月29日金曜日
技術室奥プログラミングコンテスト#6 Day1
F - Frog and Tadpole
G - At Most Two
I - 1<->k
K - Dial Key
2021年10月27日水曜日
サイシードプログラミングコンテスト2021(AtCoder Beginner Contest 219)
F - Cleaning Robot
G - Propagation
2021年10月22日金曜日
AtCoder Beginner Contest 221
G - Jumping sequence
H - Count Multiset
2021年10月18日月曜日
大和証券プログラミングコンテスト2021(AtCoder Regular Contest 128)
D 最後二要素のあるなしをもってDPかと思ったが答えが合わず終了。23/51個ACだからちょっとは惜しかった?
— titia (@titia_til) October 16, 2021
……と思ったけど、解説を見たら全然違いそうだ。
D - Neq Neq
2021年10月16日土曜日
yukicoder contest 318
No.1708 Quality of Contest
No.1709 Indistinguishable by MEX
2021年10月9日土曜日
yukicoder contest 317
No.1702 count good string
No.1704 Many Bus Stops (easy)
Kotlin Heroes: Episode 8
F. Kotlinforces
2021年10月2日土曜日
yukicoder contest 316
No.1694 ZerOne
2021年9月29日水曜日
Codeforces Round #744 (Div. 3)
E2 転倒数が小さい方を貪欲に作る。
— titia (@titia_til) September 28, 2021
F 0がどこへ侵食していくかを見る。A[i]=0ならA[i+d]が次のターンで0に、A[i+d+d]が次の次のターンで0になる。
G 長さxのときの判定問題がO(n)でできることに気付いたので、二分探索かと思ったがTLEした。
2021年9月28日火曜日
AtCoder Beginner Contest 220
G - Isosceles Trapezium
2021年9月25日土曜日
yukicoder contest 314
No.1680 Sum and Difference
No.1681 +-*
yukicoder contest 315
No.1689 Set Cards
2021年9月21日火曜日
Educational Codeforces Round 114 (Rated for Div. 2)
E. Coloring
2021年9月15日水曜日
AtCoder Beginner Contest 218
G - Game on Tree 2
H - Red and Blue Lamps
2021年9月9日木曜日
Educational Codeforces Round 113 (Rated for Div. 2)
E. Playoff Restoration
2021年9月4日土曜日
yukicoder contest 312
No.1665 quotient replace
No.1666 累乗数
No.1667 Forest
2021年9月3日金曜日
CodeCraft-21 and Codeforces Round #711 (Div. 2)
F. Christmas Game
2021年9月2日木曜日
灘中入試コンテストday2
No.1353 Limited Sequence
No.1354 Sambo's Treasure
No.1355 AND OR GAME
2021年9月1日水曜日
AtCoder Beginner Contest 214
G - Three Permutations
H - Collecting
2021年8月28日土曜日
yukicoder contest 311
No.1658 Product / Sum
No.1659 Product of Divisors
2021年8月27日金曜日
Codeforces Round #741 (Div. 2)
D2. Two Hundred Twenty One (hard version)
2021年8月25日水曜日
Codeforces Round #740 (Div. 1, based on VK Cup 2021 - Final (Engine))
B. Up the Strip
2021年8月24日火曜日
AtCoder Regular Contest 125
D - Unique Subsequence
2021年8月22日日曜日
TopCoder Single Round Match 811
Div1 Med SmoothDivisors
2021年8月21日土曜日
yukicoder contest 310
No.1653 Squarefree
2021年8月20日金曜日
AtCoder Beginner Contest 213
G - Connectivity 2
H - Stroll
2021年8月19日木曜日
Codeforces Round #739 (Div. 3)
E. Polycarp and String Transformation
2021年8月18日水曜日
AtCoder Beginner Contest 212
F - Greedy Takahashi
G - Power Pair
H - Nim Counting
2021年8月6日金曜日
yukicoder contest 308
2021年8月5日木曜日
2021 TCO Algo Regional Qualification 1
OlympicShooting
TreeTokens
mod=1000000007 class TreeTokens (): def placeMax(self, N, G, L, seed): state = seed E=[[] for i in range(N)] for i in range(1,N): state = (state * 1103515245 + 12345) % (1<<31) tmp = (state // 1000) % L p = max(0, i-1-tmp) E[i].append(p) E[p].append(i) #print(E) ROOT=G QUE=[ROOT] Parent=[-1]*(N+1) Parent[ROOT]=N # ROOTの親を定めておく. TOP_SORT=[] # トポロジカルソート while QUE: # トポロジカルソートと同時に親を見つける x=QUE.pop() TOP_SORT.append(x) for to in E[x]: if Parent[to]==-1: Parent[to]=x QUE.append(to) CC=[-1]*N for x in TOP_SORT[::-1][:-1]: if CC[x]==-1: CC[x]=1 if Parent[x]==ROOT: continue CC[Parent[x]]=max(CC[Parent[x]],CC[x]+1) AC=[0]*N AC[ROOT]=0 ANS=0 QUE=[ROOT] while QUE: x=QUE.pop() MAX=-1 if len(E[x])==1 and x!=ROOT: ANS+=AC[x] ANS%=mod for to in E[x]: if to==Parent[x]: continue MAX=max(CC[to],MAX) USE=0 for to in E[x]: if to==Parent[x]: continue if CC[to]==MAX and USE==0: USE=1 AC[to]=(AC[x]*2+1)%mod else: AC[to]=1 QUE.append(to) return ANS%mod