#atcoder
Explore tagged Tumblr posts
Text
The Thrill of Competitive Programming: A Deep Dive into Codeforces, AtCoder, and More
In the realm of software development, competitive programming stands out as a thrilling and intellectually stimulating activity. It challenges programmers to solve complex problems under tight time constraints, fostering skills that are invaluable in both academic and professional settings. This blog delves into the world of competitive programming, exploring its significance, benefits, and the…
#AI#amazon#apple#atcoder#chatgpt#codechef#codeforces#coding#competitive-programming#computer science#computer-science#cp#cpp#cs#css#DSA#google#hackerrank#java#javascript#leetcode#new#programming#python#tech
0 notes
Text
ABC365G - AtCoder Office
問題リンク
https://atcoder.jp/contests/abc365/tasks/abc365_g
公式解説1の考え方
公式解説に倣い、$i$番目の高橋くんがオフィスの中にいた時間の区間の集合を$S_i$とする。 クエリの組$(A, B)$について、下記パターンI, Ⅱに分けて考える。
パターンI: 愚直にイベントソートして処理。 高橋くんそれぞれのイベントを予め分けておく。 クエリの組$(A, B)$のイベントをマージ→重複している時間を求める。 クエリ1回あたり$O(C_{})$かかる(イベントは入力でソート済みなのでlogはかからな��)。 クエリ$Q$回全部$C$以下があり得るので、クエリ全体で$O(QC)$かかる。
パターンⅡ: クエリの組$(A, B)$は、 ・$C$より大きい高橋くんが$\frac{M}{C}$ ・任意の高橋くんが$N$ この2種から1つずつ選ぶので$O(\frac{NM}{C})$個のクエリがパターンⅡに当てはまり得る。 これらクエリを予め計算してキャッシュし、クエリに答えるようにする。
$S_i$が$C$を超える高橋くんを$i$、任意の高橋くんを$x$として、クエリの組$(i, x)$をまとめて前計算する。 前計算1回あたり、イベント全走査して$x$を全通りキャッシュするので、時間計算量$O(N+M)$、空間計算量$O(N)$かかる。
$i$のあり得る個数は$O(\frac{M}{C})$ (イベント個数$M$から閾値$C$が何個取れるか)により、 キャッシュ計算全体で時間計算量$O(\frac{(N+M)M}{C})$ 空間計算量$O(\frac{NM}{C})$
$C=O(\sqrt{\frac{NM}{Q}})$ とすることで、 全体$O(\sqrt{NMQ}+M\sqrt{\frac{MQ}{N}})$で解ける。
提出コード https://atcoder.jp/contests/abc365/submissions/56695169
平方分割の考え方1
可能ならクエリの答えをすべて予め計算してキャッシュしたいが時間が掛かりすぎるため、 何個キャッシュを持っておくべきか? →$\sqrt{N}$くらいキャッシュする キャッシュで持ちきれない分は都度愚直計算する。 都度愚直計算する負担が少ないものはどういう性質がある? →$S$が小さいもの
平方分割の考え方2
クエリ全部を都度愚直計算で答えるとする。 愚直で答え切れるクエリ1回あたりの限界は? →$S$が$\sqrt{M}$くらい 範囲外のものは予め計算しておいてキャッシュから答える。
公式解説2の考え方
合計が$M$のとき、$Q$個の相異なるペアについて小さい方の和は$O(M\sqrt{Q})$で抑えられる。 クエリ1つ捌くところで計算量を「ペアの小さい方log(ペアの大きい方)」になるように書けば間に合うイメージ。
$O(M√Q)$で抑えられる抑えられる理由のイメージは、 ペア$(A, B)$について、$A$も$B$も$M$への寄与分が同じときが一番きつい。 ペアに登場する要素の種類数が$x$のとき、その全組み合わせは${}_xC_2=O(x^2)$なので 要素の種類数を$\sqrt{Q}$個にして、$M$を$\sqrt{Q}$に均等に割り振るのが最悪ケース。 このとき要素一つあたり$O(\frac{M}{\sqrt{Q}})$、 クエリ$Q$個飛んでくるので$O(\frac{M}{\sqrt{Q}}*Q)=O(M\sqrt{Q})$。
クエリ1つ捌くところで計算量を「ペアの小さい方log(ペアの大きい方)」にするパートは ABC305D-Sleep Logと同じ。
クエリは相異なるペアである必要があるので、同じクエリが来たときようにキャッシュが必要な点に注意。
提出コード https://atcoder.jp/contests/abc365/submissions/56669241
類題 https://www.facebook.com/codingcompetitions/hacker-cup/2022/qualification-round/problems/D
0 notes
Quote
たまに意識の高い人が「明日死ぬかもしれないと思って全力で今日を生きる」みたいなこと言ってるけど、「明日死ぬのと50年後死ぬので今日の行動は絶対変わるし、明日死ぬと思って将来役立つ行動を取ってるのは評価関数がバグってない……?」ってよく思ってる。
chokudai(高橋 直大)🍆@AtCoder社長 / Twitter (via y-kasa)
35 notes
·
View notes
Quote
たまに中学高校の数学から勉強し直したくなるんだよね
[B! 数学] 算数の教養がほとんどなかったプログラマがAtCoderを4年やって緑になれた話|きりみんちゃんノート
2 notes
·
View notes
Text
2015 年 3 月に大学を卒業して都庁に就職した。といっても実家の近くの高校で事務をしていた。
このとき学んだこと。
背筋を伸ばして大きい声をだすのは大事
きっちりミスのない仕事をするのは大事
段取りが大事
翌日仕事があるときは限度をもって飲む
人事の慣例に従って、 3 年経った 2018 年 4 月に異動した。新宿の本庁にいけるかと思ったが移動先は特別支援学校の事務だった。
慣例だとまたここに 3 年いることになるので、それで 20 代を終えるのもなんだかなあと思い転職を具体的に考えだした。
2018 年の GW に大学���友人と南の島に旅行に行って、彼らが大きく羽ばたいている / 羽ばたこうとしている様子を見て刺激を受けたのも一因だった。
転職の当てがある訳でもなかったが、以下のことを考えた。
興味関心に従って探求することがキャリアに繋がるような仕事をしたい。大学のレポートとか卒論とか好きだった。役人は短期で異動して積み上がらないのと、異動先のコントローラビリティが低い。
trial & error を短い周期で明確な形でできる仕事がしたい。社会人になってからハマったボルダリングを好きな理由のひとつはそれ。役人は個人としても組織としても極めて trial & error しにくい。
どうも web エンジニアというのは上記の条件に当てはまるかもしれず、未経験でも転職できるかもという情報を得た。
自身の適性を判断するためにもとりあえずプログラミングというものを試してから考えよう、と思った。
『Python の教科書』という本を買って来て、毎日いままでにないくらい定時きっちりにあがって家でコーディングをしてみた。
晴れた夏の日に駅のベンチでこの本を読んでいて、待ち合わせに来た当時の彼女が訝しげに「何を読んでいるのか」と尋ねたことを覚えている。
漫然とコードを書くのもナンなので、競プロというのがパズルみたいでおもしろいなと思って少しやってみた。AtCoder の B 問題とか C 問題とか、競プロのテクニック的なのからしたら全然入り口的なレベルで終えてしまったが。
そのうちに「競プロでレートを上げるよりも、転職活動のポートフォリオとして web アプリをつくった方が転職という目的に適っているようだ」ということに気づき web アプリをつくることにした。
Python でも Django というフレームワークがあるらしかったが、どうも Rails というやつの方が初心者にとっつきやすそうだったのでそっちでやることにしてみた。
けっこう楽しいなと感じながら web アプリの作成はすすんで、しばらくしてテックキャンプみたいなところの 3 ヶ月くらいのプログラムに申し込んだ。安くはなかったが、利用を決めた理由は以下だった。
これはわりと楽しめそうなので仕事にしても(そのために投資しても)よさそうだ。
初心者の自分がいまハマるところについては経験者にぱっと聞いて解決した方が効率が良さそうだ。しかし質問サイトみたいので自分のような初心者��期待するサポートを得るのは難しい。
だらだらやってもアレなので、そこでついてもらったメンターに質問をし倒して秋くらいまで Rails アプリを試しにいくつか作ってみた。
それを引っ提げて何社か面接を受けに行った。何社かは「未経験 OK」だったが、そうでなくても気にせずばんばん応募してみた。
「未経験 OK」ではなかった Q 社ともう 1 社から内定をもらった。
技術がどうこうというのはよくわからなかったので、面接で話してなんとなく波長が合うと感じる人の多かった Q 社に転職することにした。オファー面談の日がちょうどクリスマスで、内定を受諾したらクリスマスプレゼントだ!と喜んでもらったのが嬉しかった。
私の一度目の転職はそんな風だった。
1 note
·
View note
Text
ABC353G - Merchant Takahashi
問題リンク
https://atcoder.jp/contests/abc353/tasks/abc353_g
考察(セグ木)
公式解説(https://atcoder.jp/contests/abc353/editorial/9953)の解き方。
インラインDPを考えて、$dp[x]$を町$x$にいるときの所持金最大値とすると $i$番目の市場に参加したときの$dp[T[i]]$の更新は下記の通り。 (市場に参加するときのみ移動すると考える) $dp[T[i]]=P[i] + \max_{0\geq j<N} {dp[j]−C∣j−T[i]∣}$
$\max_{0\geq j<N} {dp[j]−C∣j−T[i]∣}$ を求めるところで、 公差$-C$の等差数列を足した上でのmaxが知りたいので、区間等差数列add区間maxが欲しくなる。
こういうときは、要素に予め $ -C*i, C*i$ を足した値をそれぞれ区間maxセグ木に乗せておく。 市場参加時のmaxを求めるときに、セグ木にクエリして得られた最大値に $C*T[i], -C*T[i]$ を足してずれを補正する。 セグ木の値を更新するときも、 $-C*i, C*i$ を足した値で更新するのを忘れずに。
提出コード https://atcoder.jp/contests/abc353/submissions/53402297
考察(Li Chao tree)
KumaTachiRenさんのユーザ解説(https://atcoder.jp/contests/abc353/editorial/9984)の解き方。
区間等差数列add区間min/maxはCHTの上位互換なので、区間等差数列add区間min/maxが欲しくなったときはまずCHTを疑う。
考察(セグ木)のときとは違って、$dp[x]$の更新を ・町$x$にいた状態で$i$番目の市場をスルーしてして、町$x$に居続ける ・$i$番目の市場に参加して、町$T[i]$から町$x$に移動してくる の最大値で書き換えと考える。 (市場参加後に各町に移動するところまでやるイメージ)
絶対値がついている場合は、正負の場合分けで絶対値を外すと考えやすいので $0\geq j<N$の$x$それぞれに対して、 $dp[x]$ $=\max(dp[x], P[i] + dp[T[i]] − C∣x-T[i]∣)$ $=\max(dp[x], Cx + P[i] + dp[T[i]] - CT[i]) (x<T[i])$ $ \max(dp[x], −Cx + P[i] + dp[T[i]] + CT[i]) (T[i]\geq x)$
maxの第2引数がxの一次関数になっているので線分追加のLi Chao treeで解ける。
提出コード https://atcoder.jp/contests/abc353/submissions/53404160
考察(区間等差数列add区間min)
区間等差数列add区間maxが欲しいので、そのまま実装する。 定数倍重いのでC++でしか通せない気がする。
提出コード https://atcoder.jp/contests/abc353/submissions/53402425
0 notes
Quote
たまに意識の高い人が「明日死ぬかもしれないと思って全力で今日を生きる」みたいなこと言ってるけど、「明日死ぬのと50年後死ぬので今日の行動は絶対変わるし、明日死ぬと思って将来役立つ行動を取ってるのは評価関数がバグってない……?」ってよく思ってる。
Xユーザーのchokudai(高橋 直大)@AtCoder社長さん
11 notes
·
View notes
Quote
新卒の学生さんかと思ったら40代で競プロ始めた方だった! そう思って読み返すと仕事の成果の内容も違って見えてきて尊敬しかないです… 心身のバランスは崩さぬようにご自愛ください。
[B! atcoder] 入社2年目の悩みー仕事と競プロの両立についてー - 競プロ始めました-kaede2020-
1 note
·
View note
Photo

🌸 Problems should not stop us, solve them and then move on. 🌸 I have seen many people give up on their dreams because it's difficult or different but our reality becomes what we work for. So work for your future, your dreams. *** 💯 PROGRESS 💯 ☀️ JAVASCRIPT 🌞 #day39 of #100daysofcode 1. Learning the function part of #javascript. #functions are the most important pat in javascript so taking my time with them. 2. Learned about #localscope & #globalscope. *** 💗 FEELINGS 💗 I am very #happy & #excited for my week. Feeling #tired at the end of the day. * * * #100daysofcodechallenge #freecodecamp #javascript #coding #CodeNewbies #atcoder #careergoals #careerchange #careerdevelopment #learningpath #learning #codenewbies #javascriptdeveloper #codingisfun #dev_girls #womenintechnology #peoplewhocode #workhard #coderchick #remotework #developerdiaries #laptoplifestyle (at Islamabad, Pakistan) https://www.instagram.com/p/CLFbxdNgoQ9/?igshid=1n2xdxkh9fckn
#day39#100daysofcode#javascript#functions#localscope#globalscope#happy#excited#tired#100daysofcodechallenge#freecodecamp#coding#codenewbies#atcoder#careergoals#careerchange#careerdevelopment#learningpath#learning#javascriptdeveloper#codingisfun#dev_girls#womenintechnology#peoplewhocode#workhard#coderchick#remotework#developerdiaries#laptoplifestyle
0 notes
Text
Happy New Year!
Assorted thoughts about where I'm at and where I'd like to be with coding.
Overall: only three competitions since my 3 month break, but it doesn't feel like I was away long enough to lose ground. I do think I had probably hit an inflection point around the time I stopped though. Extremely rapid improvement is probably over, some amount of grind will be required to continue to progress.
Leetcode
If I only cared about improving, I wouldn't do problems on here. Entire contests take me less time than single problems on the other sites.
My goal was a rating of 2500 by my one year anniversary (either in mid Feb or early March depending on how you count) and I'm at 2350ish rn (depending on how much I gain from last contest). This seems very doable, but non-trivial - I'm starting to gain more slowly from good results and lose more from mediocre and bad results.
Codeforces
Codeforces is fucking hard. I can get three problems consistently but the fourth often evades me, and that's the barrier I need to get over - from 3-4 to 4-5.
My goal by my one year (in September) was Div 1/Master. I suspect it will be quite challenging, but I don't think it's impossible - I'm currently 1750ish and feel like I could get to 1900 without any improvement. 2100 is my goal.
Codechef
The most fun of the three. I didn't even set myself a formal goal and their placement system plopped me right into Div 1 after only three contests, which is kind of bonkers. Codeforces makes you grind for every last scrap of rating.
At this point my main goal is just to stay in 5 star/Div 1 through the rest of my placement contests (first five, two left). 6 star seems... beyond my current capabilities, even more so than Master on codeforces.
Others
Atcoder is fucking impossible for anyone in PST. Maybe if I'm on the east coast during daylight savings I'll try a couple, but there's no path to me competing on there long term.
Google's two individual competitions (kick start and code jam) both look fun and I'm down to try them, not setting any expectations for myself for them though.
I don't know of any other sites that host regular contests at workable times, so I'm pretty much stuck with these three.
5 notes
·
View notes
Photo

chokudai(高橋 直大)🍆@AtCoder社長さんのツイート 普通の女の子はidの後ろに8桁の乱数を付けないんですよ。 https://t.co/UlzIdwML0p)
2 notes
·
View notes
Text
B - Trapezoid Sum (ABC181)について考えてみる。
## はじめに
僕は競プロ���心者で数学も全然できないのでもっと効率的なコードがかけるといったことがあったら教えていただけるとうれしいです。
## 今回解く問題
この問題は一見ループで計算するばいいように見えますが、絶対にTLEになります><
なので今回はループ以外の方法と実装する必要があるのでメモ代わりに今回のブログを書いてます。。。
## TLEになるコード
1 note
·
View note
Text
食塩水まとめ
考え方
食塩水候補をいくつか選んで混ぜたときにできる新食塩水の濃度の最大値は?のような問題。 基本は濃度$x\%$が達成できるか?の判定問題に落としてにぶたん。
食塩の重さを$A$, (食塩+水)の重さを$B$とすると ソート基準は $(\frac{A}{B}-x) * B$ もしくは $A - x * B$ で降順ソートして貪欲に選べばよい。 濃度$x\%$に必要な食塩と比較してどれだけプラスかを計算するイメージ。
ABC034D - 食塩水
https://atcoder.jp/contests/abc034/tasks/abc034_d
$A - x * B$でソート。 提出コード:https://atcoder.jp/contests/abc034/submissions/46661824
ABC294F - Sugar Water 2
https://atcoder.jp/contests/abc294/tasks/abc294_f
$A - x * B$でソート。 濃度$x\%$以上の砂糖水がK個以上作れるか?の判定問題。 提出コード:https://atcoder.jp/contests/abc294/submissions/46662307
ABC324F - Beautiful Path
https://atcoder.jp/contests/abc324/tasks/abc324_f
・濃度=食塩/(食塩+水), ・ABC324Fの求める値=美しさ/コスト で式が同じなので、 ・食塩=美しさ ・(食塩+水)=コスト で言い換えられる。 $A - x * B$でソート。 DAGなので普通に前からDPできる。 提出コード:https://atcoder.jp/contests/abc324/submissions/46661282
(おまけ)ABC236E - Average and Median
https://atcoder.jp/contests/abc236/tasks/abc236_e
・平均値最大化: $a_0, …, a_n$の平均値が$K$以上 $\Leftrightarrow (a_0-K)+ … +(a_n-K) \geq 0$ なので、 $b_i=a_i-K$とおいて、($b$から選んだ要素の総和)$\geq0$か判定
・中央値最大化: $a_0, …, a_n$の中央値が$K$以上 $\Leftrightarrow$($a_i \geq K$の個数) > ($a_i < K$の個数) なので、 $b_i=a_i \geq K ? 1 : -1$とおいて、($b$から選んだ要素の総和)$>0$か判定 提出コード:https://atcoder.jp/contests/abc236/submissions/46666611
1 note
·
View note
Quote
よく「なんでTwitterは生TLを流すという当たり前のことをしてくれないんだ!」みたいなのを見るけど、「生TLを流すのって技術的にめちゃめちゃ難しいので全く当たり前じゃなくない……?」って思ってしまう。よくTweetDeck生きてるなーって思ってる。
chokudai(高橋 直大)🍆@AtCoder社長さんはTwitterを使っています
4 notes
·
View notes
Quote
Twitterの認証済み組織の件、ちょっとお値段は高いと思うけれども、謎の基準の認証ではなく、「企業が所属ユーザに認証を与えていく」って構造になってるの、めっちゃ正しいと思う。企業所属のタレントとかに芸能事務所のマークがつくの、めっちゃ正しそうじゃない?
chokudai(高橋 直大)🐙🔥@AtCoder社長さんはTwitterを使っています
1 note
·
View note