!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
探検
競技プログラミング総合スレ 66
1デフォルトの名無しさん (アウアウウー Sa77-waiq)
2023/03/22(水) 15:19:42.08ID:9X0hpeOca271デフォルトの名無しさん (ワッチョイ 1507-ZiWf)
2023/04/23(日) 20:18:35.89ID:5yiVxLP00 >>268
それでもいいし解けさえすればそれでなくてもいいというだけの話
それでもいいし解けさえすればそれでなくてもいいというだけの話
272デフォルトの名無しさん (ブーイモ MM3e-oS25)
2023/04/23(日) 20:39:44.51ID:PWijjkXzM273デフォルトの名無しさん (アウアウウー Sa21-ZiWf)
2023/04/23(日) 20:43:02.12ID:LpJKh+XVa Cは正規表現で解けるな
肯定的先読み言明を使えば一回のマッチでいける
肯定的先読み言明を使えば一回のマッチでいける
274デフォルトの名無しさん (ワッチョイ 7d01-8Z+s)
2023/04/23(日) 21:48:22.47ID:kV4uegyh0 質問タブでアナウンス送るの、知らない人にとっては分かりづらい
275デフォルトの名無しさん (スフッ Sd0a-hie5)
2023/04/25(火) 18:22:04.22ID:NfKxocHyd Chatgptの影響ですでにレート出にくくなってるとかある?
276デフォルトの名無しさん (ワッチョイ e505-2JcT)
2023/04/25(火) 18:32:28.97ID:aoA2LcV80 GPTのおかげで誰でもCくらいまでは瞬殺できるし、緑茶らへんの人にとっては影響あるんじゃない?
277デフォルトの名無しさん (アウアウウー Sa21-9VOY)
2023/04/25(火) 20:23:26.21ID:Nhg6f6DZa インタラクティブ問題なら回避できるんかな
278デフォルトの名無しさん (スップ Sd0a-PPLO)
2023/04/25(火) 22:48:32.00ID:8h60ybjNd 茶色中盤くらいまではCまで早解きゲーだしまあ初心者は萎えるかもな
279デフォルトの名無しさん (ワッチョイ 5d2d-YWDm)
2023/04/26(水) 00:39:41.99ID:v/InlOgJ0 D - Find by Query
この問題の意味がわからない、運が悪いとACできないとか無いの?
この問題の意味がわからない、運が悪いとACできないとか無いの?
280デフォルトの名無しさん (ワッチョイ 5d2d-YWDm)
2023/04/26(水) 00:44:09.42ID:v/InlOgJ0 ああ、境界を探すのか
281デフォルトの名無しさん (ワッチョイ e5ad-8MXh)
2023/04/26(水) 04:47:13.13ID:CtDSQpU90 10 ^ 6で試せる回数が20回だから二分探索しかないんだけどこういうメタ読み辞めたいんだよな
282デフォルトの名無しさん (ササクッテロル Spbd-EuHm)
2023/04/26(水) 04:53:12.19ID:dFoBwinZp 何なら序盤で出てくるインタラクティブ問題っていう時点でパターンが限られすぎてて8、9割二分探索(の類型)であることが推測出来る
283デフォルトの名無しさん (アウアウウー Sa21-ZiWf)
2023/04/26(水) 14:19:57.84ID:pZKGmWvba >>276
必ず正しい答えを出すわけじゃないから自分で直せないとペナルティ食らうぞ
必ず正しい答えを出すわけじゃないから自分で直せないとペナルティ食らうぞ
284デフォルトの名無しさん (ワッチョイ 7d01-8Z+s)
2023/04/26(水) 18:10:09.71ID:hY8jXU1C0 問題公開されてても提出できなかったらどうすんの
285デフォルトの名無しさん (ブーイモ MM3e-Zf+n)
2023/04/26(水) 18:32:26.54ID:PpfAVk7MM 茶色だけみんなchatgptで序盤の問題解いてたのか
俺もそうしようかな
俺もそうしようかな
286デフォルトの名無しさん (ワッチョイ e505-2JcT)
2023/04/27(木) 13:25:15.77ID:N5pXZR7+0 GPT使ってないからレートが低い、みたいなセルフハンディキャップはカッコ悪すぎるからGPTくらいは賢く利用しようね
287デフォルトの名無しさん (ワッチョイ 5d2d-YWDm)
2023/04/28(金) 04:45:15.96ID:9dah9Cbv0 A,Bの問題文を整形してChatGPTに貼り付けて反応もどってくるの待つより自分で解いたほうが速いわけ
更に投稿前にチェックも必要だし
嫁にそのやり方を教えてA,B問題の投稿を担当してもらってる間に自分はCあたりから手を付けるのほうがいいかも
更に投稿前にチェックも必要だし
嫁にそのやり方を教えてA,B問題の投稿を担当してもらってる間に自分はCあたりから手を付けるのほうがいいかも
288デフォルトの名無しさん (ワッチョイ 6a55-/HYv)
2023/04/28(金) 08:08:18.98ID:Qu9Tu4Uo0289デフォルトの名無しさん (ワッチョイ d1a4-2JcT)
2023/04/28(金) 08:22:56.44ID:39Dn9gJ30 >>287
APIあるんだから全部自動化するにきまってんだろ
APIあるんだから全部自動化するにきまってんだろ
290デフォルトの名無しさん (ワッチョイ 17b0-NOa+)
2023/04/29(土) 23:10:27.33ID:yZQ+uKse0 5完しかできなかった
Dみたいなのが地味にめんどくさい
Dみたいなのが地味にめんどくさい
291デフォルトの名無しさん (ブーイモ MM8f-ia05)
2023/04/29(土) 23:17:20.22ID:BBFLtm1nM D問題昨日勉強した内容が出てきてめっちゃ嬉しかった
これ進研ゼミでやったことある状態だったわ
これ進研ゼミでやったことある状態だったわ
292デフォルトの名無しさん (ワッチョイ 5701-MUOW)
2023/04/30(日) 00:03:32.63ID:VtRKwrnb0 Gで解説と違う方針で通したから解説書こうと思ったが、一応C++でも通るか確認したらC++だとTLEだったのでやめた
C++遅いね
C++遅いね
293デフォルトの名無しさん (スフッ Sdbf-TsFU)
2023/04/30(日) 01:19:01.58ID:WQH2sNqzd Patisserie ABC 3 出るかと思って過去問見直したけど全然出なかった
294デフォルトの名無しさん (ワッチョイ f7db-YI8Y)
2023/05/03(水) 00:51:23.91ID:83koBp/d0 ngtkanaって男性?
295デフォルトの名無しさん (ワッチョイ 97ad-muTB)
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 であるかそうでないかを判定してください。
↑自作の問題です。
この問題って効率的なアルゴリズムが存在しますか?
n次元空間 R^n の部分集合 B で、有限個のn次元直方体の和集合であるようなもの全体の集合を C とする。
B1, B2 ∈ C であるときに、 B1 = B2 であるかそうでないかを判定してください。
↑自作の問題です。
この問題って効率的なアルゴリズムが存在しますか?
297デフォルトの名無しさん (ワッチョイ 577c-9aVW)
2023/05/03(水) 17:43:05.99ID:C+dlbD9Z0 日本語で書いてくれ
298デフォルトの名無しさん (ワッチョイ 572d-wHlW)
2023/05/03(水) 19:29:13.60ID:ElyXadep0 B1とB2の直方体の数が異なる場合、B1とB2は等しくない
B1とB2の直方体の数が同じ場合、B1とB2に含まれる直方体の番号を並べ替える
各直方体の対応する要素が等しくない場合、B1とB2は等しくない
すべての直方体の対応する要素が等しい場合、B1とB2は等しい
B1とB2の直方体の数が同じ場合、B1とB2に含まれる直方体の番号を並べ替える
各直方体の対応する要素が等しくない場合、B1とB2は等しくない
すべての直方体の対応する要素が等しい場合、B1とB2は等しい
299デフォルトの名無しさん (ワッチョイ 9f55-hzXf)
2023/05/03(水) 19:40:48.41ID:aKUbjdKi0 B1 が1個のn次元直方体からなる集合とします。
それを2つに分けた2つのn次元直方体の和集合を B2 とします。
B1 を構成する直方体の数は 1 です。
B2 を構成する直方体の数は 2 です。
ですが、B1 = B2 です。
それを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 です。
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 です。
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 です。
訂正します:
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 です。
303デフォルトの名無しさん (オッペケ Sr8b-siYD)
2023/05/03(水) 21:06:39.53ID:MtXxv88er うんち!w
304デフォルトの名無しさん (ワッチョイ 5701-MUOW)
2023/05/04(木) 00:35:43.31ID:FFDpqzE90 併合していって無駄のない表現にできればいける?
305デフォルトの名無しさん (ワッチョイ 375f-k3Rv)
2023/05/04(木) 01:33:09.74ID:Pbw0n2Gt0 そんなことよりn乗で増えていくのを抑えないと無理なんでは
306デフォルトの名無しさん (ワッチョイ 9f55-hzXf)
2023/05/04(木) 02:26:58.39ID:iR6EpWdh0 2次元限定、座標は有理数限定にしたら、競プロの問題として成立しますか?
307デフォルトの名無しさん (ワッチョイ 572d-wHlW)
2023/05/04(木) 04:20:04.21ID:W+5O3yqN0 >>306
yukicoderで出題してみれば?
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 の部分集合の中で最大の直方体を求めよ。
この効率的な解法はありますか?
そういうサイトがあるんですか。
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 の部分集合の中で最大の直方体を求めよ。
この効率的な解法はありますか?
309デフォルトの名無しさん (ワッチョイ bfd7-E7B+)
2023/05/05(金) 13:25:13.43ID:CuujTRH+0 あるよ
310デフォルトの名無しさん (ブーイモ MMab-8WUk)
2023/05/05(金) 18:31:53.93ID:zrOWQZW0M 自分で解けてなければ自作の問題とは言わん
311デフォルトの名無しさん (ワッチョイ 375f-67at)
2023/05/05(金) 21:17:04.26ID:0zwWrX/A0 よくわからないけど [0, 1) の最大の区間は存在しないんだけど大丈夫そ?
312デフォルトの名無しさん (アウアウウー Sa67-0YKo)
2023/05/13(土) 22:41:38.39ID:WJe+G9hta 5分延長か
面白い対応するね
面白い対応するね
313デフォルトの名無しさん (ワッチョイ 0333-qwOd)
2023/05/14(日) 00:45:51.21ID:KvQ47IR30 攻撃を受けてもratedという前例ができたのはよかった
314デフォルトの名無しさん (ワッチョイ 4307-9mXs)
2023/05/14(日) 06:52:48.64ID:NgHJ91w50 コンテストモードの敗北
315デフォルトの名無しさん (ワッチョイ f37c-ECSL)
2023/05/17(水) 05:36:16.93ID:UaIMjrrs0316デフォルトの名無しさん (ワッチョイ a32d-+/XS)
2023/05/17(水) 09:19:32.53ID:tRah0iPS0 >>315
Youtubeで本人の歌声も聴けるしな
Youtubeで本人の歌声も聴けるしな
317デフォルトの名無しさん (ワッチョイ d3b0-SwK+)
2023/05/20(土) 22:48:05.22ID:IbXAPdJ/0 6完…
今回は7完したかった…
今回は7完したかった…
318デフォルトの名無しさん (アウアウウー Sa2f-o1RM)
2023/05/20(土) 23:12:12.63ID:+EVZ8y+Ka 配点割とその通りだったな
319デフォルトの名無しさん (ワッチョイ 57db-3XON)
2023/05/22(月) 00:56:46.44ID:mBh1GEMi0 パフォーマンスがinfinityになった回って61以前にあった?
320デフォルトの名無しさん (ワッチョイ abb0-IOpb)
2023/05/27(土) 22:44:08.16ID:DM47Hxe/0 難しすぎるよ
321デフォルトの名無しさん (ワッチョイ abb0-IOpb)
2023/05/27(土) 23:33:38.14ID:DM47Hxe/0 コドフォもないし
322デフォルトの名無しさん (ワッチョイ 99b0-AV1S)
2023/06/03(土) 23:01:24.39ID:i1emxrQn0 6完
mod入力ミスってたのがアホすぎる
mod入力ミスってたのがアホすぎる
323デフォルトの名無しさん (ワッチョイ c6bd-2a7c)
2023/06/04(日) 16:31:49.86ID:VEMViUBd0 やっとE問題解けるようになってきた
E問題って一個一個の実行時間が長いんだな
E問題って一個一個の実行時間が長いんだな
324デフォルトの名無しさん (ワッチョイ c2bd-2a7c)
2023/06/04(日) 17:44:29.58ID:0q9gSB9x0 競プロ有段者(強い人)に質問
Atcoderで一段階上に行くためには解説を何も見ずとも解けるレベルの一段階上を同じように解けるレベルになるまでその問題を解説だけ見て実装は全て自分で、っていう感じでひたすら練習していくっていうやり方は有効?
自分の場合はD問題は9割ガタ解けて、Eがまだ実戦では歯が立たないレベル
Atcoderで一段階上に行くためには解説を何も見ずとも解けるレベルの一段階上を同じように解けるレベルになるまでその問題を解説だけ見て実装は全て自分で、っていう感じでひたすら練習していくっていうやり方は有効?
自分の場合はD問題は9割ガタ解けて、Eがまだ実戦では歯が立たないレベル
325デフォルトの名無しさん (ワッチョイ 45a4-Ya2I)
2023/06/04(日) 17:53:24.73ID:AGQzq0Q+0 うん
326デフォルトの名無しさん (ワッチョイ 02bd-2a7c)
2023/06/04(日) 20:29:27.17ID:z/tZxQvT0 E問題思ったより簡単だな
食わず嫌いしてた
食わず嫌いしてた
327デフォルトの名無しさん (ワッチョイ 469a-dFNS)
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; が左右のバランス(単に'('と')'の数が同じというだけでなく)の条件に
効いているようですが、ピンとこないのです... 確かに正しい括弧の列のとき、それが成り
立つのはわかりますが、逆にそれがバランス条件を満たすのに十分であるというのが
どなたかわかりやすい説明はないでしょうか
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; が左右のバランス(単に'('と')'の数が同じというだけでなく)の条件に
効いているようですが、ピンとこないのです... 確かに正しい括弧の列のとき、それが成り
立つのはわかりますが、逆にそれがバランス条件を満たすのに十分であるというのが
どなたかわかりやすい説明はないでしょうか
328デフォルトの名無しさん (アウアウウー Sac5-l0ym)
2023/06/06(火) 12:29:54.00ID:GQVo4dJ/a しょーもない処理を複雑に描いてるだけのクソプログラムやな
この関数は最初の呼び出しでlとrが同じ数字なるよう入れるのが前提で
r<lの条件は例外処理みたいなもんやろ
この関数は最初の呼び出しでlとrが同じ数字なるよう入れるのが前提で
r<lの条件は例外処理みたいなもんやろ
329デフォルトの名無しさん (ワッチョイ 45a4-4Uvu)
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` より少なくなる場合、すなわち、閉じ括弧が開き括弧を超える可能性がある場合に、そのパスをすぐに終了させることで実現されています。
ここで `l` と `r` はそれぞれまだ追加できる '(' の数と ')' の数を表しています。なので、このチェック `if (r < l) return;` は、')' の数が '(' の数より少なくなる場合、すなわち、開き括弧より閉じ括弧が少なくなる場合を防いでいます。
正しい括弧の列を生成するためには、2つの重要なルールを守らなければなりません:
1. 左括弧と右括弧の数が等しいこと
2. 任意の時点で、右括弧の数が左括弧の数を超えないこと
1つ目のルールは、左括弧と右括弧を同数だけ生成すれば満たされます。しかし、2つ目のルールはもう少し注意が必要です。それは、どの時点でも、閉じ括弧の数が開き括弧の数を超えてはならないからです。これを超えてしまうと、括弧の列が無効になってしまいます。
例えば、"())(" のような列は、開き括弧と閉じ括弧の数は同じでも、2番目の閉じ括弧が開き括弧を超えているため、無効な括弧の列となります。
だからこそ、`if (r < l) return;` のチェックが必要なのです。これにより、閉じ括弧の数が開き括弧を超えるような状況を防いでいます。これは、まだ追加できる閉じ括弧の数 `r` が、開き括弧 `l` より少なくなる場合、すなわち、閉じ括弧が開き括弧を超える可能性がある場合に、そのパスをすぐに終了させることで実現されています。
330デフォルトの名無しさん (JP 0H56-RtFh)
2023/06/06(火) 12:49:04.77ID:FRsr3KcUH (を+1)を-1と対応させて累積和が常に非負っていうのがバランスしていることの必要十分条件であることを認めれば if(r < l)return; がそれの言い換えなことは明らか
証明したければ累積和が0になるところで文字列を分割して、それぞれの文字列の一番外側の括弧を取り外すとネストが一つ浅いものに帰着できるからネストの深さで帰納法を回すみたいなことを気をつけてやるといいんじゃないか
証明したければ累積和が0になるところで文字列を分割して、それぞれの文字列の一番外側の括弧を取り外すとネストが一つ浅いものに帰着できるからネストの深さで帰納法を回すみたいなことを気をつけてやるといいんじゃないか
331デフォルトの名無しさん (ワッチョイ 469a-dFNS)
2023/06/07(水) 08:00:55.26ID:nPOLblkw0332デフォルトの名無しさん (ワッチョイ 469a-dFNS)
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の(())を二つ並べた、と考えるべき?
要は、正しい括弧の追加操作のみをして再帰的に括弧列を生成することは可能なのか?
あるいは単にすべてのパターンを生成して正当でないのを刈り取ることしかできないのか?
などということが気になったのですが
(と)をそれぞれ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の(())を二つ並べた、と考えるべき?
要は、正しい括弧の追加操作のみをして再帰的に括弧列を生成することは可能なのか?
あるいは単にすべてのパターンを生成して正当でないのを刈り取ることしかできないのか?
などということが気になったのですが
333デフォルトの名無しさん (ワッチョイ 012d-UlWg)
2023/06/07(水) 09:49:06.82ID:Bta2HQ7X0 >>332
結論から言うと、それは難しい問題であり、一般的なアプローチでは、「全てのパターンを生成し、
それがバランスの取れた括弧列であるかどうかを判定する」という方法が用いられます。
しかし、バランスの取れた括弧列を生成するための一種の再帰的なパターンは存在します。
それは、大きさnの全てのバランスの取れた括弧列を生成した後で、その各々に対して以下の操作を行うことです:
1. '(' + P + ')' を追加する
2. P + '()' を追加する
3. '()' + P を追加する
ここで P は大きさnの任意のバランスの取れた括弧列です。
この操作を行うと、全ての大きさn+1のバランスの取れた括弧列を生成することができます。
ただし、これは重複する列を生成する可能性があるため、生成された列は一意であることを保証するために
何らかの方法で重複を除去する必要があります。
したがって、厳密には「全てのパターンを生成し、それがバランスの取れた括弧列であるかどうかを判定する」
という方法とは異なりますが、これは一種の再帰的なアプローチと言えます。
しかし、これらのアプローチは計算時間やメモリ使用量の観点から見ると、>>327に示されたDFSを用いたアプローチに比べて
効率的ではないかもしれません。また、DFSを用いたアプローチは明確に「正しい括弧の追加操作のみ」を行っていると言えます。
なぜなら、すべての括弧列を生成する過程で、同時にその列が正しい括弧列であるかどうかをチェックすることが可能だからです。
結論から言うと、それは難しい問題であり、一般的なアプローチでは、「全てのパターンを生成し、
それがバランスの取れた括弧列であるかどうかを判定する」という方法が用いられます。
しかし、バランスの取れた括弧列を生成するための一種の再帰的なパターンは存在します。
それは、大きさnの全てのバランスの取れた括弧列を生成した後で、その各々に対して以下の操作を行うことです:
1. '(' + P + ')' を追加する
2. P + '()' を追加する
3. '()' + P を追加する
ここで P は大きさnの任意のバランスの取れた括弧列です。
この操作を行うと、全ての大きさn+1のバランスの取れた括弧列を生成することができます。
ただし、これは重複する列を生成する可能性があるため、生成された列は一意であることを保証するために
何らかの方法で重複を除去する必要があります。
したがって、厳密には「全てのパターンを生成し、それがバランスの取れた括弧列であるかどうかを判定する」
という方法とは異なりますが、これは一種の再帰的なアプローチと言えます。
しかし、これらのアプローチは計算時間やメモリ使用量の観点から見ると、>>327に示されたDFSを用いたアプローチに比べて
効率的ではないかもしれません。また、DFSを用いたアプローチは明確に「正しい括弧の追加操作のみ」を行っていると言えます。
なぜなら、すべての括弧列を生成する過程で、同時にその列が正しい括弧列であるかどうかをチェックすることが可能だからです。
334デフォルトの名無しさん (ワッチョイ 7d5f-RtFh)
2023/06/07(水) 10:10:41.04ID:WomvMCD50 >>332
>>333 は嘘
バランスした括弧列の定義は全体を括弧で囲む操作と括弧列2つの結合で生成される集合だから、その()を追加するっていうのを右か左に追加するって意味だとするとレベル2以上の文字列同士の結合が考慮されていないの
で、(())(())が作れない
中に()を挿入することを許すとすると、今度は全体を括弧で囲む操作はいらなくなる
というのも、どんな空でないバランスした括弧列にも()の部分があるから、それを取り除くことを繰り返すことで空にできるから、逆に空文字列に()を追加していくことで任意のバランスした括弧列が作れるし、バランスした括弧列の任意の箇所に()を挿入した文字列もまたバランスした括弧列になっている
>>333 は嘘
バランスした括弧列の定義は全体を括弧で囲む操作と括弧列2つの結合で生成される集合だから、その()を追加するっていうのを右か左に追加するって意味だとするとレベル2以上の文字列同士の結合が考慮されていないの
で、(())(())が作れない
中に()を挿入することを許すとすると、今度は全体を括弧で囲む操作はいらなくなる
というのも、どんな空でないバランスした括弧列にも()の部分があるから、それを取り除くことを繰り返すことで空にできるから、逆に空文字列に()を追加していくことで任意のバランスした括弧列が作れるし、バランスした括弧列の任意の箇所に()を挿入した文字列もまたバランスした括弧列になっている
335デフォルトの名無しさん (ワッチョイ a905-4Uvu)
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; の制約は、このコードの括弧の追加の順序に基づいて、左括弧と右括弧が正しくバランスを保つことを保証しています。
ご指摘の通り、このコードでは再帰的に右側に括弧を追加しています。具体的には、まず左括弧を追加し、その後で右括弧を追加しています。
この if (r < l) return; の制約は、この追加の順序に基づいています。開始時点では、開き括弧と閉じ括弧の数が等しく(つまり、l == r)、左括弧を先に追加します。そのため、追加の過程では一時的に l が r より小さくなります。しかし、その後すぐに右括弧を追加することでバランスを保ちます。
if (r < l) return; のチェックにより、右括弧が先に追加される(つまり、r < l となる)状況を防いでいます。これは、左括弧を追加した後でのみ右括弧を追加するという、このコードの括弧の追加の順序を反映しています。そのため、この制約が満たされない場合(つまり、右括弧が先に追加される場合)、そのパスは無効となり、すぐに終了します。
したがって、この if (r < l) return; の制約は、このコードの括弧の追加の順序に基づいて、左括弧と右括弧が正しくバランスを保つことを保証しています。
336デフォルトの名無しさん (オッペケ Sr91-BHVC)
2023/06/07(水) 14:48:36.26ID:w+aRYGw/r 非負のランダムウォーク書いて+1-1を()に対応させるだけだろ
337デフォルトの名無しさん (ワッチョイ 797f-Ydfh)
2023/06/10(土) 17:29:19.24ID:0oQUevmP0338デフォルトの名無しさん (ワッチョイ 89b0-SVCw)
2023/06/10(土) 22:46:50.51ID:sqwX2ns70 6完…
途中まではいいペースもFで帰りがけにも頂点集合受け取るの忘れて時間ギリギリに
途中まではいいペースもFで帰りがけにも頂点集合受け取るの忘れて時間ギリギリに
339デフォルトの名無しさん (ワッチョイ 7b9a-D1r1)
2023/06/11(日) 20:43:12.18ID:Fc1cWZtx0340デフォルトの名無しさん (ワッチョイ 7b9a-D1r1)
2023/06/11(日) 20:59:44.70ID:Fc1cWZtx0 しかし、解く時間が限られている場合にグダグダ悩んでいる暇はないよなあ
そういう場合パターンを覚えておくしかない?
そういう場合パターンを覚えておくしかない?
341デフォルトの名無しさん (ワッチョイ 61b0-8SEE)
2023/06/17(土) 22:47:22.26ID:/YYtpwSS0 ジャッジが終わらないよ
342デフォルトの名無しさん (テテンテンテン MM96-/52B)
2023/06/17(土) 23:10:07.92ID:dXHH06bsM unratedおおすぎ
343デフォルトの名無しさん (ワッチョイ 92ad-zFGp)
2023/06/17(土) 23:16:56.58ID:re9nMjXH0 アーロンジャッジたすけて
344デフォルトの名無しさん (ワッチョイ 092d-dYQK)
2023/06/18(日) 04:25:23.41ID:KT9X3u120 atcoderがddos受けてるとして、潰して得をするのは誰だ?
345デフォルトの名無しさん (アウアウウー Sacd-c3fv)
2023/06/18(日) 11:57:26.20ID:zhu3s9uha ロシア中国
346デフォルトの名無しさん (ワッチョイ a325-p5N0)
2023/06/24(土) 17:44:41.70ID:SdmUsAHw0 ガイジのみんなこっちおいで😆
怖がる必要ないよ✌
怖がる必要ないよ✌
347デフォルトの名無しさん (オッペケ Sr81-g5c7)
2023/06/24(土) 18:57:52.69ID:JQRvym1Fr うおおおおおおおお🤓
348デフォルトの名無しさん (ワッチョイ a325-p5N0)
2023/06/24(土) 19:30:32.53ID:SdmUsAHw0 他のガイジもこっちおいで!
349デフォルトの名無しさん (ワッチョイ a3bd-/B6M)
2023/06/24(土) 22:23:51.32ID:+O4dPU7T0 攻撃されてね?
350デフォルトの名無しさん (ワッチョイ a325-cli0)
2023/06/24(土) 22:28:05.07ID:SdmUsAHw0 落ちてる!クソすぎ!!!
351デフォルトの名無しさん (ワッチョイ 75b0-GDjS)
2023/06/24(土) 22:42:50.37ID:ZtOuHWP80 せっかくG解けたのに1分遅れになってしまった…
352デフォルトの名無しさん (アウアウウー Sa69-Auuh)
2023/06/24(土) 22:55:29.87ID:gDpwuzMxa アンレでしょ、ね?ね?
353デフォルトの名無しさん (ワッチョイ 75b0-GDjS)
2023/06/24(土) 22:56:49.69ID:ZtOuHWP80 ところでC正解者少なすぎ
354デフォルトの名無しさん (ワッチョイ a325-cli0)
2023/06/24(土) 23:12:14.22ID:SdmUsAHw0 10:10くらい?から今(10:50)までずっとatcoder開けませんが、同じ人いるかな
なんてツイートしてるひともいるね
なんてツイートしてるひともいるね
355デフォルトの名無しさん (ワッチョイ 9dda-0drY)
2023/06/25(日) 01:40:55.82ID:9o2+M89H0 このコードが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;
}
}
ちなみに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;
}
}
356デフォルトの名無しさん (ワッチョイ 9dda-0drY)
2023/06/25(日) 01:41:11.75ID:9o2+M89H0 どこかおかしい部分あるかな
357デフォルトの名無しさん (ワッチョイ 4bd6-1Bpn)
2023/06/25(日) 02:14:14.53ID:0IEJDuKo0 スタックサイズ
358デフォルトの名無しさん (アウアウウー Sa69-Auuh)
2023/06/25(日) 02:15:11.19ID:3TXiYfiya >>355
マルチは市ね
マルチは市ね
359デフォルトの名無しさん (アウアウウー Sa69-yAbC)
2023/06/29(木) 15:31:24.42ID:wEpX0/Cla Twitterのpaizaの広告とかに必ず現れる
「入力値をチェックしていない」
という返信をつける人は、具体的に何をチェックして、どう処理するの?
「入力値をチェックしていない」
という返信をつける人は、具体的に何をチェックして、どう処理するの?
360デフォルトの名無しさん (アウアウウー Sa69-yAbC)
2023/06/29(木) 15:35:22.33ID:wEpX0/Cla たとえば、
・Nは偶数
・AとBの合計はN未満
といった制約は、実際のプログラムならチェックして例外をスローする
しかし、
「nが整数値じゃない場合をチェックしていない」
みたいなよくわからない難癖をつける人もいる
整数値じゃなければint型にパースするときに、ほとんどの言語で例外になるからいいのでは
・Nは偶数
・AとBの合計はN未満
といった制約は、実際のプログラムならチェックして例外をスローする
しかし、
「nが整数値じゃない場合をチェックしていない」
みたいなよくわからない難癖をつける人もいる
整数値じゃなければint型にパースするときに、ほとんどの言語で例外になるからいいのでは
361デフォルトの名無しさん (スププ Sd43-2HPs)
2023/06/29(木) 15:50:34.59ID:WjHgY0Cmd362デフォルトの名無しさん (ワッチョイ 7fb0-+Ydp)
2023/07/01(土) 22:45:27.97ID:rC0kSH/20 今回は簡単めでしたね
G解けなかったけど
G解けなかったけど
363デフォルトの名無しさん (ワッチョイ e2da-l2Kc)
2023/07/01(土) 23:33:06.19ID:x6PMIr/p0 コンテスト初参加
C問題があまりにも酷いと思った
20分くらいかけて、priorityqueue<pair<double、int>> に値をプッシュする時にpairのsecondの方にマイナスを付ければ良いことに気がついたもののWA
何を試してもWAで、doubleの精度に問題があるんじゃないかと思って、ネット検索をしたら、long doubleという型があることを知り、試してみたら無事AC
C問題で時間とメンタルを削られてD問題は諦めた
初参加とはいえ茶パフォはあまりに脳障害すぎるだろ
C問題があまりにも酷いと思った
20分くらいかけて、priorityqueue<pair<double、int>> に値をプッシュする時にpairのsecondの方にマイナスを付ければ良いことに気がついたもののWA
何を試してもWAで、doubleの精度に問題があるんじゃないかと思って、ネット検索をしたら、long doubleという型があることを知り、試してみたら無事AC
C問題で時間とメンタルを削られてD問題は諦めた
初参加とはいえ茶パフォはあまりに脳障害すぎるだろ
364デフォルトの名無しさん (ワッチョイ e2da-l2Kc)
2023/07/01(土) 23:39:31.52ID:x6PMIr/p0 今回のC問題でpriorityqueueを使ったんだけど、priorityqueue<pair<double、int>> に値をプッシュする時、pairのsecondの方に-をつけて取り出す順番を工夫するのって典型?
ちょっとした閃きだけど思いついた時は俺ちょっと頭いいんじゃねって思っちゃった
その後ものの見事に脳障害っぷりを晒してしまったけど
ちょっとした閃きだけど思いついた時は俺ちょっと頭いいんじゃねって思っちゃった
その後ものの見事に脳障害っぷりを晒してしまったけど
365デフォルトの名無しさん (ワッチョイ a225-+ypZ)
2023/07/01(土) 23:43:47.83ID:L7MIkgdg0 その発想は天才だよ、才能あるね
366デフォルトの名無しさん (ササクッテロラ Sp5f-RHsg)
2023/07/01(土) 23:50:30.60ID:wjWc9sXDp マジレスすると符号付けて逆順にすることで実装をシンプルにするのはかなりの典型です
367デフォルトの名無しさん (アウアウウー Sabb-zrhl)
2023/07/01(土) 23:53:37.30ID:6JFt9TARa むしろそのマイナスにするのが主題と言ってもいいくらい
368デフォルトの名無しさん (アウアウウー Sabb-DX8j)
2023/07/01(土) 23:57:08.30ID:CM44ThHXa C++ってFraction無いんだっけ?
まあ無くても自分で通分すれば済む話だが
まあ無くても自分で通分すれば済む話だが
369デフォルトの名無しさん (ワッチョイ e2da-l2Kc)
2023/07/02(日) 00:35:29.46ID:sYDH7cmq0 なるほど、ただの典型だったか…
ただ、その典型を自分で思いついたのはちょっと嬉しい
ただ、その典型を自分で思いついたのはちょっと嬉しい
370デフォルトの名無しさん (ワッチョイ e2da-l2Kc)
2023/07/02(日) 00:39:10.97ID:sYDH7cmq0 先程 D問題をACしてきた
結構簡単だし、C問題を普通に解けていたら多分四完出来た
今回のC問題みたいに本質的じゃない部分(long doubleという型を知っているかどうかみたいな)を問うのは本当にやめた方が良いと思う 問題の質がシンプルに低い
結構簡単だし、C問題を普通に解けていたら多分四完出来た
今回のC問題みたいに本質的じゃない部分(long doubleという型を知っているかどうかみたいな)を問うのは本当にやめた方が良いと思う 問題の質がシンプルに低い
レスを投稿する
ニュース
- 「日本はパンダがいなくなる状況に直面するだろう」 中国メディア、専門家の見方伝える [♪♪♪★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★11 [樽悶★]
- 止まらぬ「日本売り」 高市財政への懸念で進む金利上昇と円安 ★2 [蚤の市★]
- 【無言】中国怒らせた高市首相→1週間だんまり、国民に実害も説明なし 中国問題を避けてスルー… ★5 [BFU★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★12 [樽悶★]
- 外国人の犯罪率は日本人の1.72倍 警察庁が短期滞在者除いた数字を参院内閣委で答弁★2 [七波羅探題★]
- 【高市悲報】大暴落 [115996789]
- 【速報】東京から人が消える [329329848]
- 🏡
- 銀行立てこもり犯「そこの男、この女とセックスしろ。マスコミはそれを生中継しろ」
- 【悲報】国会議員の給料アップ法改正、自民と維新で喧嘩し始めるWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
- 友達がお前らの事をさ…
