競技プログラミング総合スレ 66 (478レス)
競技プログラミング総合スレ 66 http://mevius.5ch.net/test/read.cgi/tech/1679465982/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
151: デフォルトの名無しさん (テテンテンテン MM66-rOwk) [sage] 2023/04/08(土) 15:35:24.79 ID:YDsW15QlM みんな使わないにしても、使ってるやつにレートを吸われることでモチベの減退はあるだろうな http://mevius.5ch.net/test/read.cgi/tech/1679465982/151
152: デフォルトの名無しさん (ササクッテロル Spd1-42TY) [sage] 2023/04/08(土) 15:36:44.41 ID:obJbbgz0p >>150 まあそういう人はスポーツすればいいよ アルゴリズム解くのが好きとか純粋に知識欲の高い人が残るんだろうね http://mevius.5ch.net/test/read.cgi/tech/1679465982/152
153: デフォルトの名無しさん (テテンテンテン MM66-rOwk) [sage] 2023/04/08(土) 15:43:15.50 ID:YDsW15QlM >>152 その辺の人でも楽しめる競技になる道は閉ざされそうで悲しいな 元々運営にそういうモチベなさそうだったが(金のために仕方なくやってる感満載だった) http://mevius.5ch.net/test/read.cgi/tech/1679465982/153
154: デフォルトの名無しさん (ワッチョイ c6ca-HjNm) [] 2023/04/08(土) 19:32:52.09 ID:jzMk6Pp80 ノーレートで、食事したり飲みながら今までほぼ開かなかったF,GとかをchatGTPに聞いたり調べたりしながらやるのも楽しいぞい。解きたくない問題は解かなくても良いし。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/154
155: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/08(土) 20:03:48.77 ID:RgGs2QbX0 ワーシャル・フロイドアルゴリズムについて質問です。 最終的に任意の2点間の最短距離を入れるための2次元配列は、 代入演算子の左右で共通のものが使われています。 それでも、問題がないのはなぜですか? http://mevius.5ch.net/test/read.cgi/tech/1679465982/155
156: デフォルトの名無しさん (ワッチョイ 85a4-5f+B) [sage] 2023/04/08(土) 20:09:47.90 ID:8rEHJkBb0 ワーシャル・フロイドアルゴリズムは、全ての頂点間の最短距離を求めるためのアルゴリズムです。このアルゴリズムは、動的計画法の一種であり、一度計算された結果を再利用することで、計算量を減らすことができます。 具体的には、アルゴリズムの初期段階で、すべての頂点の間の距離を表す2次元配列を作成します。この配列は、アルゴリズムの途中で更新されますが、代入演算子の左右で共通のものが使われるため、問題はありません。 なぜなら、アルゴリズムの途中で更新される値は、それ以前の値に依存しているため、代入演算子の左右で共通の2次元配列を使用していることによって、更新された値が正しく計算され、以前に計算された値が失われることはありません。 つまり、更新された値は、以前に計算された値に基づいて正確に計算され、以前に計算された値が配列内に保持され続けるため、代入演算子の左右で共通の2次元配列を使用することは、アルゴリズムの正しい動作に影響を与えないということです。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/156
157: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/08(土) 21:36:51.70 ID:RgGs2QbX0 >>155 大丈夫な理由が分かりました。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/157
158: デフォルトの名無しさん (ワッチョイ 412d-dXWb) [sage] 2023/04/08(土) 22:06:19.33 ID:8FTHKj1c0 chatGPT便利だろ こういう風に答えてくれる http://mevius.5ch.net/test/read.cgi/tech/1679465982/158
159: デフォルトの名無しさん (ワッチョイ d907-NO7/) [sage] 2023/04/08(土) 22:12:19.75 ID:dzO9pS9o0 ものすごくもっともらしい嘘つくから知らないことを聞くのはおすすめしないぞ http://mevius.5ch.net/test/read.cgi/tech/1679465982/159
160: デフォルトの名無しさん (ワッチョイ d907-NO7/) [sage] 2023/04/08(土) 22:16:56.23 ID:dzO9pS9o0 ワルシャワ・フローラル法を知ってる? はい、ワルシャワ・フローラル法は、グラフの最大マッチングを求めるアルゴリズムの一種です。このアルゴリズムは、ハンガリー人数学者であるエドモンド・ワルシャワと、ポーランド人数学者であるタデウシュ・フローラルによって開発されました。 ワルシャワ・フローラル法は、ハンガリー法と同様に、最大マッチング問題を解決するために使用されます。このアルゴリズムは、二部グラフに適用されます。アルゴリズムの基本的な考え方は、各未マッチング頂点について、その頂点を始点とする増加路を探し、その増加路に属する辺のマッチングを反転させることです。 ワルシャワ・フローラル法は、ハンガリー法よりも効率的であることが知られていますが、完全グラフでは最悪の場合の計算量がO(n^4)であるため、実用的ではありません。しかし、一般のグラフに対しては、最大マッチングを高速に計算することができるため、実際には広く使用されています。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/160
161: デフォルトの名無しさん (ワッチョイ 85a4-Az6A) [sage] 2023/04/09(日) 02:49:15.65 ID:3zzmmMIO0 正確なことを答えさせるために、プロンプトエンジニアリングをがんばりましょうね http://mevius.5ch.net/test/read.cgi/tech/1679465982/161
162: デフォルトの名無しさん (ワッチョイ c69a-RdFw) [sage] 2023/04/09(日) 06:48:28.69 ID:/c2XAn9L0 素朴な整数演算のコードを書いたため、特定のテストケースのときにコードの途中で 整数がオーバーフローするような場合、一般的なコードの書き方の処方箋みたいなものは ありますかね 例えば「整数の配列から適切な要素を取り出して期待される和を作れ、そういう要素が ない場合はエラー値を返せ」みたいので、配列要素はどれもオーバーフローに近い整数、 和は配列内の最小要素よりちょっとだけ大きい値(なのでエラー値の場合)、とか.... http://mevius.5ch.net/test/read.cgi/tech/1679465982/162
163: デフォルトの名無しさん (ワッチョイ d907-NO7/) [sage] 2023/04/09(日) 10:26:45.20 ID:/OFxiXOD0 競プロならlong longを使うだけ 実務ならオーバーフローした時に例外が発生するようにしてそれをキャッチ http://mevius.5ch.net/test/read.cgi/tech/1679465982/163
164: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/09(日) 13:54:07.28 ID:l3qXUMY00 『アルゴリズム実技検定公式テキストエントリー〜中級編』 最小全域木を求める、「プリムのアルゴリズム」について説明があります。 こうすれば、求まるという説明はあるのですが、なぜ求まるのかの説明がありません。 みなさんは、こうすれば求まるという情報だけで十分で、それで満足しますか? それとも、ちゃんと証明まで自分で考えるか、誰かが書いた証明を読みますか? http://mevius.5ch.net/test/read.cgi/tech/1679465982/164
165: デフォルトの名無しさん (ワッチョイ ae2b-RdFw) [sage] 2023/04/09(日) 14:45:06.26 ID:dl/B18nt0 >>163 なるほど。確かに例えば入力がintならlong longを使えばとりあえず大丈夫そう ちなみにC++ですが、例えばintのオーバーフローを例外で処理するのはどうしたら.... http://mevius.5ch.net/test/read.cgi/tech/1679465982/165
166: デフォルトの名無しさん (ワッチョイ 85a4-5f+B) [sage] 2023/04/09(日) 14:49:24.80 ID:3zzmmMIO0 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. http://mevius.5ch.net/test/read.cgi/tech/1679465982/166
167: デフォルトの名無しさん (ワッチョイ bd5f-EL/2) [sage] 2023/04/09(日) 16:13:00.47 ID:sd0zf58N0 gccの__builtin_add_overflowとか__builtin_mul_overflowを使う http://mevius.5ch.net/test/read.cgi/tech/1679465982/167
168: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/09(日) 18:08:06.26 ID:l3qXUMY00 github.com/kenkoooo/pastbook-source-code/blob/master/chukyu/python/chapter06/section11/6-11-1.py http://mevius.5ch.net/test/read.cgi/tech/1679465982/168
169: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/09(日) 18:11:31.29 ID:l3qXUMY00 ↑のファイルはプリムのアルゴリズムで最小全域木問題を解くコードです。 ファイル中の以下の箇所がなぜ必要なのかが分かりません。 一見すると、キューの中には、marked の値がFalseのノードしか入っていないように思うのですが、 実際には、Falseのノードも入ることがあるようです。(以下の箇所をコメントアウトすると パスしません。) # 辺につながる頂点 i もすでにマークされていた場合、 # 操作をスキップする if marked[i]: ■■■■continue http://mevius.5ch.net/test/read.cgi/tech/1679465982/169
170: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/09(日) 18:16:05.03 ID:l3qXUMY00 一部、間違えましたので訂正します。↓ ↑のファイルはプリムのアルゴリズムで最小全域木問題を解くコードです。 ファイル中の以下の箇所がなぜ必要なのかが分かりません。 一見すると、キューの中には、marked の値がFalseのノードしか入っていないように思うのですが、 実際には、Trueのノードも入ることがあるようです。(以下の箇所をコメントアウトすると パスしません。) # 辺につながる頂点 i もすでにマークされていた場合、 # 操作をスキップする if marked[i]: ■■■■continue http://mevius.5ch.net/test/read.cgi/tech/1679465982/170
171: デフォルトの名無しさん (ワッチョイ 412d-dXWb) [sage] 2023/04/09(日) 18:19:09.47 ID:fcL4nlHr0 この部分は、既にマークされた頂点に対応する辺をスキップするために必要です。 確かに、キューには基本的に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 この部分によって、既にマークされた頂点に対応する辺をスキップし、 正しい最小全域木を構築することができます。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/171
172: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/09(日) 18:19:33.94 ID:l3qXUMY00 ヒープにプッシュする前に、そのノードがマークされていないことをチェックしています。 ですので、ヒープ内には、マークされていないノードしか入れないと思うのですが。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/172
173: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/09(日) 18:25:07.45 ID:l3qXUMY00 >>171 あまり参考にならないだろうと思って読んでいたらなぜか理由が分かりました。 マークされていない状態で、同じノードが複数個ヒープに入ることがあるわけですね。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/173
174: デフォルトの名無しさん (ワッチョイ 412d-dXWb) [sage] 2023/04/09(日) 18:28:01.90 ID:fcL4nlHr0 >>172 確かに、ヒープにプッシュする前にそのノードがマークされていないことをチェックしています。 ただし、ヒープにプッシュされた後で、そのノードが他の辺を経由してマークされる可能性があります。 そのため、ヒープから辺を取り出す前にもう一度マークされているかどうかをチェックする必要があります。 先程のグラフで考えてみましょう。キューがこの様になったところから解説します。 (1, 3), (1, 1), (1, 3) ここで、最初に(1, 3)をキューから取り出し、頂点3をマークします。この時点で、キューには以下のような状態が残っています。 (1, 1), (1, 3) 次にキューから取り出す辺は(1, 1)です。この辺は、頂点1と頂点2の間にありますが、頂点1はすでにマークされています。 しかし、この辺をヒープにプッシュした時点では、頂点1はまだマークされていませんでした。 それが、例のコード部分が必要とされる理由です。 あの部分によって、既にマークされた頂点に対応する辺をスキップし、正しい最小全域木を構築することができます。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/174
175: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/09(日) 18:28:12.80 ID:l3qXUMY00 >>171 この場合でいうとノード3が2回ヒープに入るわけですね。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/175
176: デフォルトの名無しさん (ワッチョイ 412d-dXWb) [sage] 2023/04/09(日) 18:31:35.09 ID:fcL4nlHr0 >>175 はい、その通りです。 最初にノード1からノード3への辺がヒープに追加され、次にノード2からノード3への辺がヒープに追加されます。 (1, 3) <-- 1から3への辺 (1, 1) (1, 3) <-- 2から3への辺 このように、同じノードが複数回ヒープに入ることがあります。プリムのアルゴリズムでは、 すでにマークされた頂点に対応する辺を無視する必要があります。 そのため、ヒープから辺を取り出す前にマークされているかどうかをチェックする必要があるのです。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/176
177: デフォルトの名無しさん (アウアウウー Sa05-IjNm) [sage] 2023/04/09(日) 19:43:48.36 ID:O0uaasVha おんちぽまんぽげろろろり? http://mevius.5ch.net/test/read.cgi/tech/1679465982/177
178: デフォルトの名無しさん (ブーイモ MMf6-tIu7) [sage] 2023/04/09(日) 22:42:46.25 ID:fJZ93dkaM 序盤からムズすぎ http://mevius.5ch.net/test/read.cgi/tech/1679465982/178
179: デフォルトの名無しさん (ワッチョイ d9b0-OQ9P) [sage] 2023/04/09(日) 22:44:46.28 ID:0uKKY8S80 Eむずい setとpriority queueいじくってたら通った http://mevius.5ch.net/test/read.cgi/tech/1679465982/179
180: デフォルトの名無しさん (ササクッテロラ Spd1-x1gv) [sage] 2023/04/09(日) 22:47:55.78 ID:DKklNxRop E二分探索でやろうとしたらハマって普通にsetで順番にみるだけだった F解けたのに今回も解いてる人の数がF<Gなせいであまり順位伸びてないの配点何とかして欲しいわ http://mevius.5ch.net/test/read.cgi/tech/1679465982/180
181: デフォルトの名無しさん (スッップ Sd22-QZiB) [] 2023/04/09(日) 23:58:26.29 ID:BvehXBT4d 整数式の倍数判定のプログラム作りたいんだけどできる? nは自然数 例1 入力:n(n+1)(n+2) 出力:6 (入力した式の倍数判定。6の倍数) 2の倍数でも3の倍数でもあるが、最も大きい数を出力 例2 入力:n^9-n^3 出力:504 http://mevius.5ch.net/test/read.cgi/tech/1679465982/181
182: デフォルトの名無しさん (ワッチョイ eebb-Sq7r) [sage] 2023/04/10(月) 02:32:34.26 ID:Gn/yyThB0 >>181 nに素数をいくつか突っ込んだ値(0以外)で最大公約数とればいいんでない? という気はするけど万年茶色脳には正しいか証明するなんてムリ http://mevius.5ch.net/test/read.cgi/tech/1679465982/182
183: デフォルトの名無しさん (ワッチョイ bd5f-EL/2) [sage] 2023/04/10(月) 02:49:14.21 ID:zrtbja+Y0 素数pの倍数かどうかはmod pが整域だから多項式は根を高々次数d個しかもたないのでp≤dだけ調べればいいよね p^kはわからん http://mevius.5ch.net/test/read.cgi/tech/1679465982/183
184: デフォルトの名無しさん (ワッチョイ bd5f-EL/2) [sage] 2023/04/10(月) 03:22:55.78 ID:zrtbja+Y0 fが零因子⇔あるa≠0が存在してaf=0らしいから、最初にfを係数のgcdで割っとけば零因子じゃなくなって、p^k≤dだけ調べればいいと思う http://mevius.5ch.net/test/read.cgi/tech/1679465982/184
185: デフォルトの名無しさん (ワッチョイ bd5f-EL/2) [sage] 2023/04/10(月) 03:46:52.88 ID:zrtbja+Y0 >>184 これ全部嘘です 寝るか http://mevius.5ch.net/test/read.cgi/tech/1679465982/185
186: デフォルトの名無しさん (ブーイモ MMf6-tIu7) [sage] 2023/04/10(月) 13:12:10.43 ID:Sbe/ma/bM mod p で何代入しても0になる多項式は例えば x(x-1)...(x-p+1) でp次を達成できて最適 mod p^n だとこれをn乗すると構成できるので(最適かは知らんが)pn次以下と評価できる だからpnがd以下の範囲を探索すれば良いが計算量は悪いな http://mevius.5ch.net/test/read.cgi/tech/1679465982/186
187: デフォルトの名無しさん (ブーイモ MMf6-tIu7) [sage] 2023/04/10(月) 13:16:20.11 ID:Sbe/ma/bM >>186 馬鹿すぎ、評価すべき方向が逆 http://mevius.5ch.net/test/read.cgi/tech/1679465982/187
188: デフォルトの名無しさん (ワッチョイ d9b0-OQ9P) [sage] 2023/04/10(月) 15:49:54.60 ID:1oGpX4FF0 Fはやってみたら簡単に解けた Gはgrundy数求めるとき単純な勘違いしてた むー悔しい http://mevius.5ch.net/test/read.cgi/tech/1679465982/188
189: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/10(月) 16:05:58.27 ID:/Pv3NVQa0 DAGの最長パスを求める問題について質問があります。 『アルゴリズム実技検定公式テキストエントリー〜中級編』に 「トポロジカルソート」の考え方が重要と書いてあります。 ですが、DAGがトポロジカルソートできるということを使っている 箇所が見当たりません。 載っている解法は、indegreeが0である頂点からの最長パスをDPにより求めるというものです。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/189
190: デフォルトの名無しさん (ワッチョイ 412d-dXWb) [sage] 2023/04/10(月) 16:12:48.08 ID:GqegRxcS0 確かに、その解法ではトポロジカルソートを明示的に実行していないように見えますが、 実際にはトポロジカルソートの考え方が含まれています。DAGの最長パスを求める際、 トポロジカルソートの概念が重要なのは、頂点の順序付けによって依存関係を解決することができるからです。 その解法で、indegree(入次数)が0の頂点からDPを用いて最長パスを求めています。これは、各頂点について、 その頂点に入ってくる辺がなくなる(依存関係が解決される)順序で処理を行っていることを意味します。 この順序付けがトポロジカルソートの結果と同じです。 indegreeが0になる頂点から処理を行い、その後、処理された頂点から出る辺を削除することで、 indegreeが0になる頂点が次々と現れます。この手順は、トポロジカルソートを実行する手順と同じです。 したがって、トポロジカルソートを明示的に行わなくても、その考え方が解法に含まれているため、 問題を解決することができます。トポロジカルソートの概念は、DAGの最長パス問題を解く際の重要な考え方であることがわかります。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/190
191: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/10(月) 16:13:37.24 ID:/Pv3NVQa0 DAGであれば、最長パスが存在し、それはDPで求められる。 ただそれだけのことではないでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1679465982/191
192: デフォルトの名無しさん (ワッチョイ 412d-dXWb) [sage] 2023/04/10(月) 16:19:57.68 ID:GqegRxcS0 はい、おっしゃる通りです。DAGであれば、最長パスが存在し、動的計画法(DP)を用いて求めることができます。 繰り返しになりますが、トポロジカルソートの概念を用いることで、DAG内の頂点の順序付けが可能であり、 この順序付けに従ってDPを適用することで、最長パスを求めることができます。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/192
193: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/10(月) 16:20:04.87 ID:/Pv3NVQa0 DAGにoutdegreeおよびindegreeが0の点が両方とも存在することは、自明です。 もしそのような点がなければ、閉路が存在することになるからです。 トポロジカルソートなどという考え方を持ち出すまでもありません。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/193
194: デフォルトの名無しさん (ワッチョイ 412d-dXWb) [sage] 2023/04/10(月) 16:26:05.43 ID:GqegRxcS0 トポロジカルソートを明示的に実行しなくても、DAGの最長パス問題をDPで解くことは可能です。 ただし、その際に頂点の処理順序や依存関係の解決が重要となるため、トポロジカルソートの考え方が役立ちます。 トポロジカルソートを適用したDPでは、頂点の依存関係が効率的に解決されるため、計算量はO(V+E)です。 ここで、Vは頂点数、Eは辺数です。トポロジカルソートによって得られた頂点の順序に従ってDPを行うことで、 各頂点と辺に対して一度だけ計算が行われます。 一方、トポロジカルソートを適用しないDPでは、無駄な計算が発生する可能性があります。 例えば、メモ化再帰を用いたDPの場合、計算量は最悪O(2^V)になることがあります。 これは、全ての頂点に対して、それぞれを含むか含まないかの選択肢があるためです。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/194
195: デフォルトの名無しさん (ワッチョイ 417c-g1pj) [sage] 2023/04/10(月) 19:58:08.22 ID:6t40mDb70 >>181 多項式 f(n) について計算したい calc(f) で求めたい値を返す関数として f が定数ならそれを返す 定数でないなら g(n)=f(n+1)-f(n) とgを定めて calc(f) = gcd(f(1), calc(g)) を計算すればいい、再帰の深さはfの次数で抑えられる http://mevius.5ch.net/test/read.cgi/tech/1679465982/195
196: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/10(月) 20:30:41.82 ID:/Pv3NVQa0 『アルゴリズム実技検定公式テキストエントリー〜中級編』に載っている DAGの最長パスを求めるコードでは、トポロジカルソートを陽には使っていないです。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/196
197: デフォルトの名無しさん (アウアウウー Sa05-ynyP) [sage] 2023/04/10(月) 21:31:52.04 ID:Qr60KJ2xa その本持ってないからその本の解法教えて そしたら質問の回答するよ http://mevius.5ch.net/test/read.cgi/tech/1679465982/197
198: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/10(月) 21:57:16.12 ID:/Pv3NVQa0 >>197 ソースコードは以下です: github.com/kenkoooo/pastbook-source-code/blob/master/chukyu/python/chapter06/section04/6-4-8.py http://mevius.5ch.net/test/read.cgi/tech/1679465982/198
199: デフォルトの名無しさん (アウアウウー Sa05-ynyP) [sage] 2023/04/10(月) 22:22:43.61 ID:Qr60KJ2xa 確かに陽にトポロジカルソートはしてないね 値が確定する順序がトポロジカルソート順の逆順にはなってるけど 多分、以下のようなことを言いたいんじゃないかな ・各頂点の値を一つずつ順に確定していって、 ・一度確定した頂点を再度訪れる必要がない ・そのようなことが可能な確定順が存在する 確かに考え方によっては自明とも思えるかもしれないけど、逆にそれくらいのことしか言ってないということでは http://mevius.5ch.net/test/read.cgi/tech/1679465982/199
200: デフォルトの名無しさん (ワッチョイ 412d-dXWb) [sage] 2023/04/10(月) 22:32:19.30 ID:GqegRxcS0 この問題の場合はメモ化再帰でトポロジカルソートを使わなくても計算量はO(N+M)です。 頂点間に循環がないため、再帰の深さが頂点数Nを超えることがなく、 各頂点に対して rec 関数が最大1回しか呼び出されないからです。 トポロジカルソートを使ってそのコードを書き換えるとこうなります。 https://ideone.com/1NbHIf http://mevius.5ch.net/test/read.cgi/tech/1679465982/200
201: デフォルトの名無しさん (ワッチョイ 06d7-IjNm) [sage] 2023/04/11(火) 00:50:14.84 ID:AEAouguL0 んげりいいいいいいいwwwwww http://mevius.5ch.net/test/read.cgi/tech/1679465982/201
202: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/11(火) 10:56:16.23 ID:KVT1yw8N0 >>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の要素を後ろから見ていかなければ ならないように思ったのですが、そうではないのはなぜでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1679465982/202
203: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/11(火) 11:11:09.23 ID:KVT1yw8N0 for u in order: ■■■■print(u) とすると自分が思っている順序とちょうど逆順で表示されます。 order.append(u) を実行すると order の最大インデックスの要素の次に u が挿入されますよね。 そうだとすると、 order[0], order[1], … は queue から出てきた順に並べたものになりますよね。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/203
204: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/11(火) 11:15:16.38 ID:KVT1yw8N0 多分、単純な勘違いなんですが、どこを勘違いしているのかが分かりません。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/204
205: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/11(火) 11:16:45.70 ID:KVT1yw8N0 あ、分かりました。 与えられた有向グラフの辺の向きをすべて逆にしても、最長パスの長さは変わりませんね。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/205
206: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/11(火) 11:35:54.50 ID:KVT1yw8N0 以下のコードは全く無駄なことをやっていますが、自分の理解通りなのはこちらのコードです: ideone.com/gMUZDZ http://mevius.5ch.net/test/read.cgi/tech/1679465982/206
207: デフォルトの名無しさん (ブーイモ MM66-NK+R) [sage] 2023/04/11(火) 13:43:59.54 ID:FMwVbediM すまん初めてこのスレ来たんだけど連投してるやつはネームド? http://mevius.5ch.net/test/read.cgi/tech/1679465982/207
208: デフォルトの名無しさん (オッペケ Srd1-Ofdo) [sage] 2023/04/11(火) 14:46:33.78 ID:vCEpO63Mr ネームド志望 http://mevius.5ch.net/test/read.cgi/tech/1679465982/208
209: デフォルトの名無しさん (ブーイモ MM66-tIu7) [sage] 2023/04/11(火) 15:09:56.33 ID:F0CC9LzbM >>195 天才か gcd(f(1),f(2),...) =gcd(f(1),f(2)-f(1),f(3)-f(2),...) ということか 確かに典型だが無限で思考がストップしてしまっていた http://mevius.5ch.net/test/read.cgi/tech/1679465982/209
210: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/11(火) 18:39:41.18 ID:KVT1yw8N0 pythonで2分探索を行う bisect というものがあります。 bisect.bisect(l, a) としたとき、 a in l であるかどうかも判定したいのですが、そのような関数は用意されていませんか? 自分で作るしかないですかね? http://mevius.5ch.net/test/read.cgi/tech/1679465982/210
211: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/11(火) 18:42:16.72 ID:KVT1yw8N0 Pythonに2分探索で整列済みのリスト l に要素 a が含まれるかどうかを調べる関数はありますか? http://mevius.5ch.net/test/read.cgi/tech/1679465982/211
212: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/11(火) 18:44:52.56 ID:KVT1yw8N0 もちろん、 bisect を使って、簡単に実装できますが、用意されている関数はないですか? http://mevius.5ch.net/test/read.cgi/tech/1679465982/212
213: デフォルトの名無しさん (ワッチョイ 06d7-IjNm) [sage] 2023/04/11(火) 19:14:39.91 ID:AEAouguL0 がんばれ http://mevius.5ch.net/test/read.cgi/tech/1679465982/213
214: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/11(火) 19:20:22.62 ID:KVT1yw8N0 まあ、以下のコードでいいと思うのですが、車輪の再発明はしたくないですよね。 i = bisect.bisect_left(l, a) if l[i] == a: return True else: return False http://mevius.5ch.net/test/read.cgi/tech/1679465982/214
215: デフォルトの名無しさん (ワッチョイ 85a4-Az6A) [sage] 2023/04/11(火) 23:36:07.25 ID:HQTQbeZV0 車輪の再発明はしたくないですよ http://mevius.5ch.net/test/read.cgi/tech/1679465982/215
216: デフォルトの名無しさん (ワッチョイ e9ad-RYvx) [sage] 2023/04/12(水) 00:15:56.65 ID:9s1XLAQx0 公式を読めと言いたいが https://docs.python.org/ja/3.8/library/bisect.html 集合でも管理してinで判定すれば良いのでは(´・ω・`) http://mevius.5ch.net/test/read.cgi/tech/1679465982/216
217: デフォルトの名無しさん (テテンテンテン MM66-NK+R) [sage] 2023/04/12(水) 09:07:44.12 ID:tXIe9h+KM 今IT系とは全く別の職種だから転職したくてAtCoder始めたけど楽しいな 未経験で他職種に転職出来るのか分からんけど http://mevius.5ch.net/test/read.cgi/tech/1679465982/217
218: デフォルトの名無しさん (アウアウウー Sa05-NO7/) [sage] 2023/04/12(水) 09:21:22.65 ID:g9fBg21da >>216 2分探索することは確定でそこで発見できるのにそれに加えてわざわざ他の集合を使う意味とは? http://mevius.5ch.net/test/read.cgi/tech/1679465982/218
219: デフォルトの名無しさん (アウアウウー Sa05-NO7/) [sage] 2023/04/12(水) 09:24:04.21 ID:g9fBg21da >>217 最低緑以上になればJobsで転職できる可能性はあるが緑っていっぱいいるので年齢や運が絡むかもな http://mevius.5ch.net/test/read.cgi/tech/1679465982/219
220: デフォルトの名無しさん (テテンテンテン MM66-NK+R) [sage] 2023/04/12(水) 09:48:33.24 ID:VY8vydj+M >>219 ありがとう 数学好きでアルゴリズムも昔やったことあったから緑まではすんなりいけたわ 今は水色目指して色々やってるけどアルゴリズム的要素より数学要素のほうが多く感じるな 年齢は25だからあと3年位がギリギリかなあと思ってる http://mevius.5ch.net/test/read.cgi/tech/1679465982/220
221: デフォルトの名無しさん (アウアウウー Sa05-rH7V) [sage] 2023/04/12(水) 10:00:29.60 ID:e73VjvEsa 水より緑の方が採用しやすい ほんとに転職したいなら水まで行ったらとか思わない方がいい http://mevius.5ch.net/test/read.cgi/tech/1679465982/221
222: デフォルトの名無しさん (テテンテンテン MM66-NK+R) [sage] 2023/04/12(水) 12:09:52.88 ID:SHZyHyDIM >>221 今年色々あって復職したてだから転職活動するなら来年以降かもしれんわ、一応ビズリーチとか登録はしたけど 水色より緑のほうが採用しやすいのはなぜ? http://mevius.5ch.net/test/read.cgi/tech/1679465982/222
223: デフォルトの名無しさん (スッププ Sd22-QZiB) [] 2023/04/12(水) 17:15:55.13 ID:d+uvLod6d 今から狂気プログラミング始めるならPythonでいいかな、 http://mevius.5ch.net/test/read.cgi/tech/1679465982/223
224: デフォルトの名無しさん (ワッチョイ 412d-dXWb) [sage] 2023/04/12(水) 18:22:04.45 ID:7SV2gFKB0 brainfuckがいいと思うよ http://mevius.5ch.net/test/read.cgi/tech/1679465982/224
225: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/12(水) 20:36:03.56 ID:AXD/P1A20 以下の問題ですが、パスするまでに1日かかりました。 atcoder.jp/contests/past202004-open/tasks/past202004_g こういうアイディアはほとんど必要がないけれども、実装するのが大変という 問題の対処方法を教えてください。 1日かかって作成したコードは以下です: ideone.com/NY8mNY http://mevius.5ch.net/test/read.cgi/tech/1679465982/225
226: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/12(水) 20:42:57.91 ID:AXD/P1A20 あ、模範解答を見たら、実装するのも実は大変じゃないんですね。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/226
227: デフォルトの名無しさん (ワッチョイ d907-NO7/) [sage] 2023/04/13(木) 14:51:21.47 ID:YZ8/Xbx00 >>225 > こういうアイディアはほとんど必要がないけれども、実装するのが大変という > 問題の対処方法を教えてください。 「アイデアを出すか頑張って実装する」以外の答えが思いつかんのだが真面目に聞いてるのか? http://mevius.5ch.net/test/read.cgi/tech/1679465982/227
228: デフォルトの名無しさん (ワッチョイ 8255-dXWb) [] 2023/04/13(木) 16:57:11.93 ID:lV5klkX+0 実装大変だなーと思ったら、自分のアイディアが悪いと思ってまず間違いないですか? というのも、模範解答を見ると実装もシンプルな場合ばかりなので。 http://mevius.5ch.net/test/read.cgi/tech/1679465982/228
229: デフォルトの名無しさん (アウアウウー Sa05-NO7/) [sage] 2023/04/13(木) 17:03:32.55 ID:UbSfQqvCa 風向風速とかの簡単で面倒な問題も初期の頃はあったなあ 最近見ないけど無いと言い切る材料もない http://mevius.5ch.net/test/read.cgi/tech/1679465982/229
230: デフォルトの名無しさん (ワッチョイ e101-ynyP) [sage] 2023/04/14(金) 00:49:29.86 ID:PKpPv7DW0 土曜夕方にコドフォdiv1あるじゃん http://mevius.5ch.net/test/read.cgi/tech/1679465982/230
231: デフォルトの名無しさん (オッペケ Srd1-Ofdo) [sage] 2023/04/14(金) 00:57:35.22 ID:iX1MRsL1r 普通デートするよね http://mevius.5ch.net/test/read.cgi/tech/1679465982/231
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 247 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.013s