競技プログラミングにハマるプログラマのスレ 27
■ このスレッドは過去ログ倉庫に格納されています
プログラミングコンテスト(プロコン)やオンラインジャッジや競技プログラミング(競プロ)やCTFなどを楽しんでる競技プログラマ(競プロer)の雑談スレ
競プロイベントや競プロ問題や有名競プロerや競プロでよく使うアルゴリズム等について語りあったり、競プロ関連の質問相談なんでもおk
競プロ初心者でググっても解説読んでも分からないことがあったらスレの競プロの先輩方に訊いてみるのも手だよ(‮よいなれしもかるれくてえ教かと籍書かとトイサ説解いすやりか分‬)
次スレは>>950
# オンラインジャッジ・コンテストサイト
## 日本語
yukicoder https://yukicoder.me/
AtCoder https://atcoder.jp/
AIZU ONLINE JUDGE (AOJ) http://judge.u-aizu.ac.jp/onlinejudge/
## 英語
TopCoder
Single Round Match (SRM) 関係リンク集 http://codeforces.com/blog/entry/21879
Marathon Match (MM) https://community.topcoder.com/longcontest/?module=ViewPractice
※TopCoderは初参加までの手順が煩雑です。まずはググってみて、それでも分からなかったらスレで聞こう!
Codeforces http://codeforces.com/
CS Academy https://csacademy.com/
Project Euler https://projecteuler.net/ 和訳 http://odz.sakura\.ne.jp/proj
※前スレ
競技プログラミングにハマるプログラマのスレ 26
https://medaka.5ch.net/test/read.cgi/prog/1592148203/ すべてたのしい理想的な職場があるのか?想像上以外で >>378 は仕事が全部楽しくないって言ってるんじゃないと思うんですけど アクチュアリー試験、結局統計とかの数学出来るかどうかなので、特に競プロ関係ないがち(相関はあるけど) 数学強い→競プロ強いとなるが、逆は必ずしも真ならずかもな
いや、多少の保証はできるか 数学だめなら暖色とかなれないだろうし
それはともかく、まだ発展途上だから俺達が盛り上げていくんだぞ 理学部数学科を出てもプログラムできない人は山ほどいるだろ 整数NをL以上H以下の整数の集まりに分割したい。
ただしA+BをAとBに分割するときA*Bというコストがかかる。
コストを最小化するための分割方法はどのようなものか。
解がない場合は考えない。
半分に分割し続けるのが良いかなと直感では思ったが、証明ができない。
有名問題っぽいので考え方分かる人がいたら教えてください。 >>391
6を2以上2以下の整数に分割するとき、
6→3,3→(1,2),(1,2) コスト13
より
6→4,2→(2,2),2 コスト12
の方がコスト小さいからそのやり方は正しくないでしょ。 a_1,...,a_nに分割するコストは分割する順番によらずΣa_i*((Σa_j)-a_i)/2=(N^2-Σ(a_i)^2)/2だからa_iの2乗和を最大化すればいい
だからたぶん各a_iができるだけ大きくかつ均等になるようにするとかが答え a_i の2乗和を最大化するのであれば a_i はなるべく偏っていた方がよいのでは?
例: N=6, L=2, H=4 のとき 6 -> 2+4 ならコストは 8 ですが 3+3 ならコストは 9 です できるだけHで埋めて、余りがL以上ならLを1つ用意して終わり
L未満なら調整してどうにかする
例えばN,L,H=100,6,8なら分割は13個で、8×12+4なので最後に4が余る→8×11+6×2に調整
N=97なら8×12+1→8×9+25→8×9+7×1+6×3
これが嘘解法でなければN,L,H<=10**9でも解けそうだが果たして >>395
偏ってた方が良いってのは、LとHを沢山作ったほうが良いってことか?
N → L,H,L,H,L,H,L,H,...
証明わからん
>>396
それ>>394と一緒ちゃう? >>401
なんで一緒なんだよw
>>395当てはめたら俺の実装なら2,4になるわ ABC 6完安定する人って色でいうと黄くらいのレベル? 自分は黄色中位だけどABCは基本全完できると思う(し、実際ほぼ毎週してる)
たま〜にできない回があるが
でもABCとAGCで見てる能力がちょっと違うように感じてるから2000overでもABC全完安定しない人がいても驚かないな 〜!〜!〜!
いあ〜〜!いあ〜〜!はす〜〜〜! >>394-396
大枠はこれでいいでしょ
できるだけ偏らせたほうがいいから、LともHとも違う分割の仕方は高々1つ
分割する個数も減らしたほうがいい(Lをばらしてほかのに割り振る)
だからLからHに分割する方法の中で、Hをたくさん作れる分割の仕方を求めるというのがやりたいことのほとんどなんだけど、
Lがたくさん存在する場合もあるから貪欲でやるのは難しい気がする?それとも>>396の二つ目の例みたいなものは数学的に簡単に求められる? 最小分割の個数が、L*x <= N <= H*xを満たす最小のxでそれがわかれば分割の仕方も
出せるから定数で計算できるね 実用上はにぶたんO(logn)で十分
場合分け頑張れば定数でいけるだろうけど 二分探索って分割回数を二分探索か?
分割回数に対して単調ってなんで分かるっけ? N/Hの商をq,余りをrとする
r=0かL<=r<Hの場合は自明
そうでない場合、(L-r)/(H-L)の商をs,余りをtとする
t=0の場合、H×(q+1-s)+L×s
それ以外の場合、H×(q-s)+(L+(H-L)×t)+L×s
こうかな 企業的にはABCのほうが嬉しいのかね、企業が選べるんだっけ 参加者はABCの方が多くなるよね
2000以上の人をどのくらい重視するかによるんちゃうかな 結果はどうでもよくて宣伝できればいいって感じなのかな
ってか今日か ABCでも暖色の人結構出るし宣伝的にはABCのほうが良さそうか ABCの過去問解いてるんだけど、同じ色でも昔の方が簡単な気がするのだが、正しい?
受験者のレベルが高くなってることを反映してるのかなと思ったのだが 最近見かける受験者って表現気になる
正しい正しくないの話じゃなく各人の認識のしかたとして興味深い 何よりABCはバズるしな
「エイシング」って単語がトレンド入りする可能性すらある パナソニック2020もそうだけど、企業コンABCのFに不可能を置くな コンテスト中にdifficulty予測出来るツールってありますか? >>435は俺だけどpredictor見て言っただけだからわからん Dコンテスト終了直後に投げたのが通ったわ、3分伸ばしてくれ 先週の解説で日曜はないと思うってすぬけさんが言ってたような CDのdiff茶色って言ってるけどabc173のdiffと勘違いしてない?
エイシングのdiffもう出てる? 英語版の解説pdfまだ出来てないの、外国の人かわいそうに… >>454
それ<Obvious.>じゃなくてあなたの感想ですよね? 参加者7000人ちょっとか
なんで今日こんなに少ないの?普段のABC1万超えなのに 企業コンだからABCって分からなかった人が相当数いるんちゃうかな >>459
これだよな
ABC○○○ by (企業)にした方がわかりやすいよな 賞金もないと普段のABCと変わらんからありがたみないな。宣伝効果的にどうなんだろ 最近の企業コンはARCだったから、最近始めた人が勘違いしてもおかしくない コンテストの後って興奮しちゃってるのかなんなのか寝つけないわ
わかるやついる? 学生だったら良かったんだけどなあ。
社会人にはきつい Dのpopcount()なんですが、最大200000桁の割り算ってどう実装すればいいんでしょうか
2の200000乗だと64bit整数でも溢れますよね? 繰り返し二乗法というアルゴリズムでaのK乗 mod MをO(log K)で計算できます modpowでもいいし頭から割り算の筆算みたいにmod取っていけばいい 昨日のD問題はどうやって方針立てれば良かったんだ?
普通に問題文のまま実装しようとしてTLEになっちゃったんだが、その前に計算量オーバーしてるって気がつかなきゃいけなかったのか? 2*10^5桁の数値を2*10^5回除算しようとした時点で負け さすがにDは愚直が許されないイメージ
自分の書いているコードの計算量を常に把握していれば気づくと思う
まあ中には計算量解析が難しくてそこが本質みたいな問題もあるけど >>471
ありがとうございます
2のK乗ということは最上位bitが1(「100」とか「10000」)が対象だと思うんですが、
「10101」のような値にはどうやって適用するのでしょうか? E天才すぎる
こういう貪欲どうやって思いつくんだよ >>477
2進数の10101=2^4+2^2+2^0
なので、それぞれに繰り返し二乗法を用いて足し合わせればよいです
今回の制約なら、2^nを0<=n<=桁数まで計算しておいて足し合わせるのでも良いです D改めて見てるけどかなり難しいだろこれ…
これスラスラできたら青レベルだろ C灰diffなのもすげえな、、。一昔前なら緑はありそう。 ■ このスレッドは過去ログ倉庫に格納されています