競技プログラミング総合スレ 66

レス数: 479

概要: ↑2行になるようにする 競技プログラミング、オンラインジャッジ、プログラミングコンテストやCTFに関する雑談スレ 次スレは >>950 AtCoder https://atcoder.jp/ yukicoder https://yukicoder.m...
No.1
↑2行になるようにする
競技プログラミング、オンラインジャッジ、プログラミングコンテストやCTFに関する雑談スレ
次スレは
>>950

AtCoder
https://atcoder.jp/

yukicoder
https://yukicoder.me/

Codeforces
https://codeforces.com/

CodeChef
https://codechef.com/

Project Euler
https://projecteuler.net/

CLIST
https://clist.by/

AtCoder Problems
https://kenkoooo.com/atcoder/

AtCoder Clans
https://kato-hiro.github.io/AtCoderClans/

※前スレ
競技プログラミング総合スレ 65
https://mevius.5ch.net/test/read.cgi/tech/1672026457/
No.2
ガイジもこっちこいよおら
No.3
スレ立てさんくす
No.4
IP付けろ
No.5
IP出しつつガイジ大集合せよ
No.6
優勝ですと言いながらSNSに食べ物の写真を上げるのは面白いと思ってやっているのですか
No.7
Twitterってそういうサービスだよ
No.8
d問題パリティと言われてみればなるほどだけど
2500人も解けてるの凄いなぁ…
No.9
凄いというより、みんなatcoder特有のノリに慣れてきただけとしか思えない
No.10
トップ層で今回作問に携わってないのに「崖ができるのは解けないユーザーが悪い」とか言ってマウント取るのなんなんだろ
ABCでE~F黄diffなら不満出るのは必然だし正当では
No.11
本当にトップ層かどうかは置いといてTwitterの競プロ界隈()なんてそんなもんだから気にしなくて良いでしょ
No.12
崖があるとパフォーマンスの計測が微妙になるから好ましくないことではある
No.13
こどふぉの米欄でも見る光景だな
No.14
今回のAのFA gpt使ったコードなんだね
その人1分以内でAとCACしてるしCまでで問題文が簡潔だったら任せても良さそうな感じか
No.15
Cまではもう諦めるとして、D-FでGPTでACを避ける作問をするとより難しくなるんじゃないだろうか
No.16
どうせチョクダイここ見てるんだろ
問題文を画像で提供すればキーボードを叩く時間がかかるからAIの爆速解答は防げる
視力障害の人も防いでしまうから読み上げ音声も同時提供だな
動画ならなお良し
アプリ作成にはアルゴリズムだけじゃなくこういうソリューションも必要だぞ
No.17
あと読み上げはすぬけ君がボソボソ言うんじゃなくその辺の安い声優やVtuberに頼むか音声合成な
No.18
無能コンサルってこういう感じなのか
No.19
自分が有能だと勘違いしてるタイプが一番厄介だわな
No.20
何も反論できなくていつもの瀕死の人格攻撃
悔しそうで草
No.21
効いてて草
No.22
マジで効いてて草
No.23
ちんまんちんまんおちんこ〜♪
No.24
でもすぬけ君のASMRならちょっと見たいかも
No.25
やっぱ自分でも無理筋だと分かっているしょうもない暴言でレスバがしたいだけのやつだったか
No.26
無理筋じゃなくて裏筋刺激してよ、(*´Д`)ハァハァ
No.27
効いてて草
論破されて悔しいのにまったく反論できないってどんな気持ち?w
No.28
AIやばすぎて今のトップレベルはともかく始めたやつとか茶緑あたりはやる気なくなるんじゃないかこれ
No.29
これからのプログラミングはペアプロになるだろうからatcも許容すると思ったけど、コーディングテストで価値があるのがCくらいまでなのと、そこまでは絶対手動でかけるべきだから、画像とかにするんですかね。
最近、スクショどころかカメラで撮影しても全く映らない動画とかあるし。
No.30
その理論だと将棋とか誰もやりたがらない気がするけどそういうのあったんすかねやっぱ
No.31
画像になったらここでそれを否定した無能がどう発狂するか楽しみ
No.32
今回のDで緑パフォしかないのレベル高すぎ…
No.33
数え上げ方はかなり典型的だけど一昔前なら水色下位くらいはあった気はする
No.34
競技プログラミング(主にatcoder)で計算量を問われず無視できるならその問題のレベルどれくらい落ちる?
色一つ下になるくらい?
No.35
計算量無視して良いなら全問題が茶色以下だと思うが、そういう話ではなく?
No.36
>>35

つまり計算量無視ならatcoderの問題はどれも実装は簡単てこと?
計算量で難しくしてるようなもんてことになんの
No.37
>>36

全部愚直に全探索してもいいよってこと?
No.38
愚直全探索でいいならほとんどの問題は茶色ぐらいの実装ゲーになりそうだね
No.39
他は知らんがatcoderは計算量削減が全てのゲームじゃないの?
No.40
逆に難易度の重心がほぼ実装の問題とか無いんかな?
No.41
実装ゲーもあるが、指数時間や階乗時間計算量許してしまうと大体根底から問題が破壊される気がするな
No.42
中高大学受験生様の息抜きとしてもアピールしたいから実装系問題が増えるのはNG
No.43
ほぼ愚直全探索で間に合うみたいな実装系メインの問題は基本茶色以下になるけど、再帰とかバックトラックDFSとかが絡んできて問題も面倒だと水色程度にまではなるかな
No.44
なにいってだこいつ
No.45
無限が出てくる期待値 mod 系はどうしようもないことがありそう
それこそ e とか
No.46
確率問題はそれこそモンテカルロで無限の精度を出せないか?
無限の時間がかかるけど、計算量無視していいから余裕だし
No.47
よく考えたら無限回の確率 mod 998244353は無理だったわ
そういうのはdiff高いな
No.48
まあ答えが単純な有理数で分母の大きささえ評価できればその理屈は成り立つな
e は p+q/e+r/ee とかいう形してるから一筋縄ではいかなさそう
連分数的な計算できたりするのかな
No.49
ゴリ~
No.50
ゴリ!?🦍
No.51
げり!?💩
No.52
単純にif文が100個必要な問題出してくれ
No.53
ガイジは集合せよ
No.54
近頃のお店の支払いはif文が100個ぐらいありそう
支払い方法が何十通りもあるし
組み合わせて支払えることもあるし
ポイントの付き方とか複雑だし
No.55
業務プログラミングの方が大事ってことだね
No.56
ABC168C問題について質問
中心角を求めてから余弦定理を使うところまではわかったんだが、肝心な実装ができない
このコードの問題ってどの辺かな
テンプレは省略しています
#include<bits/stdc++.h>
using namespace std;
int main(){
ll A,B,H,M;
cin>>A>>B>>H>>M;
ll m=5*H;
ll l=min(abs(m-M),60-abs(m-M));
if(l==30){
cout<<A+B<<endl;;
return 0;
}
if(l==0){
cout<<abs(A-B)<<endl;
return 0;
}
dl pi=acos(-1);
dl ans=sqrt(A*A+B*B-2*A*B*cos((dl)l/30*pi));
printf("%.12lf\n",ans);
}
No.57
結構考えたんだがわからない
No.58
計算幾何難しいな
No.59
llはlong long
dlはdouble な
No.60
短針のズレを考慮できてない
No.61
ありがとうございます
短針のずれを考慮して実装し直します
iqが低すぎてそこまで頭が回りませんでした
No.62
無事実装できました
やっぱり競プロはIQゲーだと思います
No.63
あぁっIQ!(イク)
No.64
そうだよ、IQゲーだよ
というか算数のパズルだから、中受してるひとが有利
だから上位者は筑駒や灘だらけだろ
No.65
はーい、ガイジのみなさん、こちらに集合してください
No.66
ンガガーイ爺爺ジジジジジジwwwww
No.67
ガイジは仲間を呼んだ
No.68
あ、ガイ
No.69
ワクチンは毒ゴリ!
No.70
おれも競プロのおかげでイベルメクチンを使ってコロナを乗り越えることができたわ
No.71
G問題、凸包の上側と下側を抜き出すのにかなり時間がかかってしまったね
ライブラリ化してもいい気がする
No.72
ゴリってワクチン打ってない陰謀論者なのに、飲み会に呼ばれるしオンサイトにも出てるんだ。羨ましーーー!
No.73
GPTはそのうち画像や音声データも読み込めるようになるって既に発表されてるぞ
No.74
今日のこどふぉで「放物線と直接が共有点を持つかは判別式の正負で判定できる」っていう受験数学典型が出題されたけどこんなものも出るんだ 懐かしい
No.75
めちゃくちゃ評判悪そう
No.76
下痢 ブリッ
No.77
むしろ競プロは受験数学の知識だけで解けるべきじゃない?
No.78
ワーキングメモリが足りなくて再帰で複雑なことされると理解に時間かかるんだけど、皆さんなにか工夫してます?
No.79
あんなの慣れだろ
まぁ、細かい事言うと描く対象が木の時はこんな感じグラフの時はあんな感じみたいな
数列の漸化式みたいに一定の公式みたいのあるんだけどさ
No.80
atcoderでおかしいと思うのは、Dまでで再帰の出現頻度が異常に少ないこと。
最後に見たの半年以上前なような。
アホみたいに単純になりがちなのと、中高生が取り組みにくいのが要因か。
No.81
は? 先週のeも再帰で解いたんだが
No.82
あ、ごめんDまででってことか
わけのわからん制限つけるね
No.83
再帰で解けるものは山程あるのに使ってないってだけだろ
No.84
ループは再帰じゃん
No.85
再帰じゃないよ反復だよ
No.86
再帰呼び出しじゃないがi++は再帰的な式と言えるかな
No.87
むしろ再帰は慣れるとワーキングメモリが少なくても書ける部類のコードになる
関数の引数に対する処理と、終了条件の二つに気をつければいいだけ
全体像を追うんじゃなくて、あくまでもその関数を一回実行したときの処理だけ考える
No.88
木がBSTか判定するコードなんですけど、こういうのって頭の中で全部イメージできます?
このロジックも自分で初見では組めなかったんですよね
def validateBST(root):
def isValid(root, minVal, maxVal):
if root is None:
return True
if not (minVal < root.data < maxVal):
return False
return isValid(root.left, minVal, min(maxVal, root.data)) and isValid(root.right, max(minVal, root.data), maxVal)
return True if root is None else isValid(root, -float("inf"), float("inf"))
No.89
知的障害とかおありでしょうか?わかりますよ?
<=のほうがよくね、minとかmaxは余計だね、とか
No.90
寒色がイキってんなー
No.91
ガイジ同士仲良くしようね、ってことだよ
No.92
ある頂点に対して、2つの子それぞれを根とする部分木の情報が定まってれば、その頂点について簡単に判定できる
数学的帰納法の考え方というか、局所的には簡単な処理できるってことがわかるとそんなに大変じゃなくなる
No.93
>>89

より良い書き方があるならコード見たいです
Pythonだと慣れてるので嬉しいです
No.94
89でコメントした通りだよ
No.95
ガイジ同士仲良くしろよw
仲良くしようと頑張ってそれなのかw
No.96
>>94

minとかmaxって関数のことですよね?
これないと上位ノードより大きい値が左の下位ノードに存在することを許しちゃいませんか?
No.97
もしかして自演でやり取りしてるんじゃないかと思うくらいどっちも頭悪いな
No.98
if not (minVal < root.data < maxVal):
return False
がある時点で明らかにその下の行では
min(maxVal, root.data)) == root.data
じゃない?
No.99
そら明らかだよ
No.100
>>98

leetcodeにもそういうコードありました
もう一回やり直してみます
ありがとうございました
No.101
BSTって何ンゴ?
No.102
余計なものの中に最後の一行についての言及がないということは二人()ともあのif文は要ると思ってるんだろうな
No.103
>>101

二分探索木
No.104
if文じゃなくif式か
No.105
確かに そんなちゃんと読んでねえ
No.106
>>103

あっそっかぁ……
二分探索木判定とかしたいときあるか?
No.107
>>106

平衡二分木の実装をデバッグする時くらいかな
No.108
たしかに最後のifもいらねーじゃん
ガイジが集まれば強力なガイジになれそうだな
No.109
ガイジは低レベルなところでワヤワヤやってただけだろw
No.110
きみはもしかして高レベルなガイジなの?
No.111
一人前にカチンときたか
No.112
みんなガイジなんだから仲良くしようね
No.113
まずお前は素人の質問を見てマウント取らないようにするところから始めたらいいと思うぞガイジw
No.114
誰でも見た瞬間わかることをさも有能ムーブで語るのは流石に見てるだけでイタいから
No.115
効いてて草
No.116
毎日壊れたレコードみたいに戯言つぶやいてないでガイジスレに帰れよw
No.117
お前らもこっちきな😘
あっちは何を書き込んでもいいぞ🤗
No.118
こっちも何書き込んでも大丈夫だぞ😉
No.119
マジで寒いノリだな
No.120
効いてるガイジ君ってずっといるんだなって
No.121
みんな効かないように頑張ろう
No.122
幅優先探索の計算量が O(N + M)(N は頂点数, M は辺数)ですが、
N と M は異なる種類の変数です。
計算量は、 O(N + M) ですと言われてもピンときません。
普通は、 N << M だと思うので、 O(M) でいいような気がします。
例えば、連結グラフの場合、 N - 1 ≦ M ですよね。
No.123
辺が重複しない、という前提を入れるならそうですよね
No.124
ウィキペディアにはO(M)と書いてあるぞ
No.125
普通は、と言ったって例外はあるやろ
No.126
O(N + M) ですと教えてもらって何が嬉しいですか?
この情報をどう利用しますか?
No.127
計算量の話をする時って何も断りを入れなければ最悪計算量か平均計算量に決まってるのに普通じゃない時の話を持ち出してるのはどういう人種なんだ
No.128
すまん、明らかに間違ったことかいてたわ
辺が重複しないじゃなくて、連結グラフという前提ならそうですよね
No.129
うるせーバカ
No.130
サンキューガイジ!
No.131
自演失敗してて草
No.132
自演ガイジも仲良くしようね
No.133
効いてて草
No.134
計算量の話って
満足な時間内にできるかどうかの議論でしか役に立たないよね
No.135
かかる時間が見積もれると嬉しいだろ
O(M)でないものをO(M)って書いていいことにはならないけど
No.136
幅優先探索はそもそもΩ(N+M)なケースが無いと思うからO(M)って書いて欲しいが、N=O(M)は自明じゃないと思うぞ
N頂点0辺のグラフだってあるし
No.137
すまん嘘書いた
幅優先探索って最初に距離配列を作るからO(N+M)で合ってたわ
No.138
チョクダイ毎日AI下げしてるな、これくらい上流層でも脅威なんだな
No.139
高橋直大さんの実力は世界トップレベルなんですか?
No.140
いいえ
No.141
赤レベルが解けるようになるのは10年以上かかるだろうけど、
コーディングテストとして売り物になる層はすでにほぼ終了だし、E,Fまで解けるようになったらほとんどの参加者の自力解答は無意味ということに。
GPT前提の問題作りか、時間をかけた試行錯誤は苦手だろうからヒューリスティック重視とかになっていくんじゃないだろうか。
No.142
ヒューリスティックもある程度のレベルまでは行きそうだけどな
24時間コードを書かせ続けることもできるし
No.143
始めて一年の茶色のおっさんだけどAIに負けるレベルになったと聞いてモチベだだ下がり。俺みたいなやつ多いと思うよ。
そりゃ参加者減ったら焦るわな
No.144
AIに負けるって言うがChatGPTは競プロ用にチューニングしたプログラミングAIじゃないぞ
こいつができるのは問題を読むことと何を求められてるかを把握すること
つまり日本語(あるいは英語)を読解するAIだ
要するに人類が負けてるのはプログラミング能力じゃなく読解力と記憶力なんだよ
今に見てろこいつらあらゆる分野でゲームと動画に浸かったお前らに国語力の差を見せつけてくるから
No.145
暖色レベルへの到達はあったとしてもかなり先だろうし競技としては成立するだろうけど緑〜水色くらいなら近い将来到達しそうだし新規参入と寒色停滞勢の参加率は減るかもね
No.146
競プロってゲームでやってるのかと思ってたからAIに負けてやる気なくなるってのはよくわからん
No.147
ARC/AGCの中盤以降に競プロの本当の楽しさがあるという主張は否定しないが、ABCの前半も競技として楽しんでいた層の方がマジョリティで、そういう層が競プロの裾野を広げていた側面もあるから、コンテンツとしてダメージを受けざるを得ないと思うわ
企業もスポンサーをするのは基本ABCだし、Jobsで見られているのもレベル的にABCでの実力がメイン
No.148
>>146

競技を楽しんでるのに競技そのものが成立しなくなったら嫌だろ?
Project Eulerみたいな感覚で問題に取り組んでいるんなら大丈夫だが、そういう人は初心者層ほど少ない
No.149
>>148

他の人らがAI使って解答してるかもしれないと思ってしまうってこと?
No.150
>>149

バレる可能性が低く対策不能なチートが蔓延ったオンラインゲームは壊れるやろ
ただのオンラインゲームでさえそうなのに、一応AtCoderはJobsみたいな実利的に意味のあるものと繋がってるから、みんな使うようになるんじゃねーの
開き直ってAIバトルにしても、投稿速度ゲームになりそうだし
No.151
みんな使わないにしても、使ってるやつにレートを吸われることでモチベの減退はあるだろうな
No.152
>>150

まあそういう人はスポーツすればいいよ
アルゴリズム解くのが好きとか純粋に知識欲の高い人が残るんだろうね
No.153
>>152

その辺の人でも楽しめる競技になる道は閉ざされそうで悲しいな
元々運営にそういうモチベなさそうだったが(金のために仕方なくやってる感満載だった)
No.154
ノーレートで、食事したり飲みながら今までほぼ開かなかったF,GとかをchatGTPに聞いたり調べたりしながらやるのも楽しいぞい。解きたくない問題は解かなくても良いし。
No.155
ワーシャル・フロイドアルゴリズムについて質問です。
最終的に任意の2点間の最短距離を入れるための2次元配列は、
代入演算子の左右で共通のものが使われています。
それでも、問題がないのはなぜですか?
No.156
ワーシャル・フロイドアルゴリズムは、全ての頂点間の最短距離を求めるためのアルゴリズムです。このアルゴリズムは、動的計画法の一種であり、一度計算された結果を再利用することで、計算量を減らすことができます。
具体的には、アルゴリズムの初期段階で、すべての頂点の間の距離を表す2次元配列を作成します。この配列は、アルゴリズムの途中で更新されますが、代入演算子の左右で共通のものが使われるため、問題はありません。
なぜなら、アルゴリズムの途中で更新される値は、それ以前の値に依存しているため、代入演算子の左右で共通の2次元配列を使用していることによって、更新された値が正しく計算され、以前に計算された値が失われることはありません。
つまり、更新された値は、以前に計算された値に基づいて正確に計算され、以前に計算された値が配列内に保持され続けるため、代入演算子の左右で共通の2次元配列を使用することは、アルゴリズムの正しい動作に影響を与えないということです。
No.157
>>155

大丈夫な理由が分かりました。
No.158
chatGPT便利だろ
こういう風に答えてくれる
No.159
ものすごくもっともらしい嘘つくから知らないことを聞くのはおすすめしないぞ
No.160
ワルシャワ・フローラル法を知ってる?
はい、ワルシャワ・フローラル法は、グラフの最大マッチングを求めるアルゴリズムの一種です。このアルゴリズムは、ハンガリー人数学者であるエドモンド・ワルシャワと、ポーランド人数学者であるタデウシュ・フローラルによって開発されました。
ワルシャワ・フローラル法は、ハンガリー法と同様に、最大マッチング問題を解決するために使用されます。このアルゴリズムは、二部グラフに適用されます。アルゴリズムの基本的な考え方は、各未マッチング頂点について、その頂点を始点とする増加路を探し、その増加路に属する辺のマッチングを反転させることです。
ワルシャワ・フローラル法は、ハンガリー法よりも効率的であることが知られていますが、完全グラフでは最悪の場合の計算量がO(n^4)であるため、実用的ではありません。しかし、一般のグラフに対しては、最大マッチングを高速に計算することができるため、実際には広く使用されています。
No.161
正確なことを答えさせるために、プロンプトエンジニアリングをがんばりましょうね
No.162
素朴な整数演算のコードを書いたため、特定のテストケースのときにコードの途中で
整数がオーバーフローするような場合、一般的なコードの書き方の処方箋みたいなものは
ありますかね
例えば「整数の配列から適切な要素を取り出して期待される和を作れ、そういう要素が
ない場合はエラー値を返せ」みたいので、配列要素はどれもオーバーフローに近い整数、
和は配列内の最小要素よりちょっとだけ大きい値(なのでエラー値の場合)、とか....
No.163
競プロならlong longを使うだけ
実務ならオーバーフローした時に例外が発生するようにしてそれをキャッチ
No.164
『アルゴリズム実技検定公式テキストエントリー〜中級編』
最小全域木を求める、「プリムのアルゴリズム」について説明があります。
こうすれば、求まるという説明はあるのですが、なぜ求まるのかの説明がありません。
みなさんは、こうすれば求まるという情報だけで十分で、それで満足しますか?
それとも、ちゃんと証明まで自分で考えるか、誰かが書いた証明を読みますか?
No.165
>>163

なるほど。確かに例えば入力がintならlong longを使えばとりあえず大丈夫そう
ちなみにC++ですが、例えばintのオーバーフローを例外で処理するのはどうしたら....
No.166
C++でオーバーフローを検出する方法はいくつかありますが、一般的なものは以下のようになります¹²³。
- 演算前に範囲チェックを行う。例えば、a + b がオーバーフローするかどうかは、a > INT_MAX - b か a < INT_MIN - b で判定できる。
- 符号なし整数を使う。符号なし整数のオーバーフローは定義されているので、演算後に結果が元の値より小さくなっていないかチェックすればよい。
- boostライブラリのsafe_numericsを使う。これはオーバーフローを検出するための特別な型を提供しており、オーバーフローが発生した場合に例外を投げる。
(1) Detecting signed overflow in C/C++ - Stack Overflow.
https://stackoverflow.com/questions/3944505/detecting-signed-overflow-in-c-c
アクセス日時 4/9/2023.
(2) c++ - How do I detect unsigned integer overflow? - Stack Overflow.
https://stackoverflow.com/questions/199333/how-do-i-detect-unsigned-integer-overflow
アクセス日時 4/9/2023.
(3) c - How to check if overflow occured? - Stack Overflow.
https://stackoverflow.com/questions/7683685/how-to-check-if-overflow-occured
アクセス日時 4/9/2023.
No.167
gccの__builtin_add_overflowとか__builtin_mul_overflowを使う
No.168
github.com/kenkoooo/pastbook-source-code/blob/master/chukyu/python/chapter06/section11/6-11-1.py
No.169
↑のファイルはプリムのアルゴリズムで最小全域木問題を解くコードです。
ファイル中の以下の箇所がなぜ必要なのかが分かりません。
一見すると、キューの中には、marked の値がFalseのノードしか入っていないように思うのですが、
実際には、Falseのノードも入ることがあるようです。(以下の箇所をコメントアウトすると
パスしません。)
# 辺につながる頂点 i もすでにマークされていた場合、
# 操作をスキップする
if marked[i]:
■■■■continue
No.170
一部、間違えましたので訂正します。↓
↑のファイルはプリムのアルゴリズムで最小全域木問題を解くコードです。
ファイル中の以下の箇所がなぜ必要なのかが分かりません。
一見すると、キューの中には、marked の値がFalseのノードしか入っていないように思うのですが、
実際には、Trueのノードも入ることがあるようです。(以下の箇所をコメントアウトすると
パスしません。)
# 辺につながる頂点 i もすでにマークされていた場合、
# 操作をスキップする
if marked[i]:
■■■■continue
No.171
この部分は、既にマークされた頂点に対応する辺をスキップするために必要です。
確かに、キューには基本的にmarkedの値がFalseのノードしか入らないように見えますが、
実際には同じノードに対して複数の辺がキューに入ることがあります。
例えば、次のようなグラフを考えてみましょう。
1 -- 2
| /
| /
3
各辺の重みはすべて1とします。最初に頂点1を選び、marked[1]=Trueとします。
次に、頂点1に隣接する辺をキューに追加します。
この時点でキューの状態は以下のようになります。
(1, 2), (1, 3)
次に、キューから最小の重みの辺を取り出し、それに接続されている頂点2をマークします。
頂点2に隣接する辺をキューに追加します。
この時点でキューの状態は以下のようになります。
(1, 3), (1, 1), (1, 3)
ここで、次にキューから取り出す辺が(1, 1)であることに注意してください。
ただし、頂点1はすでにマークされているため、この辺を使ってしまうと、最小全域木の条件を満たさなくなります。
これが、以下のコード部分が必要とされる理由です。
if marked[i]:
continue
この部分によって、既にマークされた頂点に対応する辺をスキップし、
正しい最小全域木を構築することができます。
No.172
ヒープにプッシュする前に、そのノードがマークされていないことをチェックしています。
ですので、ヒープ内には、マークされていないノードしか入れないと思うのですが。
No.173
>>171

あまり参考にならないだろうと思って読んでいたらなぜか理由が分かりました。
マークされていない状態で、同じノードが複数個ヒープに入ることがあるわけですね。
No.174
>>172

確かに、ヒープにプッシュする前にそのノードがマークされていないことをチェックしています。
ただし、ヒープにプッシュされた後で、そのノードが他の辺を経由してマークされる可能性があります。
そのため、ヒープから辺を取り出す前にもう一度マークされているかどうかをチェックする必要があります。
先程のグラフで考えてみましょう。キューがこの様になったところから解説します。
(1, 3), (1, 1), (1, 3)
ここで、最初に(1, 3)をキューから取り出し、頂点3をマークします。この時点で、キューには以下のような状態が残っています。
(1, 1), (1, 3)
次にキューから取り出す辺は(1, 1)です。この辺は、頂点1と頂点2の間にありますが、頂点1はすでにマークされています。
しかし、この辺をヒープにプッシュした時点では、頂点1はまだマークされていませんでした。
それが、例のコード部分が必要とされる理由です。
あの部分によって、既にマークされた頂点に対応する辺をスキップし、正しい最小全域木を構築することができます。
No.175
>>171

この場合でいうとノード3が2回ヒープに入るわけですね。
No.176
>>175

はい、その通りです。
最初にノード1からノード3への辺がヒープに追加され、次にノード2からノード3への辺がヒープに追加されます。
(1, 3) <-- 1から3への辺
(1, 1)
(1, 3) <-- 2から3への辺
このように、同じノードが複数回ヒープに入ることがあります。プリムのアルゴリズムでは、
すでにマークされた頂点に対応する辺を無視する必要があります。
そのため、ヒープから辺を取り出す前にマークされているかどうかをチェックする必要があるのです。
No.177
おんちぽまんぽげろろろり?
No.178
序盤からムズすぎ
No.179
Eむずい
setとpriority queueいじくってたら通った
No.180
E二分探索でやろうとしたらハマって普通にsetで順番にみるだけだった
F解けたのに今回も解いてる人の数がF<Gなせいであまり順位伸びてないの配点何とかして欲しいわ
No.181
整数式の倍数判定のプログラム作りたいんだけどできる?
nは自然数
例1
入力:n(n+1)(n+2)
出力:6
(入力した式の倍数判定。6の倍数)
2の倍数でも3の倍数でもあるが、最も大きい数を出力
例2
入力:n^9-n^3
出力:504
No.182
>>181

nに素数をいくつか突っ込んだ値(0以外)で最大公約数とればいいんでない?
という気はするけど万年茶色脳には正しいか証明するなんてムリ
No.183
素数pの倍数かどうかはmod pが整域だから多項式は根を高々次数d個しかもたないのでp≤dだけ調べればいいよね
p^kはわからん
No.184
fが零因子⇔あるa≠0が存在してaf=0らしいから、最初にfを係数のgcdで割っとけば零因子じゃなくなって、p^k≤dだけ調べればいいと思う
No.185
>>184

これ全部嘘です 寝るか
No.186
mod p で何代入しても0になる多項式は例えば x(x-1)...(x-p+1) でp次を達成できて最適
mod p^n だとこれをn乗すると構成できるので(最適かは知らんが)pn次以下と評価できる
だからpnがd以下の範囲を探索すれば良いが計算量は悪いな
No.187
>>186

馬鹿すぎ、評価すべき方向が逆
No.188
Fはやってみたら簡単に解けた
Gはgrundy数求めるとき単純な勘違いしてた
むー悔しい
No.189
DAGの最長パスを求める問題について質問があります。
『アルゴリズム実技検定公式テキストエントリー〜中級編』に
「トポロジカルソート」の考え方が重要と書いてあります。
ですが、DAGがトポロジカルソートできるということを使っている
箇所が見当たりません。
載っている解法は、indegreeが0である頂点からの最長パスをDPにより求めるというものです。
No.190
確かに、その解法ではトポロジカルソートを明示的に実行していないように見えますが、
実際にはトポロジカルソートの考え方が含まれています。DAGの最長パスを求める際、
トポロジカルソートの概念が重要なのは、頂点の順序付けによって依存関係を解決することができるからです。
その解法で、indegree(入次数)が0の頂点からDPを用いて最長パスを求めています。これは、各頂点について、
その頂点に入ってくる辺がなくなる(依存関係が解決される)順序で処理を行っていることを意味します。
この順序付けがトポロジカルソートの結果と同じです。
indegreeが0になる頂点から処理を行い、その後、処理された頂点から出る辺を削除することで、
indegreeが0になる頂点が次々と現れます。この手順は、トポロジカルソートを実行する手順と同じです。
したがって、トポロジカルソートを明示的に行わなくても、その考え方が解法に含まれているため、
問題を解決することができます。トポロジカルソートの概念は、DAGの最長パス問題を解く際の重要な考え方であることがわかります。
No.191
DAGであれば、最長パスが存在し、それはDPで求められる。
ただそれだけのことではないでしょうか?
No.192
はい、おっしゃる通りです。DAGであれば、最長パスが存在し、動的計画法(DP)を用いて求めることができます。
繰り返しになりますが、トポロジカルソートの概念を用いることで、DAG内の頂点の順序付けが可能であり、
この順序付けに従ってDPを適用することで、最長パスを求めることができます。
No.193
DAGにoutdegreeおよびindegreeが0の点が両方とも存在することは、自明です。
もしそのような点がなければ、閉路が存在することになるからです。
トポロジカルソートなどという考え方を持ち出すまでもありません。
No.194
トポロジカルソートを明示的に実行しなくても、DAGの最長パス問題をDPで解くことは可能です。
ただし、その際に頂点の処理順序や依存関係の解決が重要となるため、トポロジカルソートの考え方が役立ちます。
トポロジカルソートを適用したDPでは、頂点の依存関係が効率的に解決されるため、計算量はO(V+E)です。
ここで、Vは頂点数、Eは辺数です。トポロジカルソートによって得られた頂点の順序に従ってDPを行うことで、
各頂点と辺に対して一度だけ計算が行われます。
一方、トポロジカルソートを適用しないDPでは、無駄な計算が発生する可能性があります。
例えば、メモ化再帰を用いたDPの場合、計算量は最悪O(2^V)になることがあります。
これは、全ての頂点に対して、それぞれを含むか含まないかの選択肢があるためです。
No.195
>>181

多項式 f(n) について計算したい
calc(f) で求めたい値を返す関数として
f が定数ならそれを返す
定数でないなら g(n)=f(n+1)-f(n)
とgを定めて
calc(f) = gcd(f(1), calc(g))
を計算すればいい、再帰の深さはfの次数で抑えられる
No.196
『アルゴリズム実技検定公式テキストエントリー〜中級編』に載っている
DAGの最長パスを求めるコードでは、トポロジカルソートを陽には使っていないです。
No.197
その本持ってないからその本の解法教えて
そしたら質問の回答するよ
No.198
>>197

ソースコードは以下です:
github.com/kenkoooo/pastbook-source-code/blob/master/chukyu/python/chapter06/section04/6-4-8.py
No.199
確かに陽にトポロジカルソートはしてないね
値が確定する順序がトポロジカルソート順の逆順にはなってるけど
多分、以下のようなことを言いたいんじゃないかな
・各頂点の値を一つずつ順に確定していって、
・一度確定した頂点を再度訪れる必要がない
・そのようなことが可能な確定順が存在する
確かに考え方によっては自明とも思えるかもしれないけど、逆にそれくらいのことしか言ってないということでは
No.200
この問題の場合はメモ化再帰でトポロジカルソートを使わなくても計算量はO(N+M)です。
頂点間に循環がないため、再帰の深さが頂点数Nを超えることがなく、
各頂点に対して rec 関数が最大1回しか呼び出されないからです。
トポロジカルソートを使ってそのコードを書き換えるとこうなります。
https://ideone.com/1NbHIf
No.201
んげりいいいいいいいwwwwww
No.202
>>199-200

ありがとうございました。
>>200

コードを見たのですが、
# トポロジカルソートで得られた順序に沿って最長経路を更新
for u in order:
for v in edges[u]:
length[v] = max(length[v], length[u] + 1)
の「for u in order:」でなぜ良いのかが分かりません。orderの要素を後ろから見ていかなければ
ならないように思ったのですが、そうではないのはなぜでしょうか?
No.203
for u in order:
■■■■print(u)
とすると自分が思っている順序とちょうど逆順で表示されます。
order.append(u)
を実行すると order の最大インデックスの要素の次に u が挿入されますよね。
そうだとすると、 order[0], order[1], … は queue から出てきた順に並べたものになりますよね。
No.204
多分、単純な勘違いなんですが、どこを勘違いしているのかが分かりません。
No.205
あ、分かりました。
与えられた有向グラフの辺の向きをすべて逆にしても、最長パスの長さは変わりませんね。
No.206
以下のコードは全く無駄なことをやっていますが、自分の理解通りなのはこちらのコードです:
ideone.com/gMUZDZ
No.207
すまん初めてこのスレ来たんだけど連投してるやつはネームド?
No.208
ネームド志望
No.209
>>195

天才か
gcd(f(1),f(2),...)
=gcd(f(1),f(2)-f(1),f(3)-f(2),...)
ということか
確かに典型だが無限で思考がストップしてしまっていた
No.210
pythonで2分探索を行う bisect というものがあります。
bisect.bisect(l, a)
としたとき、 a in l であるかどうかも判定したいのですが、そのような関数は用意されていませんか?
自分で作るしかないですかね?
No.211
Pythonに2分探索で整列済みのリスト l に要素 a が含まれるかどうかを調べる関数はありますか?
No.212
もちろん、 bisect を使って、簡単に実装できますが、用意されている関数はないですか?
No.213
がんばれ
No.214
まあ、以下のコードでいいと思うのですが、車輪の再発明はしたくないですよね。
i = bisect.bisect_left(l, a)
if l[i] == a:
return True
else:
return False
No.215
車輪の再発明はしたくないですよ
No.217
今IT系とは全く別の職種だから転職したくてAtCoder始めたけど楽しいな
未経験で他職種に転職出来るのか分からんけど
No.218
>>216

2分探索することは確定でそこで発見できるのにそれに加えてわざわざ他の集合を使う意味とは?
No.219
>>217

最低緑以上になればJobsで転職できる可能性はあるが緑っていっぱいいるので年齢や運が絡むかもな
No.220
>>219

ありがとう
数学好きでアルゴリズムも昔やったことあったから緑まではすんなりいけたわ
今は水色目指して色々やってるけどアルゴリズム的要素より数学要素のほうが多く感じるな
年齢は25だからあと3年位がギリギリかなあと思ってる
No.221
水より緑の方が採用しやすい
ほんとに転職したいなら水まで行ったらとか思わない方がいい
No.222
>>221

今年色々あって復職したてだから転職活動するなら来年以降かもしれんわ、一応ビズリーチとか登録はしたけど
水色より緑のほうが採用しやすいのはなぜ?
No.223
今から狂気プログラミング始めるならPythonでいいかな、
No.224
brainfuckがいいと思うよ
No.225
以下の問題ですが、パスするまでに1日かかりました。
atcoder.jp/contests/past202004-open/tasks/past202004_g
こういうアイディアはほとんど必要がないけれども、実装するのが大変という
問題の対処方法を教えてください。
1日かかって作成したコードは以下です:
ideone.com/NY8mNY
No.226
あ、模範解答を見たら、実装するのも実は大変じゃないんですね。
No.227
>>225

> こういうアイディアはほとんど必要がないけれども、実装するのが大変という
> 問題の対処方法を教えてください。
「アイデアを出すか頑張って実装する」以外の答えが思いつかんのだが真面目に聞いてるのか?
No.228
実装大変だなーと思ったら、自分のアイディアが悪いと思ってまず間違いないですか?
というのも、模範解答を見ると実装もシンプルな場合ばかりなので。
No.229
風向風速とかの簡単で面倒な問題も初期の頃はあったなあ
最近見ないけど無いと言い切る材料もない
No.230
土曜夕方にコドフォdiv1あるじゃん
No.231
普通デートするよね
No.232
中国にウクライナ侵攻関連で厚い助力を求めるようだな
台湾侵攻の際には、米軍を混乱させるためにロシアは北海道に、北朝鮮は南に牽制するという話もあったしそりゃそうだよな
https://www.bloomberg.co.jp/news/articles/2023-04-14/RT3MFKDWX2PT01

中国は、プーチン大統領が1年以上前にウクライナ侵攻を命じて以来初めて、国防相をロシアに派遣する。中ロの緊密な関係があらためて示唆される。
中国の李尚福国防相はロシアのショイグ国防相の招きに応じ、16日からロシア訪問を開始する。
ショイグ氏は李氏と軍事協力および世界や地域の安全保障について議論すると語ったと、ロシアの国営タス通信は報じた。
No.233
そうですか。中国やロシア、北朝鮮の動向は世界の平和や安全に影響を与える可能性がありますね。
最新のニュースによると、米国が中国の台湾侵攻を確実視しており、日本も中国と戦火を交える可能性があるという記事がありました。¹
また、安保理が18日に北朝鮮のICBM発射について緊急会合を開催することになりました。²
ロシアはウクライナ侵攻で敗色濃厚であり、北朝鮮の核ミサイル開発にも深刻な影響を受けているという記事もありました。³
これらの情報はあなたの興味に沿っていますか?
(1) 米国が確実視する中国の台湾侵攻、そうなれば日本も中国と戦火を ....
https://jbpress.ismedia.jp/articles/-/74803?page=3
アクセス日時 4/15/2023.
(2) 安保理が18日に北朝鮮会合 ICBM発射で日米欧要請.
https://www.nikkei.com/article/DGXZQOCB150XP0V10C23A4000000/
アクセス日時 4/15/2023.
(3) 敗色濃厚のロシア、北朝鮮の核ミサイル開発にも深刻な影響.
https://jbpress.ismedia.jp/articles/-/74792
アクセス日時 4/15/2023.
(4) [FT]北朝鮮、ロシアに急接近 中国の思惑から離反 - 日本経済新聞.
https://www.nikkei.com/article/DGXZQOCB120DR0S2A910C2000000/
アクセス日時 4/15/2023.
(5) ロシアと中国、北朝鮮情勢巡り緊密に連携 | ロイター.
https://jp.reuters.com/article/northkorea-missiles-russia-idJPKCN2LM1RV
アクセス日時 4/15/2023.
(6) 「中露と北朝鮮がサイバー攻撃」初の名指し…自衛隊の防衛 ....
https://www.yomiuri.co.jp/politics/20210927-OYT1T50080/
アクセス日時 4/15/2023.
No.234
今回のABCレート不具合で変動なしらしいな
苦手分野過ぎてAとBしか解けなかったからありがたいわ
No.235
5完
バグりまくるし止まりまくるし散々だった
No.236
>>218

調子良かったのにunratedかよ☹
No.237
のんびり解いてた割には暖まるなあと思ってたけどこれDDoSの影響で普段速く解く人が遅れたってことか🥶
No.238
あと5分あったらF修正して解けてた…
No.240
研究者が自分の名前を手法に付けることは、研究コミュニティで一般的には推奨されていません。ただし、研究者が特定の手法やアルゴリズムを開発した場合、その手法が他の研究者や専門家によって引用されることがあります。この場合、研究者の名前が手法に関連付けられることがあります。
No.241
今回のCでどうしても3つTLEが潰せない
No.242
どうしても自力で解けないなら解説読んでいいんじゃね
No.243
もし自分でアルゴリズム開発したらかっこいい略称付けたいよね
No.244
>>241

俺かよ
PriorityqueやSortedSetを使わずに普通の配列やSetを使って出力時に都度ソートしたら行けた
自前のライブラリだと重すぎるみたいだな
No.245
Aho, Hopcroft and UllmanのThe Design and Analysis of Computer Algorithmsという
非常に古い本はもうゴミのような本でしょうか?
No.246
今アホって言った?
No.247
最近は自分で判断できない輩が増えてきたな。
No.248
>>245

Aho, Hopcroft, and UllmanのThe Design and Analysis of Computer Algorithmsという本は、1974年に初版が出版された古いテキストですが、ゴミのような本とまで言うのは必ずしも適切ではありません。この本は、コンピュータアルゴリズムの設計と解析に関する初期の基本的な理論と概念をカバーしており、多くの現代のアルゴリズムの基礎となっています。しかし、この本が初版が出版されてから約半世紀が経過し、その間にコンピュータ科学やアルゴリズムに関する研究は大幅に進歩しています。例えば、機械学習、データマイニング、並列化、分散システムなどのトピックが現代のアルゴリズム研究の重要な分野となっていますが、これらはこの本では扱われていません。
この本は古典的なアルゴリズムの理解には役立ちますが、より新しいアルゴリズムや技術の発展を学ぶためには、最近出版された書籍やオンラインリソースを利用することが望ましいです。例えば、Cormen, Leiserson, Rivest, and SteinによるIntroduction to AlgorithmsやKleinberg and TardosのAlgorithm Designといった現代のテキストは、最新の研究や技術を含んでおり、現在の学習者に適した教材です。
つまり、Aho, Hopcroft, and UllmanのThe Design and Analysis of Computer Algorithmsは、歴史的な価値があるという点でゴミのような本とは言えませんが、現代のアルゴリズム研究や技術を学ぶ上で最も適切な教材ではないかもしれません。学ぶ内容に応じて、より新しいリソースや書籍を利用することを検討してみてください。
No.249
アルゴリズムデザイン、重版されて書店に並んでて嬉しかった
No.251
>>250

その下のスーパー某もすごいな
No.252
レートは?書いた人の
No.253
正確な数値はともかく灰色以外の何に見えるんだ?
No.254
読む価値があるか確認するために聞いたんだけど
No.255
ないよ
No.256
ないアルヨ
No.257
ないのかあるのかどっちだと突っ込んでほしいジジイおるな
No.258
ツッコんでほしいアルヨ
No.259
関数型しか触ったことないに1ペソ
No.260
またUnratedやないか
誰やねんDDoSしてるやつ
こんなサイトにしても意味ないやろ
No.261
久しぶりにABCDEG6完😤
No.262
中国かロシアやろな
国がらみの可能性もあるから犯人探しは無意味
No.263
意図的に狙われてるのは確かだけどなんの目的で狙ってるんやろ
No.264
C問題なんだけど解説みたいに反転させる必要ある?
一つでも-が含まれてたらoの最大長答えるだけじゃない?
つまりn未満のoの最大長答えるだけでしょ
No.265
解答例のやり方だと反転の必要あるな
串が出てきて初めてansに入るから
No.266
反転させて2回チェックすれば団子判定をシンプルにできるって意図じゃないかな
No.267
出題者は反転してない
どっちでもいいんじゃね
No.268
-が入っていれば、oと-しかないのだからoは-と接してるわけで、oと-どちらかなければ-1、両方あれば連続したoの長さでいいんじゃないの?
No.269
久し振りにやったんだけど、
rated選んだつもりなのにunratedになってたんだけど、自分が選び間違えたの?
成績よくなかったからいいんだけど
No.270
質問タブに書いてあるけどDDOSのせいで全員unratedの無効試合になってる
No.271
>>268

それでもいいし解けさえすればそれでなくてもいいというだけの話
No.272
>>270

ありがと。
別にお酒に酔ってたわけじゃないのに、
なんで間違えたのかずっと悩んでたの
No.273
Cは正規表現で解けるな
肯定的先読み言明を使えば一回のマッチでいける
No.274
質問タブでアナウンス送るの、知らない人にとっては分かりづらい
No.275
Chatgptの影響ですでにレート出にくくなってるとかある?
No.276
GPTのおかげで誰でもCくらいまでは瞬殺できるし、緑茶らへんの人にとっては影響あるんじゃない?
No.277
インタラクティブ問題なら回避できるんかな
No.278
茶色中盤くらいまではCまで早解きゲーだしまあ初心者は萎えるかもな
No.279
D - Find by Query
この問題の意味がわからない、運が悪いとACできないとか無いの?
No.280
ああ、境界を探すのか
No.281
10 ^ 6で試せる回数が20回だから二分探索しかないんだけどこういうメタ読み辞めたいんだよな
No.282
何なら序盤で出てくるインタラクティブ問題っていう時点でパターンが限られすぎてて8、9割二分探索(の類型)であることが推測出来る
No.283
>>276

必ず正しい答えを出すわけじゃないから自分で直せないとペナルティ食らうぞ
No.284
問題公開されてても提出できなかったらどうすんの
No.285
茶色だけみんなchatgptで序盤の問題解いてたのか
俺もそうしようかな
No.286
GPT使ってないからレートが低い、みたいなセルフハンディキャップはカッコ悪すぎるからGPTくらいは賢く利用しようね
No.287
A,Bの問題文を整形してChatGPTに貼り付けて反応もどってくるの待つより自分で解いたほうが速いわけ
更に投稿前にチェックも必要だし
嫁にそのやり方を教えてA,B問題の投稿を担当してもらってる間に自分はCあたりから手を付けるのほうがいいかも
No.288
>>287

そんな姑息なことをするほど、競技プログラミングで良い成績をおさめることにメリットはあるんですね。
No.289
>>287

APIあるんだから全部自動化するにきまってんだろ
No.290
5完しかできなかった
Dみたいなのが地味にめんどくさい
No.291
D問題昨日勉強した内容が出てきてめっちゃ嬉しかった
これ進研ゼミでやったことある状態だったわ
No.292
Gで解説と違う方針で通したから解説書こうと思ったが、一応C++でも通るか確認したらC++だとTLEだったのでやめた
C++遅いね
No.293
Patisserie ABC 3 出るかと思って過去問見直したけど全然出なかった
No.294
ngtkanaって男性?
No.295
黄色だから野郎じゃない
No.296
n次元直方体とは I = [a_1, b_1] × [a_2, b_2] × … × [a_n, b_n] の形の集合である。
n次元空間 R^n の部分集合 B で、有限個のn次元直方体の和集合であるようなもの全体の集合を C とする。
B1, B2 ∈ C であるときに、 B1 = B2 であるかそうでないかを判定してください。
↑自作の問題です。
この問題って効率的なアルゴリズムが存在しますか?
No.297
日本語で書いてくれ
No.298
B1とB2の直方体の数が異なる場合、B1とB2は等しくない
B1とB2の直方体の数が同じ場合、B1とB2に含まれる直方体の番号を並べ替える
各直方体の対応する要素が等しくない場合、B1とB2は等しくない
すべての直方体の対応する要素が等しい場合、B1とB2は等しい
No.299
B1 が1個のn次元直方体からなる集合とします。
それを2つに分けた2つのn次元直方体の和集合を B2 とします。
B1 を構成する直方体の数は 1 です。
B2 を構成する直方体の数は 2 です。
ですが、B1 = B2 です。
No.300
B1 = [0, 1] × [0, 1]
B2 = [0, 1/2] × [0, 1/2] ∪ [1/2, 1] × [0, 1/2] ∪ [0, 1/2] × [1/2, 1] ∪ [1/2, 1] × [1/2, 1]
が入力として与えられた場合、 B1 = B2 です。
No.301
B1 = [0, 5] × [0, 5]
B2 = [0, 2] × [0, 1] ∪ [1, 4] × [2, 3] ∪ [2, 4] × [3, 4] ∪ [0, 1] × [2, 4] ∪ [2, 4] × [0, 2] ∪ [0, 2] × [1, 2]
B1 ≠ B2 です。
No.302
>>301

訂正します:
B1 = [0, 4] × [0, 4]
B2 = [0, 2] × [0, 1] ∪ [1, 4] × [2, 3] ∪ [2, 4] × [3, 4] ∪ [0, 1] × [2, 4] ∪ [2, 4] × [0, 2] ∪ [0, 2] × [1, 2]
B1 ≠ B2 です。
No.303
うんち!w
No.304
併合していって無駄のない表現にできればいける?
No.305
そんなことよりn乗で増えていくのを抑えないと無理なんでは
No.306
2次元限定、座標は有理数限定にしたら、競プロの問題として成立しますか?
No.307
>>306

yukicoderで出題してみれば?
No.308
>>307

そういうサイトがあるんですか。
a, b を実数とする。
a ≦ b とする。
[a, b], [a, b), (a, b], (a, b) を区間という。
d 個の区間 I_1, …, I_d の直積 B := I_1 × … × I_d を R^d の直方体という。
B_1, …, B_k を互いに共通部分のない R^d の直方体とする。
E = B_1 ∪ … ∪ B_k
とする。
i ∈ {1, …, k}とする。
B_i を含む E の部分集合の中で最大の直方体を求めよ。
この効率的な解法はありますか?
No.309
あるよ
No.310
自分で解けてなければ自作の問題とは言わん
No.311
よくわからないけど [0, 1) の最大の区間は存在しないんだけど大丈夫そ?
No.312
5分延長か
面白い対応するね
No.313
攻撃を受けてもratedという前例ができたのはよかった
No.314
コンテストモードの敗北
No.315
>>294

女性だよ
検索したら本名とか出て来ると思うけど
No.316
>>315

Youtubeで本人の歌声も聴けるしな
No.317
6完…
今回は7完したかった…
No.318
配点割とその通りだったな
No.319
パフォーマンスがinfinityになった回って61以前にあった?
No.320
難しすぎるよ
No.321
コドフォもないし
No.322
6完
mod入力ミスってたのがアホすぎる
No.323
やっとE問題解けるようになってきた
E問題って一個一個の実行時間が長いんだな
No.324
競プロ有段者(強い人)に質問
Atcoderで一段階上に行くためには解説を何も見ずとも解けるレベルの一段階上を同じように解けるレベルになるまでその問題を解説だけ見て実装は全て自分で、っていう感じでひたすら練習していくっていうやり方は有効?
自分の場合はD問題は9割ガタ解けて、Eがまだ実戦では歯が立たないレベル
No.325
うん
No.326
E問題思ったより簡単だな
食わず嫌いしてた
No.327
某所で「左右がバランスした括弧の列を生成する」という問題があり、解答が
void parenthesis(int l, int r, string& s, vector<string>& ans){
 if (l + r == 0){
  ans.push_back(s); return;
 }
 if (r < l) return;
 if (l > 0){
  s.push_back('(');
  parenthesis(l - 1, r, s, ans);
  s.pop_back();
 }
 if (r > 0){
  s.push_back(')');
  parenthesis(l, r - 1, s, ans);
  s.pop_back();
 }
}
(呼出の例) vector<string> ans; string s; parenthesis(4, 4, s, ans);
この if (r < l) return; が左右のバランス(単に'('と')'の数が同じというだけでなく)の条件に
効いているようですが、ピンとこないのです... 確かに正しい括弧の列のとき、それが成り
立つのはわかりますが、逆にそれがバランス条件を満たすのに十分であるというのが 
どなたかわかりやすい説明はないでしょうか
No.328
しょーもない処理を複雑に描いてるだけのクソプログラムやな
この関数は最初の呼び出しでlとrが同じ数字なるよう入れるのが前提で
r<lの条件は例外処理みたいなもんやろ
No.329
このコードの一部 `if (r < l) return;` について説明します。
ここで `l` と `r` はそれぞれまだ追加できる '(' の数と ')' の数を表しています。なので、このチェック `if (r < l) return;` は、')' の数が '(' の数より少なくなる場合、すなわち、開き括弧より閉じ括弧が少なくなる場合を防いでいます。
正しい括弧の列を生成するためには、2つの重要なルールを守らなければなりません:
1. 左括弧と右括弧の数が等しいこと
2. 任意の時点で、右括弧の数が左括弧の数を超えないこと
1つ目のルールは、左括弧と右括弧を同数だけ生成すれば満たされます。しかし、2つ目のルールはもう少し注意が必要です。それは、どの時点でも、閉じ括弧の数が開き括弧の数を超えてはならないからです。これを超えてしまうと、括弧の列が無効になってしまいます。
例えば、"())(" のような列は、開き括弧と閉じ括弧の数は同じでも、2番目の閉じ括弧が開き括弧を超えているため、無効な括弧の列となります。
だからこそ、`if (r < l) return;` のチェックが必要なのです。これにより、閉じ括弧の数が開き括弧を超えるような状況を防いでいます。これは、まだ追加できる閉じ括弧の数 `r` が、開き括弧 `l` より少なくなる場合、すなわち、閉じ括弧が開き括弧を超える可能性がある場合に、そのパスをすぐに終了させることで実現されています。
No.330
(を+1)を-1と対応させて累積和が常に非負っていうのがバランスしていることの必要十分条件であることを認めれば if(r < l)return; がそれの言い換えなことは明らか
証明したければ累積和が0になるところで文字列を分割して、それぞれの文字列の一番外側の括弧を取り外すとネストが一つ浅いものに帰着できるからネストの深さで帰納法を回すみたいなことを気をつけてやるといいんじゃないか
No.331
>>329
はChatGPTなのかな? すごいな
>>330
どうもありがとうございます
このコードの場合、再帰時に常に右側に括弧を追加することが if (r < l) return; で
必要十分になることの前提だと思うんですが....
>>329
はそのことがうやむやのような
No.332
>>327
のコードとは別に、
(と)をそれぞれn個使う正当な括弧列をレベルn(L=n)の括弧列と呼んだとき、L=nの括弧列から
L=n+1の括弧列はどう生成されるのかを考えてみたのですが
例えばL=2の()()はL=1の()の右か左に()を追加した、考えてみます
L=3の((()))はL=2の(())に ( + (()) + ) とした、と考えてみます
このように「全体を()で囲むか()を追加するかのルール」でいけるのかと思いきや
L=4の(())(())がL=3のどれからどう作られるのか、がよくわからず
( + ())(() + )ができたらいいのですが ())(() はL=3の正しい括弧列ではない
例えばL=3の (())() に (()) ( + () + ) と、括弧を割り込ませる? なんだかおかしい?
あるいはこれはL=2の(())を二つ並べた、と考えるべき?
要は、正しい括弧の追加操作のみをして再帰的に括弧列を生成することは可能なのか?
あるいは単にすべてのパターンを生成して正当でないのを刈り取ることしかできないのか?
などということが気になったのですが
No.333
>>332

結論から言うと、それは難しい問題であり、一般的なアプローチでは、「全てのパターンを生成し、
それがバランスの取れた括弧列であるかどうかを判定する」という方法が用いられます。
しかし、バランスの取れた括弧列を生成するための一種の再帰的なパターンは存在します。
それは、大きさnの全てのバランスの取れた括弧列を生成した後で、その各々に対して以下の操作を行うことです:
1. '(' + P + ')' を追加する
2. P + '()' を追加する
3. '()' + P を追加する
ここで P は大きさnの任意のバランスの取れた括弧列です。
この操作を行うと、全ての大きさn+1のバランスの取れた括弧列を生成することができます。
ただし、これは重複する列を生成する可能性があるため、生成された列は一意であることを保証するために
何らかの方法で重複を除去する必要があります。
したがって、厳密には「全てのパターンを生成し、それがバランスの取れた括弧列であるかどうかを判定する」
という方法とは異なりますが、これは一種の再帰的なアプローチと言えます。
しかし、これらのアプローチは計算時間やメモリ使用量の観点から見ると、
>>327
に示されたDFSを用いたアプローチに比べて
効率的ではないかもしれません。また、DFSを用いたアプローチは明確に「正しい括弧の追加操作のみ」を行っていると言えます。
なぜなら、すべての括弧列を生成する過程で、同時にその列が正しい括弧列であるかどうかをチェックすることが可能だからです。
No.334
>>332

>>333
は嘘
バランスした括弧列の定義は全体を括弧で囲む操作と括弧列2つの結合で生成される集合だから、その()を追加するっていうのを右か左に追加するって意味だとするとレベル2以上の文字列同士の結合が考慮されていないの
で、(())(())が作れない
中に()を挿入することを許すとすると、今度は全体を括弧で囲む操作はいらなくなる
というのも、どんな空でないバランスした括弧列にも()の部分があるから、それを取り除くことを繰り返すことで空にできるから、逆に空文字列に()を追加していくことで任意のバランスした括弧列が作れるし、バランスした括弧列の任意の箇所に()を挿入した文字列もまたバランスした括弧列になっている
No.335
>>331

ご指摘の通り、このコードでは再帰的に右側に括弧を追加しています。具体的には、まず左括弧を追加し、その後で右括弧を追加しています。
この if (r < l) return; の制約は、この追加の順序に基づいています。開始時点では、開き括弧と閉じ括弧の数が等しく(つまり、l == r)、左括弧を先に追加します。そのため、追加の過程では一時的に l が r より小さくなります。しかし、その後すぐに右括弧を追加することでバランスを保ちます。
if (r < l) return; のチェックにより、右括弧が先に追加される(つまり、r < l となる)状況を防いでいます。これは、左括弧を追加した後でのみ右括弧を追加するという、このコードの括弧の追加の順序を反映しています。そのため、この制約が満たされない場合(つまり、右括弧が先に追加される場合)、そのパスは無効となり、すぐに終了します。
したがって、この if (r < l) return; の制約は、このコードの括弧の追加の順序に基づいて、左括弧と右括弧が正しくバランスを保つことを保証しています。
No.336
非負のランダムウォーク書いて+1-1を()に対応させるだけだろ
No.337
>>327

閉じ括弧が開き括弧より少なかったら、ダメってことなだけでは。
開き括弧と閉じ括弧の数が同じって条件は最初の呼び出しではlとrが同じでなければならないって制約があると思う
No.338
6完…
途中まではいいペースもFで帰りがけにも頂点集合受け取るの忘れて時間ギリギリに
No.339
>>337

例えば())(()は閉じ開きの括弧数だけでいうとおkだけど実際にはおkじゃない
では何故これが生成されないか、他の駄目パターンもなぜ生成されないか気になった
というのを既に考察したつもり
No.340
しかし、解く時間が限られている場合にグダグダ悩んでいる暇はないよなあ
そういう場合パターンを覚えておくしかない?
No.341
ジャッジが終わらないよ
No.342
unratedおおすぎ
No.343
アーロンジャッジたすけて
No.344
atcoderがddos受けてるとして、潰して得をするのは誰だ?
No.345
ロシア中国
No.346
ガイジのみんなこっちおいで😆
怖がる必要ないよ✌
No.347
うおおおおおおおお🤓
No.348
他のガイジもこっちおいで!
No.349
攻撃されてね?
No.350
落ちてる!クソすぎ!!!
No.351
せっかくG解けたのに1分遅れになってしまった…
No.352
アンレでしょ、ね?ね?
No.353
ところでC正解者少なすぎ
No.354
10:10くらい?から今(10:50)までずっとatcoder開けませんが、同じ人いるかな
なんてツイートしてるひともいるね
No.355
このコードがaws環境でsegmentationfaultになる原因わかる人いる?
ちなみにatcoderではこのコードでACを取れたので致命的な間違いがあるわけでは無さそう
int main(){
ll n, q, dp[39][100009], A[100009];
cin >> n >> q;
rep(i, 1, n){
cin >> A[i];
dp[0][i] = A[i];
}
rep(i, 1, 29){
rep(j, 1, n){
dp[i][j] = dp[i-1][dp[i-1][j]];
}
}
rrep(i, q){
ll x, y;
cin >> x >> y;
ll cur = x;
Rep(j, 29, 0){
if((y & (1 << j)) != 0) cur = dp[j][cur];
}
cout << cur << endl;
}
}
No.356
どこかおかしい部分あるかな
No.357
スタックサイズ
No.358
>>355

マルチは市ね
No.359
Twitterのpaizaの広告とかに必ず現れる
「入力値をチェックしていない」
という返信をつける人は、具体的に何をチェックして、どう処理するの?
No.360
たとえば、
・Nは偶数
・AとBの合計はN未満
といった制約は、実際のプログラムならチェックして例外をスローする
しかし、
「nが整数値じゃない場合をチェックしていない」
みたいなよくわからない難癖をつける人もいる
整数値じゃなければint型にパースするときに、ほとんどの言語で例外になるからいいのでは
No.361
>>355

ll で dp[39][100009], A[100009];
何バイトあるん
No.362
今回は簡単めでしたね
G解けなかったけど
No.363
コンテスト初参加
C問題があまりにも酷いと思った
20分くらいかけて、priorityqueue<pair<double、int>> に値をプッシュする時にpairのsecondの方にマイナスを付ければ良いことに気がついたもののWA
何を試してもWAで、doubleの精度に問題があるんじゃないかと思って、ネット検索をしたら、long doubleという型があることを知り、試してみたら無事AC
C問題で時間とメンタルを削られてD問題は諦めた
初参加とはいえ茶パフォはあまりに脳障害すぎるだろ
No.364
今回のC問題でpriorityqueueを使ったんだけど、priorityqueue<pair<double、int>> に値をプッシュする時、pairのsecondの方に-をつけて取り出す順番を工夫するのって典型?
ちょっとした閃きだけど思いついた時は俺ちょっと頭いいんじゃねって思っちゃった
その後ものの見事に脳障害っぷりを晒してしまったけど
No.365
その発想は天才だよ、才能あるね
No.366
マジレスすると符号付けて逆順にすることで実装をシンプルにするのはかなりの典型です
No.367
むしろそのマイナスにするのが主題と言ってもいいくらい
No.368
C++ってFraction無いんだっけ?
まあ無くても自分で通分すれば済む話だが
No.369
なるほど、ただの典型だったか…
ただ、その典型を自分で思いついたのはちょっと嬉しい
No.370
先程 D問題をACしてきた
結構簡単だし、C問題を普通に解けていたら多分四完出来た
今回のC問題みたいに本質的じゃない部分(long doubleという型を知っているかどうかみたいな)を問うのは本当にやめた方が良いと思う 問題の質がシンプルに低い
No.371
小数の精度についての理解を問うなかなかの良問だと思ったけどね
No.372
浮動小数点数での出力を求められていない場合に浮動小数点数を使うのはアンチパターン
分数を管理する構造体を持ち出したり適切な比較関数を書いたりして対処するべき
No.373
前回のC問題はただめちゃくちゃ面倒なだけでアレだったけど今週のC問題は何も悪くないし非本質的でもないだろ
浮動小数点数は誤差に気をつけるべきなんて競プロでは身につけておくべき典型知識だし競プロ外でも浮動小数点数の仕組みは知っておくべきだしm
No.374
強いて言うならlong double型で無理矢理通すような解答を弾けるような設定にして比較関数やら有理数型を表す構造体やらの整数しか登場しなくて誤差の心配がない解答のみが通るようにしてほしかったがCでそれは酷かもしれない
No.375
long double使わなくても解けるし、それ知らないと解けないと言ってる人のレベルが低すぎるだけ
No.376
E問題の意味が分からないんだが。
俺の考えたアルゴリズムは、
Mが0,1,2になる数、
Eが0,1,2になる数、
Xが0,1,2になる数、
を全て数えて
各組み合わせ27通りについて、
mex×場合分けの数
っていうやり方をしたんだがサンプル3の問題からしてそもそも合わない
日本語下手で説明難しいからコードを見てほしい。
https://atcoder.jp/contests/abc308/submissions/43167367

このやり方がなぜいけないのかわからない
コンテスト中「E問題いけるやん!」と思ってただけに絶望だったわ、はぁ。。
No.377
関係ないけど、dictのkeyで回せば
if k not in dic["X"]:
continue
みたいなのいらなかったな
No.378
i<j<k
No.379
>>378

ないてもいい?
No.380
雑なやり方だけど、
「E」に来た時点で、それより前のMの各012の数と
それより後のXの「012」の数を保持しておけば簡単に解けたわけか
No.381
Cみたいなのが普通に小数にしてソートして解けないとか、現実的に不要な精度を求めてるからじゃ。工夫して分数を比較とか一般的なプログラミングではあり得ない。
No.382
一切の誤差が許容できないケースは業プロでもあり得ると思う
No.383
COBOL使われてそう
No.384
普通に業プロでも浮動小数点の誤差でやらかすのあるあるだけどな
とくに一致判定しだすと大抵はテストを通って後でトラブる
No.385
むしろ業プロはバグだらけで運用でカバーするのが当たり前だか?
バグなくなるまでQAとデバッグしてたらいつまでたっても終わらない
No.386
当たり前だが?
No.387
>>381

あり得ないのは誤差があることを知りながらdoubleを使うことだぞ
誤差が許容できないとわかってて整数で誤差のない計算ができることもわかってるんだから整数で計算するべき
わかってないお前が無能というだけ
No.388
しかし、スポーツとかゲームの勝率を管理するシステムがあったとして、
小数点以下6桁以上の精度のために内部的に分子分母を整数で別々に保存してるとは思えないのだがwww
No.389
思えよw
勝ち数と試合数を保存してるに決まってるだろw
No.390
逆に勝率だけ保存してその後の試合の結果どうすんの?w
過去の勝率からどうやって現在の勝率を計算するんだよw
No.391
それは当然してるけど、orderbyで引き出すときに、勝率をatcoder流でソートするとか多分ないw
ワテが知らないだけで分数流ベイズ統計学とかあるのかw
No.392
お前の我流が間違ってるだけだぞ
No.393
普通に業務でもあり得るんだよなぁ
No.394
>>390

n 試合後に
現在の勝率 R(n)「だけ」が判っている場合
n+1 試合後の勝率 R(n+1) は
n+1 試合目の勝ち負けが r (勝ちなら 1 負けなら 0) とすると
R(n+1) = (R(n) x n + r) / (n + 1)
で良いんじゃね
もちろん誤差は蓄積するよ
こんなこと一々描くのも恥ずかしいレベル
No.395
>>394

そのnは試合数じゃないのかw
こんなこといちいち書かせるなよw
No.396
もう少し比較条件が複雑化されて
operator<なりstd::sortに渡すラムダ式をちゃんと定義しないと駄目なら一転して教育的とかいいそう
No.397
ARCゼロ完 地頭悪すぎる ガチで死にたい
No.398
昨日はABC三完
今日はARCゼロ完
A問題は解けそうだったけど結局最後までAC出来ず
頭が悪すぎる
IQ1しか無いよ俺は
No.399
数理能力皆無の知的障害者です
No.400
・解説開くとTwitterに飛ぶやつあるが、アカウント持ってないから見れない。
・今日のARC出題者はPCT。何千人の大人が高校生の手の上で転がされていると思うと笑える。
No.401
大人は経験を積んでるから対応力があるわけで素の能力的には筋力でも記憶力でも計算力でも高校生くらいがピークだろ
ずっと数学に取り組んできた高校生が年食ったにわかより数学力高いのは何もおかしくない
No.402
女子高生ですが質問良いですか?
No.403
女子高生は伊藤ハムと株式会社響の登録商標
No.404
女子高生®
No.405
女子高生++
No.406
32進数で18のガールです
No.407
コードクイーンの足切りライン調べたら女性率わかりそう
No.408
高校生の茶パフォ、大人の緑パフォが通過してるのは観測した
No.409
CodeQUEENの予選通過ボーダーは4000位くらいか
決勝が200人だから、予選参加者の女性率は1/20くらい? 意外と多い
No.410
普段よりは多いはずだしmaxで5%って少なすぎでは
No.411
情報系学科には5%も女子いないしそんなもんだろ
No.412
決勝50人だという認識だけど変わった?
No.413
明日ICPC国内予選で、紙デバッグのためにソースコード印刷できる環境を作りたいんだけど、どういう方法で印刷するのがおすすめ??
できれば関数とか変数に色ついた状態で印刷できるのがよくて(結局白黒印刷でそこまで判別できないんだろうけど……)、コマンド一発とかだとさらに嬉しい。
ubuntu on wslで、C++のコードを印刷する予定。
No.414
うんち!w
No.415
>>413

エディタでスクショ撮って印刷すれば?
それかSlidesCodeHighlighter
No.416
関数とか変数のfontを変えればいいんじゃないの?
No.417
Fで撃沈
Dの壁がすごい
No.418
D難しくて40分前に撤退
No.419
6完
時間あればGもいけそうないけなさそうな
No.420
うんち
No.421
終了ぎりぎりにしか参加できなかったけどEなんでこんなに少ないの
No.422
D解けそうで解けず
E解くの遅くなってしまった
No.423
処理水放出にブチ切れた某国のハッカーがDDoS攻撃をエスカレートさせるか?
次回ABCに注目!
No.424
Haskellで競技プログラミングやってみたい
過去問解答つきのコンテストかオンラインジャッジって何がある?
No.425
うんち!w
No.426
マ板落ちてる?
No.427
マ板落ちてる?
No.428
マ板は落ちてるし、ここも調子悪いし、Xより先に5ch終わってもおかしくなさそう
No.429
ガイジスレ終了
No.430
talkのパソコン一般か、ム板の二択になるのかな?
No.431
ガイジのみなさんのご来訪を、本スレ民一同心よりお待ちしております
No.432
緑最高!
No.433
chokuから青でカンストいただきました
青agerが一歩リードか?
No.434
このまま5ch潰れてもいいから一緒にXも閉鎖してくれ
これでネットも平和になるしみんなの幸福度も上がるだろ
No.435
こっちは生きてるのか
No.436
本スレへようこそ
No.437
[クライシスアクター」「豊島保養所」←画像検索&拡散!
他スレに丸ごとコピペよろしっくっ!!
ネットでできる反レプティリアン・反イルミ活動です!!!!!
動画サイトのコメ欄もねらい目だぞ!!!!!!!
No.438
あぼーん
No.440
本スレ再開
No.441
こちらに一本化しよう
No.442
今日のABCの感想もこっちに書こう
No.443
うん
No.444
No.445
ガイジスレ死んだ
No.446
健全にアルゴリズムの議論が行われるこっちの方がいいね
No.447
緑はセンター300点レベル
緑は境界知能レベル
緑は社会不適応者
No.448
本当のことを言うな
No.449
緑ってなんですか?
No.450
緑も知らんの?
赤や青は知ってる?
No.451
知らない
No.452
ポケモンだぞ
No.453
ポケモンか・・・余計にわからんわw
No.454
誰かいますか?
No.455
いませんよ
No.456
い、い、い、いませんよ
No.457
abcってcまでは名前ついてるアルゴリズムは絶対不要でしょうか?
No.458
d3分オーバーで解けたのに悔しい😭
No.459
>>457

線形探索とか使うよね
No.461
天才プログラマーはいまだ成長中ということ
No.462
どこも書き込めんわ
No.463
本スレの時代きたな
No.464
ワッチョイありの方がいいね
No.465
それはそう
No.466
ガイジスレ嫌われてて草
No.467
世の中IQなの?
おれwais検査の結果IQ119だった絶望
赤マスさんみたいな脳がほしかった
No.468
馬鹿が何作るの?って話だわな
No.469
また本スレの時代が帰ってきたな
もうここだけでいいよ
No.470
ガイジスレやっと終了したか
No.471
ガイジスレ終了
No.472
ガイジスレ終了
No.473
ガイジスレ開始
No.474
ガイジスレ終了
No.475
ガイジスレ終了
No.476
忌み数字を踏ませる業者、アプリ、コンピュータプログラムの嫌がらせ
動画再生回数、表示回数、登録者数、フォロワー数、評価数、コメント数、レベル、経験値、ポイント、HP、通貨、価格、メッセージ数、通知数、フレンド数
4(死)、13(キリスト教における忌み数字)
18(嫌)、24(〜に死)、34(〜さん死)
40、42、44
56(殺)、64(無視)
71(無い)、74(無し)、79(無く、亡く)
84(〜は死)、94(〜君死)、96(黒)
このような数字と名前や生年月日、IDなどを組み合わせて執拗に強調することで、精神攻撃をする業者やストーカー、嫌がらせ組織がキモい。
No.477
>>476

お大事に
No.478
ガイジスレ終了
No.479
プログラムオートセットコード20からフルオート20
プログラムオートセットコード20
からフルオート20(ラムール20)を
代入すると更に楽になる。自動で
ダイダロディック20やバイバロン20
などになる(セットコード)。指定でも
勿論いいが、こっちが本来はバランスが
取れることを知っていないといけない。