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

1デフォルトの名無しさん (アウアウウー Sa77-waiq)
垢版 |
2023/03/22(水) 15:19:42.08ID:9X0hpeOca
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑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/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2023/04/16(日) 19:06:04.93ID:Ke39kkrTa
どうしても自力で解けないなら解説読んでいいんじゃね
2023/04/16(日) 22:30:54.90ID:SVYFRHN6r
もし自分でアルゴリズム開発したらかっこいい略称付けたいよね
2023/04/16(日) 22:32:11.67ID:XfEQvCuWa
>>241
俺かよ
PriorityqueやSortedSetを使わずに普通の配列やSetを使って出力時に都度ソートしたら行けた
自前のライブラリだと重すぎるみたいだな
245デフォルトの名無しさん (ワッチョイ 5f55-7nfa)
垢版 |
2023/04/17(月) 08:58:02.89ID:5c7uVWzN0
Aho, Hopcroft and UllmanのThe Design and Analysis of Computer Algorithmsという
非常に古い本はもうゴミのような本でしょうか?
2023/04/17(月) 12:28:12.67ID:WWhqmq79r
今アホって言った?
2023/04/17(月) 22:20:09.89ID:5e6VxUA80
最近は自分で判断できない輩が増えてきたな。
2023/04/17(月) 22:52:26.54ID:LKkslgOL0
>>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は、歴史的な価値があるという点でゴミのような本とは言えませんが、現代のアルゴリズム研究や技術を学ぶ上で最も適切な教材ではないかもしれません。学ぶ内容に応じて、より新しいリソースや書籍を利用することを検討してみてください。
2023/04/17(月) 23:36:48.58ID:y8gbGQlA0
アルゴリズムデザイン、重版されて書店に並んでて嬉しかった
2023/04/20(木) 19:31:49.09ID:f2njLhGLa
https://mathlog.info/articles/4204

今までにない斬新なセグ木の解説記事
2023/04/20(木) 19:42:54.89ID:mhtgTGfFa
>>250
その下のスーパー某もすごいな
2023/04/21(金) 12:31:14.61ID:Oi9Mt79Gr
レートは?書いた人の
2023/04/21(金) 13:07:22.60ID:/VhDvdfwa
正確な数値はともかく灰色以外の何に見えるんだ?
2023/04/21(金) 13:16:18.21ID:wvR7tFMwr
読む価値があるか確認するために聞いたんだけど
2023/04/21(金) 13:19:22.09ID:/VhDvdfwa
ないよ
2023/04/21(金) 13:20:36.38ID:Va2XyxIX0
ないアルヨ
2023/04/21(金) 13:23:56.80ID:/VhDvdfwa
ないのかあるのかどっちだと突っ込んでほしいジジイおるな
2023/04/21(金) 13:26:33.33ID:Va2XyxIX0
ツッコんでほしいアルヨ
2023/04/21(金) 17:05:10.19ID:k2duIDVm0
関数型しか触ったことないに1ペソ
2023/04/22(土) 21:46:10.29ID:5GqLc7RXM
またUnratedやないか
誰やねんDDoSしてるやつ
こんなサイトにしても意味ないやろ
2023/04/22(土) 22:42:13.57ID:/cmb/FVj0
久しぶりにABCDEG6完😤
2023/04/22(土) 23:12:42.60ID:rVcI1++Da
中国かロシアやろな
国がらみの可能性もあるから犯人探しは無意味
2023/04/23(日) 01:27:17.24ID:moyGSSduM
意図的に狙われてるのは確かだけどなんの目的で狙ってるんやろ
2023/04/23(日) 15:36:40.71ID:60YTymnP0
C問題なんだけど解説みたいに反転させる必要ある?
一つでも-が含まれてたらoの最大長答えるだけじゃない?
つまりn未満のoの最大長答えるだけでしょ
2023/04/23(日) 15:44:39.80ID:QD8bkyZga
解答例のやり方だと反転の必要あるな
串が出てきて初めてansに入るから
2023/04/23(日) 18:46:05.86ID:MZTwl0QJ0
反転させて2回チェックすれば団子判定をシンプルにできるって意図じゃないかな
2023/04/23(日) 18:54:15.92ID:LpJKh+XVa
出題者は反転してない
どっちでもいいんじゃね
2023/04/23(日) 20:08:08.02ID:PWijjkXzM
-が入っていれば、oと-しかないのだからoは-と接してるわけで、oと-どちらかなければ-1、両方あれば連続したoの長さでいいんじゃないの?
2023/04/23(日) 20:10:50.67ID:PWijjkXzM
久し振りにやったんだけど、
rated選んだつもりなのにunratedになってたんだけど、自分が選び間違えたの?
成績よくなかったからいいんだけど
2023/04/23(日) 20:17:55.91ID:5yiVxLP00
質問タブに書いてあるけどDDOSのせいで全員unratedの無効試合になってる
2023/04/23(日) 20:18:35.89ID:5yiVxLP00
>>268
それでもいいし解けさえすればそれでなくてもいいというだけの話
2023/04/23(日) 20:39:44.51ID:PWijjkXzM
>>270
ありがと。
別にお酒に酔ってたわけじゃないのに、
なんで間違えたのかずっと悩んでたの
2023/04/23(日) 20:43:02.12ID:LpJKh+XVa
Cは正規表現で解けるな
肯定的先読み言明を使えば一回のマッチでいける
2023/04/23(日) 21:48:22.47ID:kV4uegyh0
質問タブでアナウンス送るの、知らない人にとっては分かりづらい
2023/04/25(火) 18:22:04.22ID:NfKxocHyd
Chatgptの影響ですでにレート出にくくなってるとかある?
2023/04/25(火) 18:32:28.97ID:aoA2LcV80
GPTのおかげで誰でもCくらいまでは瞬殺できるし、緑茶らへんの人にとっては影響あるんじゃない?
2023/04/25(火) 20:23:26.21ID:Nhg6f6DZa
インタラクティブ問題なら回避できるんかな
2023/04/25(火) 22:48:32.00ID:8h60ybjNd
茶色中盤くらいまではCまで早解きゲーだしまあ初心者は萎えるかもな
2023/04/26(水) 00:39:41.99ID:v/InlOgJ0
D - Find by Query
この問題の意味がわからない、運が悪いとACできないとか無いの?
2023/04/26(水) 00:44:09.42ID:v/InlOgJ0
ああ、境界を探すのか
2023/04/26(水) 04:47:13.13ID:CtDSQpU90
10 ^ 6で試せる回数が20回だから二分探索しかないんだけどこういうメタ読み辞めたいんだよな
2023/04/26(水) 04:53:12.19ID:dFoBwinZp
何なら序盤で出てくるインタラクティブ問題っていう時点でパターンが限られすぎてて8、9割二分探索(の類型)であることが推測出来る
2023/04/26(水) 14:19:57.84ID:pZKGmWvba
>>276
必ず正しい答えを出すわけじゃないから自分で直せないとペナルティ食らうぞ
2023/04/26(水) 18:10:09.71ID:hY8jXU1C0
問題公開されてても提出できなかったらどうすんの
2023/04/26(水) 18:32:26.54ID:PpfAVk7MM
茶色だけみんなchatgptで序盤の問題解いてたのか
俺もそうしようかな
2023/04/27(木) 13:25:15.77ID:N5pXZR7+0
GPT使ってないからレートが低い、みたいなセルフハンディキャップはカッコ悪すぎるからGPTくらいは賢く利用しようね
2023/04/28(金) 04:45:15.96ID:9dah9Cbv0
A,Bの問題文を整形してChatGPTに貼り付けて反応もどってくるの待つより自分で解いたほうが速いわけ
更に投稿前にチェックも必要だし
嫁にそのやり方を教えてA,B問題の投稿を担当してもらってる間に自分はCあたりから手を付けるのほうがいいかも
2023/04/28(金) 08:08:18.98ID:Qu9Tu4Uo0
>>287

そんな姑息なことをするほど、競技プログラミングで良い成績をおさめることにメリットはあるんですね。
2023/04/28(金) 08:22:56.44ID:39Dn9gJ30
>>287
APIあるんだから全部自動化するにきまってんだろ
2023/04/29(土) 23:10:27.33ID:yZQ+uKse0
5完しかできなかった
Dみたいなのが地味にめんどくさい
2023/04/29(土) 23:17:20.22ID:BBFLtm1nM
D問題昨日勉強した内容が出てきてめっちゃ嬉しかった
これ進研ゼミでやったことある状態だったわ
2023/04/30(日) 00:03:32.63ID:VtRKwrnb0
Gで解説と違う方針で通したから解説書こうと思ったが、一応C++でも通るか確認したらC++だとTLEだったのでやめた
C++遅いね
293デフォルトの名無しさん (スフッ Sdbf-TsFU)
垢版 |
2023/04/30(日) 01:19:01.58ID:WQH2sNqzd
Patisserie ABC 3 出るかと思って過去問見直したけど全然出なかった
2023/05/03(水) 00:51:23.91ID:83koBp/d0
ngtkanaって男性?
2023/05/03(水) 04:10:47.45ID:k35m8F9T0
黄色だから野郎じゃない
296デフォルトの名無しさん (ワッチョイ 9f55-hzXf)
垢版 |
2023/05/03(水) 17:06:24.93ID:aKUbjdKi0
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 であるかそうでないかを判定してください。

↑自作の問題です。
この問題って効率的なアルゴリズムが存在しますか?
2023/05/03(水) 17:43:05.99ID:C+dlbD9Z0
日本語で書いてくれ
2023/05/03(水) 19:29:13.60ID:ElyXadep0
B1とB2の直方体の数が異なる場合、B1とB2は等しくない
B1とB2の直方体の数が同じ場合、B1とB2に含まれる直方体の番号を並べ替える
各直方体の対応する要素が等しくない場合、B1とB2は等しくない
すべての直方体の対応する要素が等しい場合、B1とB2は等しい
2023/05/03(水) 19:40:48.41ID:aKUbjdKi0
B1 が1個のn次元直方体からなる集合とします。
それを2つに分けた2つのn次元直方体の和集合を B2 とします。
B1 を構成する直方体の数は 1 です。
B2 を構成する直方体の数は 2 です。
ですが、B1 = B2 です。
300デフォルトの名無しさん (ワッチョイ 9f55-hzXf)
垢版 |
2023/05/03(水) 19:43:42.25ID:aKUbjdKi0
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 です。
301デフォルトの名無しさん (ワッチョイ 9f55-hzXf)
垢版 |
2023/05/03(水) 19:48:56.95ID:aKUbjdKi0
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 です。
302デフォルトの名無しさん (ワッチョイ 9f55-hzXf)
垢版 |
2023/05/03(水) 19:49:22.48ID:aKUbjdKi0
>>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 です。
2023/05/03(水) 21:06:39.53ID:MtXxv88er
うんち!w
2023/05/04(木) 00:35:43.31ID:FFDpqzE90
併合していって無駄のない表現にできればいける?
2023/05/04(木) 01:33:09.74ID:Pbw0n2Gt0
そんなことよりn乗で増えていくのを抑えないと無理なんでは
306デフォルトの名無しさん (ワッチョイ 9f55-hzXf)
垢版 |
2023/05/04(木) 02:26:58.39ID:iR6EpWdh0
2次元限定、座標は有理数限定にしたら、競プロの問題として成立しますか?
2023/05/04(木) 04:20:04.21ID:W+5O3yqN0
>>306
yukicoderで出題してみれば?
308デフォルトの名無しさん (ワッチョイ 9f55-hzXf)
垢版 |
2023/05/05(金) 10:56:46.77ID:xYbtWehf0
>>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 の部分集合の中で最大の直方体を求めよ。


この効率的な解法はありますか?
2023/05/05(金) 13:25:13.43ID:CuujTRH+0
あるよ
2023/05/05(金) 18:31:53.93ID:zrOWQZW0M
自分で解けてなければ自作の問題とは言わん
2023/05/05(金) 21:17:04.26ID:0zwWrX/A0
よくわからないけど [0, 1) の最大の区間は存在しないんだけど大丈夫そ?
2023/05/13(土) 22:41:38.39ID:WJe+G9hta
5分延長か
面白い対応するね
2023/05/14(日) 00:45:51.21ID:KvQ47IR30
攻撃を受けてもratedという前例ができたのはよかった
2023/05/14(日) 06:52:48.64ID:NgHJ91w50
コンテストモードの敗北
315デフォルトの名無しさん (ワッチョイ f37c-ECSL)
垢版 |
2023/05/17(水) 05:36:16.93ID:UaIMjrrs0
>>294
女性だよ
検索したら本名とか出て来ると思うけど
2023/05/17(水) 09:19:32.53ID:tRah0iPS0
>>315
Youtubeで本人の歌声も聴けるしな
2023/05/20(土) 22:48:05.22ID:IbXAPdJ/0
6完…
今回は7完したかった…
2023/05/20(土) 23:12:12.63ID:+EVZ8y+Ka
配点割とその通りだったな
2023/05/22(月) 00:56:46.44ID:mBh1GEMi0
パフォーマンスがinfinityになった回って61以前にあった?
2023/05/27(土) 22:44:08.16ID:DM47Hxe/0
難しすぎるよ
2023/05/27(土) 23:33:38.14ID:DM47Hxe/0
コドフォもないし
2023/06/03(土) 23:01:24.39ID:i1emxrQn0
6完
mod入力ミスってたのがアホすぎる
323デフォルトの名無しさん (ワッチョイ c6bd-2a7c)
垢版 |
2023/06/04(日) 16:31:49.86ID:VEMViUBd0
やっとE問題解けるようになってきた

E問題って一個一個の実行時間が長いんだな
324デフォルトの名無しさん (ワッチョイ c2bd-2a7c)
垢版 |
2023/06/04(日) 17:44:29.58ID:0q9gSB9x0
競プロ有段者(強い人)に質問

Atcoderで一段階上に行くためには解説を何も見ずとも解けるレベルの一段階上を同じように解けるレベルになるまでその問題を解説だけ見て実装は全て自分で、っていう感じでひたすら練習していくっていうやり方は有効?

自分の場合はD問題は9割ガタ解けて、Eがまだ実戦では歯が立たないレベル
2023/06/04(日) 17:53:24.73ID:AGQzq0Q+0
うん
326デフォルトの名無しさん (ワッチョイ 02bd-2a7c)
垢版 |
2023/06/04(日) 20:29:27.17ID:z/tZxQvT0
E問題思ったより簡単だな
食わず嫌いしてた
2023/06/06(火) 11:53:03.19ID:MhCqkbZk0
某所で「左右がバランスした括弧の列を生成する」という問題があり、解答が

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; が左右のバランス(単に'('と')'の数が同じというだけでなく)の条件に
効いているようですが、ピンとこないのです... 確かに正しい括弧の列のとき、それが成り
立つのはわかりますが、逆にそれがバランス条件を満たすのに十分であるというのが 
どなたかわかりやすい説明はないでしょうか
2023/06/06(火) 12:29:54.00ID:GQVo4dJ/a
しょーもない処理を複雑に描いてるだけのクソプログラムやな
この関数は最初の呼び出しでlとrが同じ数字なるよう入れるのが前提で
r<lの条件は例外処理みたいなもんやろ
2023/06/06(火) 12:35:33.96ID:UncR9VmG0
このコードの一部 `if (r < l) return;` について説明します。

ここで `l` と `r` はそれぞれまだ追加できる '(' の数と ')' の数を表しています。なので、このチェック `if (r < l) return;` は、')' の数が '(' の数より少なくなる場合、すなわち、開き括弧より閉じ括弧が少なくなる場合を防いでいます。

正しい括弧の列を生成するためには、2つの重要なルールを守らなければなりません:

1. 左括弧と右括弧の数が等しいこと
2. 任意の時点で、右括弧の数が左括弧の数を超えないこと

1つ目のルールは、左括弧と右括弧を同数だけ生成すれば満たされます。しかし、2つ目のルールはもう少し注意が必要です。それは、どの時点でも、閉じ括弧の数が開き括弧の数を超えてはならないからです。これを超えてしまうと、括弧の列が無効になってしまいます。

例えば、"())(" のような列は、開き括弧と閉じ括弧の数は同じでも、2番目の閉じ括弧が開き括弧を超えているため、無効な括弧の列となります。

だからこそ、`if (r < l) return;` のチェックが必要なのです。これにより、閉じ括弧の数が開き括弧を超えるような状況を防いでいます。これは、まだ追加できる閉じ括弧の数 `r` が、開き括弧 `l` より少なくなる場合、すなわち、閉じ括弧が開き括弧を超える可能性がある場合に、そのパスをすぐに終了させることで実現されています。
2023/06/06(火) 12:49:04.77ID:FRsr3KcUH
(を+1)を-1と対応させて累積和が常に非負っていうのがバランスしていることの必要十分条件であることを認めれば if(r < l)return; がそれの言い換えなことは明らか
証明したければ累積和が0になるところで文字列を分割して、それぞれの文字列の一番外側の括弧を取り外すとネストが一つ浅いものに帰着できるからネストの深さで帰納法を回すみたいなことを気をつけてやるといいんじゃないか
2023/06/07(水) 08:00:55.26ID:nPOLblkw0
>>329はChatGPTなのかな? すごいな
>>330 どうもありがとうございます

このコードの場合、再帰時に常に右側に括弧を追加することが if (r < l) return; で
必要十分になることの前提だと思うんですが.... >>329はそのことがうやむやのような
2023/06/07(水) 08:33:42.08ID:nPOLblkw0
>>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の(())を二つ並べた、と考えるべき?

要は、正しい括弧の追加操作のみをして再帰的に括弧列を生成することは可能なのか?
あるいは単にすべてのパターンを生成して正当でないのを刈り取ることしかできないのか?
などということが気になったのですが
2023/06/07(水) 09:49:06.82ID:Bta2HQ7X0
>>332
結論から言うと、それは難しい問題であり、一般的なアプローチでは、「全てのパターンを生成し、
それがバランスの取れた括弧列であるかどうかを判定する」という方法が用いられます。

しかし、バランスの取れた括弧列を生成するための一種の再帰的なパターンは存在します。
それは、大きさnの全てのバランスの取れた括弧列を生成した後で、その各々に対して以下の操作を行うことです:

1. '(' + P + ')' を追加する
2. P + '()' を追加する
3. '()' + P を追加する
ここで P は大きさnの任意のバランスの取れた括弧列です。

この操作を行うと、全ての大きさn+1のバランスの取れた括弧列を生成することができます。
ただし、これは重複する列を生成する可能性があるため、生成された列は一意であることを保証するために
何らかの方法で重複を除去する必要があります。

したがって、厳密には「全てのパターンを生成し、それがバランスの取れた括弧列であるかどうかを判定する」
という方法とは異なりますが、これは一種の再帰的なアプローチと言えます。

しかし、これらのアプローチは計算時間やメモリ使用量の観点から見ると、>>327に示されたDFSを用いたアプローチに比べて
効率的ではないかもしれません。また、DFSを用いたアプローチは明確に「正しい括弧の追加操作のみ」を行っていると言えます。
なぜなら、すべての括弧列を生成する過程で、同時にその列が正しい括弧列であるかどうかをチェックすることが可能だからです。
2023/06/07(水) 10:10:41.04ID:WomvMCD50
>>332
>>333 は嘘
バランスした括弧列の定義は全体を括弧で囲む操作と括弧列2つの結合で生成される集合だから、その()を追加するっていうのを右か左に追加するって意味だとするとレベル2以上の文字列同士の結合が考慮されていないの
で、(())(())が作れない

中に()を挿入することを許すとすると、今度は全体を括弧で囲む操作はいらなくなる
というのも、どんな空でないバランスした括弧列にも()の部分があるから、それを取り除くことを繰り返すことで空にできるから、逆に空文字列に()を追加していくことで任意のバランスした括弧列が作れるし、バランスした括弧列の任意の箇所に()を挿入した文字列もまたバランスした括弧列になっている
2023/06/07(水) 11:08:01.09ID:DYKBdUd80
>>331
ご指摘の通り、このコードでは再帰的に右側に括弧を追加しています。具体的には、まず左括弧を追加し、その後で右括弧を追加しています。

この if (r < l) return; の制約は、この追加の順序に基づいています。開始時点では、開き括弧と閉じ括弧の数が等しく(つまり、l == r)、左括弧を先に追加します。そのため、追加の過程では一時的に l が r より小さくなります。しかし、その後すぐに右括弧を追加することでバランスを保ちます。

if (r < l) return; のチェックにより、右括弧が先に追加される(つまり、r < l となる)状況を防いでいます。これは、左括弧を追加した後でのみ右括弧を追加するという、このコードの括弧の追加の順序を反映しています。そのため、この制約が満たされない場合(つまり、右括弧が先に追加される場合)、そのパスは無効となり、すぐに終了します。

したがって、この if (r < l) return; の制約は、このコードの括弧の追加の順序に基づいて、左括弧と右括弧が正しくバランスを保つことを保証しています。
2023/06/07(水) 14:48:36.26ID:w+aRYGw/r
非負のランダムウォーク書いて+1-1を()に対応させるだけだろ
2023/06/10(土) 17:29:19.24ID:0oQUevmP0
>>327
閉じ括弧が開き括弧より少なかったら、ダメってことなだけでは。

開き括弧と閉じ括弧の数が同じって条件は最初の呼び出しではlとrが同じでなければならないって制約があると思う
2023/06/10(土) 22:46:50.51ID:sqwX2ns70
6完…
途中まではいいペースもFで帰りがけにも頂点集合受け取るの忘れて時間ギリギリに
2023/06/11(日) 20:43:12.18ID:Fc1cWZtx0
>>337
例えば())(()は閉じ開きの括弧数だけでいうとおkだけど実際にはおkじゃない
では何故これが生成されないか、他の駄目パターンもなぜ生成されないか気になった
というのを既に考察したつもり
2023/06/11(日) 20:59:44.70ID:Fc1cWZtx0
しかし、解く時間が限られている場合にグダグダ悩んでいる暇はないよなあ
そういう場合パターンを覚えておくしかない?
2023/06/17(土) 22:47:22.26ID:/YYtpwSS0
ジャッジが終わらないよ
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況