競技プログラミング総 ..
[2ch|▼Menu]
651:デフォルトの名無しさん
22/12/04 10:29:38.14 cWum1xSPa.net
>>649
賢い友人いればカンニングし放題だよ

652:デフォルトの名無しさん
22/12/04 10:47:16.13 byXjLF2m0.net
遊んでた結果副次的に転職出来たらラッキーくらいに思っておくのが賢明でそもそも転職目的で取り組むものじゃない定期

653:デフォルトの名無しさん
22/12/04 12:28:16.09 pM2FPSpOa.net
そういう事ね、とりあえず遊びでやってみるか

654:デフォルトの名無しさん
22/12/04 14:23:01.52 NAhGf0YwM.net
ChatGPTが解けてるのはただ単に問題文覚えているからだと思うが、AGCの新問を解けるようになったら革命起きそうだな

655:デフォルトの名無しさん
22/12/04 14:23:58.59 c/97lm9K0.net
1万文字をcinで入力して、文字列長を調べたら4095と表示されてしまいました
何故でしょうか?(´;ω;`)

656:デフォルトの名無しさん
22/12/04 14:45:43.34 QAdxD5oY0.net
だからコードを貼れと

657:デフォルトの名無しさん
22/12/04 16:28:54.17 9++0/IB+0.net
途中に空白があって全部入力できてなかったとか

658:デフォルトの名無しさん (アウアウウー Sa3a-wvAz)
22/12/04 17:53:44.19 pM2FPSpOa.net
昨日の問題EのcriticalHitがよくわからないんだけど
解説にatcoderのincludeファイルがあるんだけどなんだこれ?
PとQ求めたらこのファイル使うと勝手に計算してくれるの?

659:デフォルトの名無しさん (テテンテンテン MM34-wjaL)
22/12/04 17:56:34.68 NAhGf0YwM.net
chokudai「あれ、AGCも典型じゃね?」

660:デフォルトの名無しさん (ワッチョイ f8a4-77kT)
22/12/04 17:57:37.82 CGY/STbk0.net
それはAtcoder LibraryっていうAtCoderのジャッジで使えるライブラリなんだけど、初心者には明らかに説明不足だね・・・

661:デフォルトの名無しさん
22/12/04 18:03:15.78 pM2FPSpOa.net
>>660
つまり、高速でPとQを解かせるのが本題で、
mod計算はライブラリがあるからそこで時間つかうなよ!って事かね?
使わないと困るケースがあるんだろうけど...理解せずに脳死で覚えた方が良いんかな?

662:デフォルトの名無しさん
22/12/04 18:04:20.29 NAhGf0YwM.net
この手のDPにACLの出番あるのかと思ってみたけど、modintか

663:デフォルトの名無しさん
22/12/04 18:06:53.79 NAhGf0YwM.net
>>661
別にACL使わなくても自分でスクラッチしてどうにかなるレベルだけど、負になったときの処理とかがめんどいから使った方が楽って感じのノリ

664:デフォルトの名無しさん
22/12/04 18:09:27.71 CGY/STbk0.net
そうだなあ
ACLで実装されてるのは有名アルゴリズムばかりで、ABCでもよく出題されるの多いからライブラリで実装されてるものは理解したほうがいい
ACLは使ってもいいし、使わなくてもいい
まあ、とりあえず問題が解ける程度には理解して使えるようになることをオススメしておくか
特にmodintは便利だと思う
ACLをローカルにインストールすれば、自分のパソコンからも使えるよ

665:デフォルトの名無しさん
22/12/04 18:12:21.58 CGY/STbk0.net
ちなみにおれはC++使ってないし、そういうライブラリは一通り自分で作ってる

666:デフォルトの名無しさん
22/12/04 18:14:00.78 NAhGf0YwM.net
休日でぼーっとしすぎて頭が痛い
何かしらウォームアップするか、逆に仮眠取るかしないとAGCやばい気がする

667:デフォルトの名無しさん
22/12/04 18:16:11.55 CGY/STbk0.net
>>666
休日の片頭痛は、だいたいカフェイン不足が原因だろうから、カフェイン摂っておけば治るというのが自説

668:デフォルトの名無しさん
22/12/04 18:24:50.23 NAhGf0YwM.net
モンスター爆飲みやなー
翌朝の予定とかもう関係ないね

669:デフォルトの名無しさん
22/12/04 20:00:57.71 9++0/IB+0.net
分数をmodで表現する方法が分からなくて解説見に来た人が何も分からないままだから、「modでの計算はたとえばACLを使うことで求めることができます」みたいな一文とともにACLドキュメントへのリンク欲しいね
そもそも新しく入ってきた人はACLの存在知らないだろうし

670:デフォルトの名無しさん
22/12/04 20:09:31.79 EaAmvHmj0.net
小数点の既約分数表現だか、理解するモチベーションが全然わからない

671:デフォルトの名無しさん
22/12/04 20:18:03.95 YKYxvH3hp.net
分数のmod表現は最初は数字が非直観的で戸惑うかもしれないけど、やってることは全然難しくないからACL使用前提じゃなくて普通に理解すべき
逆元と繰り返し2乗法理解してれば一瞬で書けるし

672:デフォルトの名無しさん
22/12/04 20:40:00.50 c/97lm9K0.net
>>656
>>657
普通のコードです
std::stringでも同じ結果になったため、charにしてみました。
#include<iostream>
#include<string>
#include<string.h>
using namespace std;
int main()
{
char S[500009],T[500009]; // 変更前文字列、挿入後文字列
// 入力
cin >> S;
cin >> T;
// 変更後文字列の長さを求める
int len = strlen(T);
// 開始位置は先頭
int start = 0;
// 終了位置は文字列の最後
int end = len-1;
// 以下省略
return 0;
}

673:デフォルトの名無しさん
22/12/04 20:48:19.58 pM2FPSpOa.net
>>672
intで足りてる?

674:デフォルトの名無しさん
22/12/04 20:50:00.93 c/97lm9K0.net
>>673
intって32ビットですよね?
でしたら足りてます

675:デフォルトの名無しさん
22/12/04 20:53:07.80 pM2FPSpOa.net
足りてるなら言う事無いですね。

676:デフォルトの名無しさん
22/12/04 20:59:50.43 CGY/STbk0.net
>>672
ちゃんと10000って表示できるよ
URLリンク(ideone.com)
だからコードじゃなくて、コマンド操作の方法に問題があるんでしょ

677:デフォルトの名無しさん
22/12/04 21:06:26.43 c/97lm9K0.net
>>675
ありがとうございます
>>676
サクラエディタで1万文字を2行分書いて、それをCtrl+Aでコピーして
VSCodeに右クリックでペーストしました
この作業で文字がカットされている可能性がありますね
ありがとうございます!!

678:デフォルトの名無しさん
22/12/04 21:07:30.39 pM2FPSpOa.net
入力文字列が怪しそう

679:デフォルトの名無しさん
22/12/04 22:09:18.30 dd1ttyO10.net
期待値の問題ってワンパターン過ぎじゃ、、?
単に水色だとこんなもんで青黄の期待値問題はもっと複雑なの?

680:デフォルトの名無しさん
22/12/05 00:16:09.04 9VPmC7c9M.net
今回BよりAの方がずっと発想ゲーに感じた

681:デフォルトの名無しさん
22/12/05 00:29:08.62 dZQIdR+h0.net
同じ二完でも遅いと全然パフォ伸びないな
絶妙な解きにくさで、ああAGCだなと思った

682:デフォルトの名無しさん
22/12/05 00:35:10.61 9VPmC7c9M.net
>>679
そもそも水diffのDPは丁度EDPCで見るようなレベルだから、実際パターン少ない
もちろん上のdiffで典型度低くて難しい期待値問題はたくさんある

683:デフォルトの名無しさん
22/12/05 00:41:25.45 dZQIdR+h0.net
Aみたいなのは発想でどうにかするより逆順で実験する方が安定するよ

684:デフォルトの名無しさん
22/12/05 01:08:41.64 FvIGflqWr.net
期待値という概念の扱いに慣れてない低学歴が引っかかるから簡単でもdiffは上がる

685:デフォルトの名無しさん
22/12/05 01:09:31.17 gVdVhqi2p.net
青上位 青上位 赤 銅 銀 AC0
は草 
もうレーティング対象青からでも良いんじゃないか

686:デフォルトの名無しさん
22/12/05 01:26:14.28 wV6tNweHa.net
atcoder jumperは下回ったな
A問題最高diffはならず

687:デフォルトの名無しさん
22/12/05 01:29:24.67 ypvg8sem0.net
配点からしてAがむずかしめなのは予想できたし、まあ
水色くらいの人たちならそんぐらい自己判断できるし、まあ水色以上Ratedで良いと思うけどね
それよりARCを3200くらいまでRatedにしてあげたら?って気がしちゃう

688:デフォルトの名無しさん
22/12/05 03:02:28.71 OFDKazG70.net
操作を繰り返して全て同じにしたいときに隣接要素が異なる箇所の個数の変化を考えるのは典型な気がする
Bが重くてつらかった

689:デフォルトの名無しさん
22/12/05 10:20:45.99 DqBKeem4M.net
それは考えたけどほぼ常に2個ずつ減らせるとはわからんかった

690:デフォルトの名無しさん
22/12/05 10:44:48.54 pY2jkv26p.net
下界/上界が必ず達成できる典型という奴だな
自分はABCABC型が3回で揃えられることすら見逃してたせいで詰んでた

691:デフォルトの名無しさん
22/12/05 11:48:54.61 9VPmC7c9M.net
異なる文字同士が隣接している部分の特徴量として使おうってのはまあすぐ思いつくしそれはそこまでの発想じゃないと思うが、ABCABC三回とかがコンテスト中だと意外とソラで気付けない
そうこうしてるうちに別の方針に飛んだりしてかなり時間食う
一方Bは下界と上界がすぐ見えるし、700点問題にしては木となもりの関係性と似ていることに思い至るまでにそんなに飛躍はないように思う
実装パートの方がつらい
その結果が正答数逆転だわ

692:デフォルトの名無しさん
22/12/05 11:49:40.54 9VPmC7c9M.net
>>691
☓部分の
○部分の数を

693:デフォルトの名無しさん
22/12/05 12:49:21.04 xHOM0phNM.net
わかるわ
B発想の割に普通に実装が重い
時間経過でどんどんAC数増えるのも納得

694:デフォルトの名無しさん
22/12/05 13:44:54.25 6+3fZaFZp.net
愚直コードを書いてパソコンに実験させるのが良かったんだろうけど、これくらいの問題なら紙に書いて実験するので大丈夫だろうと高をくくって最小回数を勘違いしてたせいで一生WAが出て地獄だった
パソコンに実験させる習慣が未だにつかない

695:デフォルトの名無しさん (ワッチョイ f1bd-WJTY)
22/12/05 17:25:12.72 dZQIdR+h0.net
自分もどちらかというと移動中の微妙なスキマ時間に競プロの問題を考えることが多いから、実験はそんなに得意ではないかなあ
高難易度ほど予想解きスキルが必要そうだから、ARC/AGCで戦うのなら練習した方がいいかもね

696:デフォルトの名無しさん
22/12/05 19:41:46.19 MF+Ck4c20.net
AGC、診断人氏が0完とか、もう一般的にかなり優秀な人ですら出れるレベルじゃないのかw

697:デフォルトの名無しさん
22/12/05 19:52:29.46 ypvg8sem0.net
水色の底辺なら0完でも温まってるから、逆にレート低いほど出るべき

698:デフォルトの名無しさん
22/12/05 20:16:56.33 F8Lb9jYBp.net
昨日みたいな簡単な問題が無い回だと本書いてる人や赤コーダーみたいな高レベルの人でも0完しちゃうことあるんだなってびっくりした

699:デフォルトの名無しさん
22/12/05 22:13:27.51 dZQIdR+h0.net
AもBも感覚だと普段のABC-Gより難しかったから、0完でも凹まなくていいと思うよ

700:デフォルトの名無しさん
22/12/06 00:38:56.11 2yqxdiTAM.net
赤の0完は流石に戦略やろ
一定時間かけてダメだったら後ろに賭けるしかない
まあ赤でも瞬殺できるわけではない問題だったのは確かだが

701:デフォルトの名無しさん
22/12/07 18:26:11.90 +RxBvimqM.net
赤からすると、終了30分前にA問題解いたとて、って感じだろうからな
最後のギリギリまでC以降に賭けた方がいい

702:デフォルトの名無しさん
22/12/07 20:38:58.44 KlMxIGrW0.net
競プロスレおやすみ~😪今日は少し精進した

703:デフォルトの名無しさん
22/12/07 22:37:11.32 fRJGzVLy0.net
プログラマー板のスレはもうめちゃくちゃだね

704:デフォルトの名無しさん
22/12/07 22:42:32.97 K0BDAES80.net
見に行ったけどなんかすごいことになってた

705:デフォルトの名無しさん
22/12/07 22:50:56.68 K0BDAES80.net
0完で水パフォってところから、AGCのrated制限ってかなり絶妙に設定されてると思ったね
年6開催のころに仮に同じ難易度、all ratedだったら、参加し続けることで一年すべて0完でも緑ぐらいには行きそう

706:デフォルトの名無しさん
22/12/07 23:03:19.10 mi/jvoGH0.net
良い子はあんなスレ見に行っちゃいけません

707:デフォルトの名無しさん
22/12/07 23:22:27.97 K0BDAES80.net
そういえば、この前のAGC-A、最初解法ガチャでMoじゃないか?とか考えたんだけど、それでもできるのかな

708:デフォルトの名無しさん (ササクッテロ Sp88-UA8M)
22/12/07 23:27:50.37 0gV/yTHUp.net
MoチラついたけどA問題でMoが想定解なわけないしな……って思ってすぐ却下しちゃった
テストケース次第では間に合うのかな

709:デフォルトの名無しさん (テテンテンテン MM34-wjaL)
22/12/07 23:34:14.34 +RxBvimqM.net
想定解を知ったあとだとMoでACできる遷移はすぐ作れる気がするが、それって本質的にMoのおかげで解けたことにはならないんだよな
てかその遷移に思い至るんならMo使わんやろっていう

710:デフォルトの名無しさん (テテンテンテン MM34-wjaL)
22/12/07 23:35:50.85 +RxBvimqM.net
メタ的にもAGCのAでMoはないだろうし

711:デフォルトの名無しさん
22/12/08 00:19:44.81 qo7J5oAL0.net
昔直大が998244353なら使えるアルゴリズムが1000000007で使えないことがあるのでメタ読み対策で998244353使う的なこと言ってた覚えあるけど具体的に何があるの?
998244353使ってる問題解いてて気になった

712:デフォルトの名無しさん
22/12/08 00:20:24.69 qo7J5oAL0.net
>>950
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
テンプレからコマンド消えてるのでテンプレに追加してください

713:デフォルトの名無しさん
22/12/08 00:33:13.01 TyHoBXE/0.net
>>711
ACLにもなってるこの畳み込みは 10⁹+7 だとあまり使い物にならない
このアルゴリズムを使うときはほぼ確実に998244353が指定される
URLリンク(atcoder.github.io)

714:デフォルトの名無しさん
22/12/08 00:34:54.52 QbzOT+5k0.net
>>711
畳み込み演算を高速化するFFTの亜種で、数論変換というのがある
普通のFFTは複素数を使うけど、数論変換はずっとmod pで計算するから精度上の問題が生じないのがメリット
p-1 = 2^m * dみたいな形で書いたときにmが大きいpほど扱いやすく、998244353は大きくて、1000000007は小さいから、そこで数論変換を使うかどうかがバレやすい的な話

715:デフォルトの名無しさん
22/12/08 00:38:01.86 QbzOT+5k0.net
>>708
やっぱ一回は思い浮かぶよね
そんなに単純な解だと思わなかったし

716:デフォルトの名無しさん (ワッチョイ 3f7c-rBUd)
22/12/08 05:37:05.87 JblDKfrH0.net
そもそも1クエリ固定の場合を解けないと話にならなくて、セグ木やらMoやらを考えるのはそのあとでないか

717:デフォルトの名無しさん
22/12/08 10:57:49.64 DNmDkQyIM.net
解既知区間を左右に1伸長したときにまた高速で解を求められれば一クエリでも多クエリでも対応できるから、そこに絞ってまず思考してみるというのも戦術としてはあるだろ
帰納的に考える方が多くの場合少ない思考リソースで問題解けたりするし

718:デフォルトの名無しさん
22/12/08 12:32:11.43 JblDKfrH0.net
言ってることようわからんが結局1クエリ解くことから始めてない?

719:デフォルトの名無しさん
22/12/08 13:06:21.88 bAy1n42uM.net
その1クエリを解くにあたり、Moで多クエリでも高速で処理することを見据えて、1クエリの解を伸長で構成することを試してみるって話
一方、セグ木で解くことを見据えるなら、モノイド性をどこかで見出して区間を併合しながら1クエリの解を構成できないか考えてみるというアプローチになる
メタ的には、多クエリで高速で解ける以上は、1クエリの解き方も限定されてくるだろうって考え方だな
別に数学的知見じゃなくて、ただの問題解く手順のお気持ちみたいなもんだから、わからないんならわからんでいいよ

720:デフォルトの名無しさん
22/12/08 13:14:19.81 bAy1n42uM.net
前回のAも、「多クエリを高速で処理できるんだから簡単な区間の特徴で1クエリ分解けるだろう(そもそもAGC-Aだし)」で想定解に至った人も割といるんじゃないか思っているが、発想的にはそれと似たようなものだと思うわ

721:デフォルトの名無しさん
22/12/08 14:18:33.85 sJ8eTx33a.net
区間の伸長が高速にできるなら、解が自明な長さ0や1の区間から始めるだけでは

722:デフォルトの名無しさん
22/12/08 14:28:51.79 QbzOT+5k0.net
自分がMoを考えたと言ったのは、1クエリ解くにしてもDPみたいに漸化式作れたらやりやすそうだからと思ったからかな
もちろん最初のクエリの答えは自明な区間から出発するよ

723:デフォルトの名無しさん
22/12/08 16:31:38.77 qo7J5oAL0.net
なおだいブログ曰くchatGPT使っていいらしいな
Cまでしか解けないしなんか問題文を変換しなきゃいけないらしいから茶以上だと意味ないけど

724:デフォルトの名無しさん
22/12/08 16:37:54.78 tY+Rj1vk0.net
適当に自動化してA、B、CをChatGPTに瞬殺してもらって良いってことなの?

725:デフォルトの名無しさん
22/12/08 16:46:31.91 tY+Rj1vk0.net
3問目まで自動で解いてくれるなら5分ぐらいは節約できるし多少はパフォ上がるかな

726:デフォルトの名無しさん
22/12/08 17:27:26.68 qo7J5oAL0.net
twitterから拾ってきたやつだけど
・英語版の問題文を与える
・数式等をTeXで書く(A_i, 10^2など)
・入力と出力の例を与える
・AtCoderの問題であることを教える
・Pythonで書かせる
必要があるっぽいから普通に解いたほうがいい気がするな

727:デフォルトの名無しさん
22/12/08 17:31:25.35 tAYudyq3a.net
まだ発展途上とは言えイラストAIもあっちゅう間だったしな。
もう俺みたいな底辺は解く楽しさしか残らねーわ。

728:デフォルトの名無しさん
22/12/08 17:49:40.32 bAy1n42uM.net
>>726
TeXへの変換規則さえちゃんと考えてコーディングしておけば、後は自動化できそうな感じもするな

729:デフォルトの名無しさん
22/12/08 17:54:32.49 bAy1n42uM.net
これからはAIをうまく使う力が重要なのであれば、練習としてそういう解き方を研究するのもありだと思ってるわ

730:デフォルトの名無しさん
22/12/08 18:06:46.91 05iO3Ijva.net
それってデータエンジニアじゃん!
Kaggleじゃん!

731:デフォルトの名無しさん
22/12/08 18:15:38.61 qvBkrjzGp.net
kaggle定期的にやりたくなるけど競プロ諸々との両立が難しくて毎回挫折する

732:デフォルトの名無しさん
22/12/08 22:15:49.90 LtNnKYdG0.net
健常者スレおやすみ🥱

733:デフォルトの名無しさん
22/12/09 07:42:08.88 NQJZdVld0.net
健常者スレおはよう🥱寒いね

734:デフォルトの名無しさん
22/12/09 15:37:29.25 JIsCFDDpM.net
Kaggleって機械学習モデルの精度競争的なイメージが強いけど、AIツールを活用した作業効率化みたいなイメージで話してた

735:デフォルトの名無しさん
22/12/10 12:50:59.26 FEPL+5PW0.net
健常者スレおはよう🥱今日はABCだね

736:デフォルトの名無しさん
22/12/10 16:56:35.59 +Gv2eYfg0.net
ChatGPTをAtCoderのコンテストで使用することが認められるならコンテスト出ないって人を見かけたけど、いまはまだ茶色程度の実力だけど、
仮に暖色程度の実力を備えた競プロAIが登場したとして、AtCoder公式から使用を認められたら、どう反応する人が多いか気になる

737:デフォルトの名無しさん
22/12/10 20:31:32.99 Ns16Znepd.net
まだ未参加なのですが過去問ABCのABまでしか解けないとして参加する意味ありますか?
あとABだけ解けて茶色行けますか?

738:デフォルトの名無しさん
22/12/10 20:44:33.79 TTumudvvd.net
コンテストになれば普段より集中して問題に取り組めるので参加する意味はあります
また参加回数が少ないとレーティングに補正がかかって低くなる仕組みもあります
ABだけでは茶色にはなれません

739:デフォルトの名無しさん
22/12/10 20:45:06.16 9Qn6ryF90.net
>>737
英検とかと違って無料で参加できる実戦だから、練習になるし意味あるよ
強いひとはAtCoder以外にもいろんなコンテストに毎週たくさん参加してたりするよ
ABだけで茶色は無理かな
茶色にいくならCまで余裕もって解いてくださいな

740:デフォルトの名無しさん
22/12/10 20:49:39.55 uF1Xgf00a.net
>>736
URLリンク(www.businessinsider.jp)
この前こんな記事読んだんだけど、やっぱりChatGPTは「考えて答えている」んじゃなくて「それっぽい文字列を吐いているだけ」みたいだから、これからよほどのパラダイムシフトがない限り暖色程度の実力を備えた競プロAIは無理じゃないかな
まあそのパラダイムシフトに立ち会ってみたい気もするけど
>>737
本番の時間制限あるなかで考えるのも楽しいし、やってみればいいと思うよ

741:デフォルトの名無しさん
22/12/10 20:59:17.91 Ns16Znepd.net
>>738-739
ありがとうございます
練習で参加してみます

742:デフォルトの名無しさん
22/12/10 22:40:05.14 Ns16Znepd.net
ABしか練習してなかったけどCまで解けて、
DはWAが少し出て時間切れでした残念。
でも緊張感あって楽しかったです。

743:デフォルトの名無しさん
22/12/10 22:43:34.37 6Z0a3kvJ0.net
今日は時間内に6完

744:デフォルトの名無しさん
22/12/10 22:49:32.73 tlhyP2tP0.net
普通にE、Fの実装重かったね

745:デフォルトの名無しさん
22/12/10 22:51:50.49 O4kKtbHo0.net
D難しくなりすぎ・・・・。もらう方でやってバク取れず。2重dpでうまくいかない事に気づくまで40分。

746:デフォルトの名無しさん (ワッチョイ 67b1-URIU)
22/12/10 22:56:44.55 q492UgBQ0.net
寝てたら終わってた草

747:デフォルトの名無しさん (スププ Sdff-Opz5)
22/12/10 23:04:25.58 Ns16Znepd.net
D解けた人の境界見たら、1245位だったのでかなり難解だったんですね。
ダメ元でサンプル通ったから提出したら当然WAでしたが解説見てもさっぱりでした。
少しずつアルゴリズムというものを勉強したいと思います。

748:デフォルトの名無しさん (ワッチョイ 4799-70Cd)
22/12/10 23:04:45.70 WdAZ/8IS0.net
editor使わず糞アットコの糞サイトbuiltin editorだけで書いてみた
やっぱり全然だめだな(´・ω・`)

749:デフォルトの名無しさん (ワッチョイ 67bd-BsWY)
22/12/10 23:11:10.88 tlhyP2tP0.net
総和が○○のときの△△を求めよ、みたいな形はナップサックDPであることが多いね

750:デフォルトの名無しさん
22/12/11 00:16:52.91 sLVycVhX0.net
同じ問題のレートが1年で50下がってるんだから、Dは茶色下くらいを目指そう

751:デフォルトの名無しさん
22/12/11 01:07:10.13 Jt/PvfWs0.net
よかった
俺の調子が悪かったわけじゃないのか
三重ループまでなんとなくわかってたけど実装が複雑になりそうでできなかった

752:デフォルトの名無しさん
22/12/11 02:02:20.83 pBXkhdRDM.net
Ex見てるがやっぱり分割統治FFTいつまで経っても慣れんな

753:デフォルトの名無しさん
22/12/11 02:54:41.11 7rOr8/1H0.net
愛知ループは三重の三倍難しいと言われてるからな。。

754:デフォルトの名無しさん (ワッチョイ 7fe6-KKgq)
22/12/11 08:11:02.37 7I6zjj+w0.net
DPや二次元配列などでarray型の生配列を使う例が多いのは慣習的なものですか?
処理が速いとか利点があるのでしょうか?

755:デフォルトの名無しさん
22/12/11 08:55:06.62 Mvtwu1hIa.net
arrayより楽な選択肢なんかある?
arrayじゃダメなときは当然そっち使うにしても

756:デフォルトの名無しさん
22/12/11 09:07:28.08 6A4ez8rK0.net
青安定のために参戦を決めていたのですがぐっすり寝てしまい出れなかったであります🤓

757:デフォルトの名無しさん
22/12/11 18:45:09.52 7I6zjj+w0.net
>>755
デバッグしたい時などにあれこれ配列の中身除くのにvector配列の方が扱いやすいなと思って使ってました
解説でもDPでvector使ってることもあればarray配列使ってたりと別れるので好みとは思うのですが
何かarray型を選ぶ利点があるのか素朴な疑問でした
>>arrayじゃダメなときは当然そっち使うにしても
array使ってる例が多い気がしたのでvectorからarrayに変更して試してたのですが
vectorに慣れすぎていて逆に使いづらいと思ってvectorに戻しました
ダメな時に結局vectorにするのでそれなら最初からvectorで統一しようかなと
まだ経験少ないので試行錯誤してみます

758:デフォルトの名無しさん
22/12/11 20:50:40.50 OXIrt9Sb0.net
特に多次元にしたときに顕著だけどarrayの方がvectorより速いし省メモリ

759:デフォルトの名無しさん
22/12/11 21:02:26.53 T9/ITlNya.net
初期値をINFで埋めるとかしたいときは vector でコンストラクタ使うかな それ以外は生配列
array は使う機会ない

760:デフォルトの名無しさん
22/12/11 21:52:54.88 yzn51s/N0.net
map の key にする時なんかはvectorよりかarrayのが早いパターンが多い気がする

761:デフォルトの名無しさん
22/12/11 21:59:28.13 7I6zjj+w0.net
>>758
多次元、速い、省メモリ
試行錯誤する時に意識して使い比べてみます
>>759
int a[100] 例
生配列とarray型を混同してましたが生配列の方です
確かにわざわざarray型を宣言して初期化することは無いですね
ありがとうございました

762:デフォルトの名無しさん
22/12/11 22:56:42.06 wyaxD1Cj0.net
2次元までの配列ならvector 使うけど3次元以上になると生配列使う
宣言や初期化で文字数が増えるのが嫌

763:デフォルトの名無しさん
22/12/11 23:05:39.85 AimMYYQ4M.net
そもそも std::vector と std::array って比較するようなものじゃない気が……

764:デフォルトの名無しさん
22/12/11 23:35:42.07 xpQepGE40.net
自分はもっぱらvectorで、生配列もstd::arrayも競プロじゃほとんど使ってないけどそれでTLEやMLEしたことはないし自分が使いやすいほうでいいよ

765:デフォルトの名無しさん
22/12/11 23:44:16.93 wyaxD1Cj0.net
マラソンだと上位人はよくarray使ってる印象

766:デフォルトの名無しさん
22/12/12 00:55:20.18 L4LAFoUJa.net
マラソンは定数倍高速化した分だけループ回数増えてスコア伸びるからじゃね
アルゴなら5msのACも1900msのACも変わらんし、AtCoderでC++使っててarrayならギリギリ通るみたいなのはそもそも他の何かが間違ってると思った方がよさそう

767:デフォルトの名無しさん
22/12/12 05:57:59.81 KG5/v6vGa.net
定数倍高速化してギリギリ通るの、平方分割的な半分嘘解法など?

768:デフォルトの名無しさん
22/12/12 08:27:45.85 tiuAOnkep.net
ミラー・ラビンとかポラード・ローを使った高速な素因数分解アルゴリズムって競プロでの使用頻度どれくらい?
昨日のこどふぉのCの問題設定が微妙でこの高速な素因数分解アルゴリズムじゃないと計算量的に怪しかった(実際は√nの素因数分解アルゴリズムを定数倍高速化するのでも通るっぽい)んだけど存在を忘れてたせいで解けなかった

769:デフォルトの名無しさん
22/12/12 09:29:21.46 Ei5MD97h0.net
自分も解けなかった
自分が解いてきた限りではミラーラビンやロー法じゃないと解けない問題は見たことない
なぜ10^6にしなかったのか謎

770:デフォルトの名無しさん
22/12/12 10:59:24.92 cdBddvHVM.net
高速素因数分解が前提の問題は普通にあるけど AtCoder の rated コンでは出なさそう
Codeforces も基本出さない方針な気がするけど writer の次第だからわからん

771:デフォルトの名無しさん
22/12/13 05:21:16.73 uiBmFvT2p.net
こどふぉ来週の月曜日までほぼ毎日コンテストあるんだけど過密すぎるでしょ

772:デフォルトの名無しさん
22/12/13 09:46:33.18 HgDhzteS0.net
コドゲやるぞやるぞ

773:デフォルトの名無しさん
22/12/16 16:05:11.86 2WRHo5T/p.net
蟻本4.4章の巡回スケジューリング問題(円環上での区間スケジューリング問題)のソートを除いたO(N)解法って何?
円環を切って2つ繋げて区間にして考えるのかなって思ったけど上手くいかない気もするし元の問題が見つからないから確かめることも難しい

774:デフォルトの名無しさん
22/12/16 20:10:17.03 R8AxMjl90.net
各区間を頂点として、蟻本の解法の中で構築してるnextを辺としたグラフを考えると、なもりグラフになっててサイクルをちょうど一つだけ含む
答えはこのグラフ上のパスで表せる
サイクルに含まれない頂点を含む解を考えると、パスの始点と終点を一つ進めたものも有効な解であることが示せるので、
全ての頂点がサイクルに含まれるようなパスだけ考えればいい
あとはサイクルの上でしゃくとり法みたいなことやればできそう
で合ってるかな……?

775:デフォルトの名無しさん
22/12/16 21:07:39.53 R8AxMjl90.net
しゃくとり法しないでもサイクル上の適当な頂点から始めて極大な解を一つ取れば大丈夫か

776:デフォルトの名無しさん
22/12/16 22:19:14.38 1iEDLF9Cp.net
>>774
確かにグラフ上で考えると求める区間の選び方はサイクルに含まれることが必要で、辺の数=頂点の数と全ての頂点の出次数1から全体としてはなもりグラフ的な感じにはなりそうだからだいたいその方針で良さそうっぽいな
ありがとう

777:デフォルトの名無しさん
22/12/17 21:30:59.31 1O9afRlw0.net
全完出ました

778:デフォルトの名無しさん
22/12/17 21:44:36.74 1O9afRlw0.net
2位と3位が2秒差

779:デフォルトの名無しさん
22/12/17 22:41:47.95 Ougsnu4Va.net
Dさぁ、過去問から漁れないと時間的に無理だろ

780:デフォルトの名無しさん
22/12/17 22:48:54.79 8O7j2b6E0.net
D通ったけど難易度高すぎ。E,Fの位置にしとけと。

781:デフォルトの名無しさん
22/12/17 22:49:30.45 Ougsnu4Va.net
つーか、Dって
連結がない頂点がある場合、答えは0じゃないよね?
追加したら二部グラフになりえると思うんだけど
このケース考えて完全に迷走した

782:デフォルトの名無しさん
22/12/17 22:51:41.65 I7m2bma6p.net
E全域木になるの言われたらそうなんだけど見えなかったし精進が足りて無いのかな
Dは数ヶ月前だったらEに置いてあった気もするしインフレしすぎ

783:デフォルトの名無しさん
22/12/17 22:53:14.13 8NnsdriJ0.net
>>781
そうだよ
例えば辺が0個のグラフが与えられたとすると、答えはN*2になる

784:デフォルトの名無しさん
22/12/17 22:53:56.18 8NnsdriJ0.net
あ、N*2ではないわ・・・、すまん

785:デフォルトの名無しさん
22/12/17 22:54:02.71 ZH4mYY1r0.net
D問題
やり方として
・まずは連結グラフに分解する
・連結グラフが3以上だった場合は無理判定をする
・そして各連結グラフ毎に
とりあえず各頂点に黒と白を割り振って、
このグラフそのものが2部グラフになっているかを判定する
2部グラフになっていた場合に、各連結グラフごとに自信が持ってる
反対の色の頂点数-頂点数をanswerに足していく
そして、各連結グラフについては
グラフ1の黒数×グラフ2の黒数
グラフ1の黒数×グラフ2の白数
グラフ1の白数×グラフ2の黒数
グラフ1の白数×グラフ2の白数
の4つを足す
っていう解法を思いついたんだけど、グラフ問題といたことなかったから、各頂点がどの気に属しているかっていう判定ができなかった
俺のやり方、・まずは連結グラフに分解する
さえクリアできテレバこのやり方であっていた?

786:デフォルトの名無しさん
22/12/17 22:55:32.46 ZH4mYY1r0.net
cまでは10分ちょっとでクリアできるようになったけど、
dがここ一か月難しい気がする
酒のみすぎかしら

787:デフォルトの名無しさん
22/12/17 22:57:13.17 Ougsnu4Va.net
>>785
そう思ったけど、解説にはその点が触れられてない

788:デフォルトの名無しさん
22/12/17 22:59:39.92 Ougsnu4Va.net
いや、それがあのBとWの入れ替え関数式か。
D解けた人良くここまで計算し切ったね
グラフの計算に二部グラフの計算加えて、
さらに計算式も考えるとかやりきれんよ。

789:デフォルトの名無しさん
22/12/17 23:02:27.38 I7m2bma6p.net
自分は余事象じゃなくて普通に足し合わせたけど、二頂点が異なる連結成分にある場合は後から色を合わせられるから全通りOKっていうのを最初は見逃してた

790:デフォルトの名無しさん
22/12/17 23:05:00.09 ZH4mYY1r0.net
グラフの分解ってどうやるのがいいの?
普通はdfsでグラフは見ていくんだろうけど、
for分で回すのも違うと思うし、unionFindとかで調べることになるの?

791:デフォルトの名無しさん
22/12/17 23:13:31.41 8NnsdriJ0.net
おれはUnionFindつかってないよ
まあ使ったほうが見通しが良いなら使ってもいい&#8232;
2部グラフとして考え、連結成分ごとに2色に塗り分けて、色ごとの頂点の数を数えて、組み合わせを計算して足し合わせた
これだけ

792:デフォルトの名無しさん
22/12/17 23:23:39.77 8O7j2b6E0.net
青の人が3完だったらしーからD解けなくても全く問題ない気がする

793:デフォルトの名無しさん
22/12/17 23:28:22.91 M78ib0lA0.net
グラフの分解は、
visited[v]: 頂点vを訪問したか
を用意して、for (int v=0; v<N; v++) で visited[v]がFalseなら、
そのvからbfsをして、visitedを更新しながら、色々やる
という方法でやってる
二部グラフ判定なら、visitedは頂点の色の配列で代用できる

794:デフォルトの名無しさん
22/12/17 23:31:28.58 XFakiAR1a.net
Nが最大で2*10^5だから、たぶん解法はO(N)だろうとあたりをつける
つまり、おそらく「頂点iから伸ばしてもいい辺の本数」を定数時間で求めさせるのが想定解だろうと予想できる
色々考えると「頂点iから伸ばしてもいい辺の本数」は
(頂点iと同じ連結成分に属している、頂点iと違う色の頂点の数) - (頂点iの次数) + (頂点iが属していない全連結成分の頂点数)
だと求まるから、この総和が答えって感じで解けた

795:デフォルトの名無しさん
22/12/17 23:39:16.37 st/Rnmpd0.net
>>785
連結成分は3つ以上あってもいいよ

796:デフォルトの名無しさん
22/12/17 23:39:58.72 ZH4mYY1r0.net
>>793
なるほど!サンクス

797:デフォルトの名無しさん
22/12/17 23:44:00.79 ZH4mYY1r0.net
>>795
3つ以上あると駄目じゃない?
連結グラフA,B.Cがあったとして
AとBはつなぐことできてもCは繋がらないから全体として2部にならない
って言おうと思ったけど問題文に「追加して得られるグラフ」は
ってあるね
ここも組み合わせが必要になるのか
20万頂点全部が独立したグラフだったら(M=0と書いてるし)
20万×19万9999/2になりそうだな
その場合どうやって回避してるの?

798:デフォルトの名無しさん
22/12/17 23:48:00.53 st/Rnmpd0.net
>>797
なんか勘違いがありそう
そもそも連結じゃなくても二部グラフと呼ぶよ

799:デフォルトの名無しさん
22/12/17 23:48:21.10 TrtUePRr0.net
みんな当たり前のように解いてて凄えわ
まずは3完出来るようになりたい

800:デフォルトの名無しさん
22/12/18 00:02:11.91 eWCJrp150.net
今回のはDにしては難しかったし、あんまE問題ぐらいの難度だと認識してよさそうではある
2部グラフの特徴を考えつつ、場合の数を立式して計算しないといけないから、
自分で解いてても、「Dでこんなややこしいことしないといけないの? 方針ミスったか?」って不安になりながら解いてた

801:デフォルトの名無しさん
22/12/18 00:10:19.26 FIRAaHDO0.net
Cがたまに解ける程度の参加数回の灰色です
全探索とbit全探索はたくさんやったので次に何をやったら良いか
最初に覚えるアルゴリズムのおすすめを1つか2つくらい教えてください
ちなみにDPは10問くらいやってみたのですが理解が進まず一旦保留してます
DPの初見問題だと何を当てはめれば良いのか分からずコピペ出来るようなものしか正解出来ません

802:デフォルトの名無しさん
22/12/18 00:14:22.07 HDBBZBFh0.net
>>801
累積和と二分探索勧めたいです
URLリンク(qiita.com)
こういうの見ながらやると学びやすいかも

803:デフォルトの名無しさん
22/12/18 00:18:22.74 5nfx19Yz0.net
>>798
各独立した連結グラフがあったとして、解き方としてはそれぞれの色のパターン4色かけ合わせた解き方をするじゃない?

その組み合わせ数が、例えば全部20万個の点が全てどれとも連結していなくて独立だった場合、
20万から2つの組み合わせを全て調べるっていうようになると組み合わせ爆発が起きるんじゃないかって思ったんだけど

804:デフォルトの名無しさん
22/12/18 00:21:29.77 FIRAaHDO0.net
>>802
ありがとうございます試してみます
上から順番にやれば難易度的にも徐々に上がってくって認識でOKですか?

805:デフォルトの名無しさん
22/12/18 00:23:25.03 eWCJrp150.net
>>803
>>797 に書かれてるように N=20万、M=0なら 20万×19万9999/2 つまり 19999900000 になる
答えの数値は大きいけど、計算量が大きくなるわけじゃないから問題ない

806:デフォルトの名無しさん
22/12/18 00:26:21.80 eWCJrp150.net
>>803
>20万から2つの組み合わせを全て調べる
ていうか、そんなことしない
組み合わせ数の立式をしてくださいな

807:デフォルトの名無しさん
22/12/18 00:37:00.80 HDBBZBFh0.net
>>804
いや、そんなことはないかもです
Union-Findとか累積和はダイクストラよりも分かりやすいと思うので自分のやりやすい順序で埋めてくといいかなと思います!

808:デフォルトの名無しさん
22/12/18 00:37:33.08 5nfx19Yz0.net
>>805
んんんん??
だって連結グラフA,B,Cがあったとして、それぞれの黒点白点を4通りかけ合わせるわけじゃん
結局、ab,bc,caのように 20万C2の組み合わせについて調べないといけないことにならない??

809:デフォルトの名無しさん
22/12/18 01:02:37.00 Un2uABCHM.net
>>808
vector<pair<long long, long long>> v;
に各連結成分の頂点数 {黒, 白} が入ってると思ってくれ
long long ans=0, sum=0;
for (auto [a,b] : v) {
ans += a*b // 同じ連結成分で違う色の2頂点の組の数
ans += (a+b)*sum; // 違う連結成分なら同色の2頂点も可
sum += a+b; // 見終わったやつは足す
}
あとは既に張られてる辺 M 本引けばいい

810:デフォルトの名無しさん
22/12/18 01:10:08.07 FIRAaHDO0.net
>>807
ありがとうございます、上から順番にやってみつつ且つ自分のやりやすい順序で埋めてみます

811:デフォルトの名無しさん
22/12/18 01:23:59.15 VXpf7ZWU0.net
>>809
待ってね
Cプラプラ読んだことないから少し理解に時間がかかりそう
読んでみる

812:デフォルトの名無しさん
22/12/18 01:29:09.60 VXpf7ZWU0.net
>>809
なるほど!!
これすごい

そうか、黒、白で分ける必要がなかったんだね

813:デフォルトの名無しさん
22/12/18 01:37:39.53 VXpf7ZWU0.net
そうか。。普通に感動した
競プロの人たちすごいな

愚直にやるやり方しか思いつかなかった5chやっててよかったって今初めて思ったくらい感動しました
ありがとう

814:デフォルトの名無しさん
22/12/18 01:45:40.04 VXpf7ZWU0.net
>>809
ans+=a*b
ここだけわからない
正方形だったらそれぞれの頂点2だから、その計算だと4になるけど、
繋がっていない頂点数はその計算だと求められなくない?

815:デフォルトの名無しさん
22/12/18 02:04:39.56 Un2uABCHM.net
>>814
「繋がっていない頂点」が何を指してるのか分からない
もう少し厳密に書いてほしい
入力が
4 4
1 2
2 3
3 4
4 1
だとして、連結成分は1つだけで白2黒2
>>809のループは1回だけ回って ans は 4
既に張られてる辺数4を引いて答えは0です

816:デフォルトの名無しさん
22/12/18 02:13:34.94 W2G5o+in0.net
二部グラフか判定
連結成分のペアに対して要素の個数の積出す(累積和使う)
連結成分の内部でいい感じな計算
とかやったけど結構コード長くなってしまった

817:デフォルトの名無しさん
22/12/18 02:13:42.38 8rlMlDEcp.net
>>813
愚直にコードを書いて解けるのはABC-BかCまでで、それ以上の問題は愚直に実装すると問題の制限を超過するからどう工夫するかが問われて応用的になると思っていいよ
ここからアルゴリズムやらデータ構造やらが活躍するんだけど、業務とかで役立つ機会は少ないし(寧ろABC-C以下みたいに愚直に書く機会の方が多い)から役に立たない云々言われることがあるって感じだと思ってる

818:デフォルトの名無しさん
22/12/18 02:33:16.14 9rjazUL60.net
俺も累積和取る感じでやったけど解説の方がスッキリしてるな

819:デフォルトの名無しさん
22/12/18 09:11:43.17 oY6X+UMna.net
>>814
822と計算式違うよ
0だったsumを更新してるだけだよ

820:デフォルトの名無しさん
22/12/18 09:16:03.59 oY6X+UMna.net
>>814
あ、ごめんその前の計算式か
まずは実際にありえる辺の総数を求めて、
最後に繋がってる本数を引くって事
例題の場合
白2,黒3だから2*3がありえる辺の総数になって、
そこから引かれている4本を引くと答えの2本が出る
重複なしとか前提があるから出来る方法だけど
そう言う私もD解けなかったですけどねw

821:デフォルトの名無しさん (ワッチョイ db2d-ZR1D)
22/12/18 14:06:43.40 ymgsFwaZ0.net
c問題で水色とか紫とかがTLE出しまくってるの見ると
何やってるんだと思うよね

822:デフォルトの名無しさん
22/12/18 15:01:37.69 MTKzjrMB0.net
C問題って間違えようがないと思うんだけど、
どういうところで間違えるんだろう

823:デフォルトの名無しさん
22/12/18 15:25:33.21 V0HgyU5o0.net
Pythonなら答えの文字列を文字列のまま作るとかすればTLEじゃね

824:デフォルトの名無しさん
22/12/18 15:27:06.21 jOkKJleE0.net
なんとなく多重ループ正規表現でやってTLEしても気にしないくらいの寛容性が必要

825:デフォルトの名無しさん
22/12/18 15:29:13.85 V0HgyU5o0.net
PythonistはListで保持してjoinする癖を叩き込まないといかんのじゃ(´・ω・`)

826:デフォルトの名無しさん (ササクッテロ Spb3-GZpS)
22/12/18 21:15:22.71 7ZxBUPRFp.net
紫ならそもそもこどふぉの話では

827:デフォルトの名無しさん
22/12/19 12:13:17.90 j4becYJFa.net
atcoder probrems をダークテーマにしてると青が紫になるからそれじゃね

828:デフォルトの名無しさん
22/12/19 15:28:31.49 mlNqZ/yUa.net
この競技のレートって絶対評価?相対評価?
レート自体は相対評価に見えるのに、レートに対する評価は絶対評価に見えるのおかしくない?
曲がりなりにもロジックの天才達が作ったシステムなのにこんな欠陥ある?

829:デフォルトの名無しさん
22/12/19 15:33:52.49 umNN1xHI0.net
それは思う。正規分布的なレートの平均が200以下で、プログラマ一般では灰色上でかなり優秀ハズなのに茶色が雑魚という事になっておる。茶色でも一通りのアルゴリズムは使えるハズ。

830:デフォルトの名無しさん
22/12/19 15:42:55.81 j+/VmCNx0.net
社長曰くこんな感じだから、安心していいでしょ
URLリンク(twitter.com)
AtCoderがそのまま役立つ業務ってだいぶ少なくて、
【評価高】は赤まで、
数理最適化・研究開発
【評価中】は青~水まで、(黄もまれに?)
バックエンドエンジニア・機械学習エンジニア
【評価低~評価無】は水~茶色まで、
その他のITエンジニア
くらいがプラス評価になります。関連度が高ければ高いほど高いレートが評価されやすくなり、逆に低いと低いレートですぐカンストしちゃう、って感じ。
評価低に関しては「コードが書けることが保証されてる」くらいのアピールにしかならないです。
(deleted an unsolicited ad)

831:デフォルトの名無しさん
22/12/19 15:46:23.61 j+/VmCNx0.net
青色からはバックエンドエンジニアや機械学習エンジニアの適正としても良い評価もらえるってことだ

832:デフォルトの名無しさん
22/12/19 16:18:03.87 z2IUcPyNM.net
あいつら別にロジックの天才ではないだろ
ガチャガチャパターンマッチしてるだけで嘘投げまくりだし

833:デフォルトの名無しさん
22/12/19 17:19:19.70 umNN1xHI0.net
ABCのFまでで機械学習のスクラッチに関係ありそうな問題を見たことない。なんせ連続量の最適化がほぼ出ない。数理最適化詳しくないけど在庫やポートフォリオの最適化など近いのはヒューリスティックで普通の方は見当違いでは。

834:デフォルトの名無しさん
22/12/19 22:55:51.16 R3+0mHMkM.net
競プロの問題がそのまま何かの業務に役立つと思ってんのかね
もっと根っこのほうの潜在的な適正を測るのにこそ真価を発揮する競技だろ 実際レートが威力を発揮するのは中途より新卒

835:デフォルトの名無しさん
22/12/19 23:00:19.44 TVP15GFUr.net
AtCoder Companions 使ってみたけど便利だな。

836:デフォルトの名無しさん (オッペケ Srb3-58G+)
22/12/20 00:58:20.98 rMM3/RNdr.net
おさわりOK?

837:デフォルトの名無しさん
22/12/20 02:42:22.83 8HBS9cc/0.net
ふと思ったんだけど、全域木の全ての2点間の距離の平均ってどうやって求めたらいい?
全域木が直線だったらめちゃくちゃ簡単だと思うけど、複雑に分岐してたら20万ノードくらいあったら無理かしら?

838:デフォルトの名無しさん
22/12/20 03:06:34.58 qq1PDL7x0.net
全域ってのがよく分からんが、木なら難しくない
総和が分かれば平均は分かるから総和の話をするとして、各辺についてその辺が距離に寄与する分を足せば良い
これはこの辺を消した時にできる2つの木の頂点数の積だから、木DPを1回すれば求まる
O(|V|)

839:デフォルトの名無しさん
22/12/20 08:11:20.58 njbGKqT7a.net
>>830
いや、それを憲法のようにずっと変えないのはおかしくない?って言ってるんだが
全体的な底上げがされてるならその限りではないでしょ
2年前の青と今の青って解ける問題が違うよねって話。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

409日前に更新/229 KB
担当:undef