Please sign in first.
Submission #48863724
Source Code Expand
12/22 始まった インタラクティブ問らしい。そんな…… モンテカルロ法とか使わないとダメな感じか??? とりあえず読んでみる プレイヤーができる操作は 操作1. 方針カードを選ぶ 操作2. 次の方針カードの候補から1枚を選んで手札に加える (このとき、コストに応じて所持金が減る) ※ただし、操作2で所持金が負になると[WA]になる この二つだけ 目的は、Tターン後の所持金を最大化すること シンプルそう とりあえず乱択でカードを選んで提出すれば正の得点が取れそう…… ひたすらカードt=0,1を使ってプロジェクトを完遂し 効率の悪すぎるプロジェクトが来たらカード2を使ってプロジェクトを消し 全部効率が悪いならカード3を使ってプロジェクトをリセットし 資金に余裕があり残りターン数も多いならばカード4で高得点を狙う という感じになりそう とはいえ、これで高得点を狙うにはパラメーターチューニングがとても大変そう…… こういうのは、入力の生成を見るのも大事 n, m, k = ランダム プロジェクト b = 2~8 (double) 残務量h = 2^b + 分散 価値v = 2^b 方針カード 20:10:10:5:3の確率で出やすいが、テストケースごとにランダム確率が固定され、t=0が出ない事もありそう t = 0 : 1~50 、+ 分散 t = 1 : t=0のm倍 t = 2 : 0~10 t = 3 : 0~10 t = 4 : 200~1000 感じたこと ・方針カードの1枚目は必ず 0, 1, 0 であり、カスのカードであるので、そのため、実質パス用の選択肢っぽい ・21枚目の増資カードが手元に来たら最悪だなぁ、でもパスすればいいか ・残りターンが少ない状態で増資カードを選ぶのはまずい 高い価格を回収せねばならないため ・増資カードが珍しいなら、コストが高くても引きたいが、出やすいなら安くなるまで待ちたい ・増資カードを複数枚手札に入れておいて、一気に使うのも有りなのか? ・連続で増資カードが来る確率が低いことを考えると、次ターンで即使うべき? 20制限の管理も簡単になる ・プロジェクトは選べないし、t=2やt=3を使う時だけプロジェクトの価値を評価したい ・プロジェクトを完了して得られる資金 > プロジェクトの遂行にかかるwの期待値 のプロジェクトだけこなしたい ・t = 0, t = 1があったときt=1は実質1ターンでM回行動なのですごく強い ・その性質を上手く活用するには、良いプロジェクトを常に揃えておきたい ・良いプロジェクトが多く悪いプロジェクトが少ない場合はt=2、全部最悪なプロジェクトな場合はt=3 ・t=2、t=3は、最悪なプロジェクトが存在しているタイミングで購入するべきで、ストックすべきではないのでは? ・T = 1000の直前は、高い方針カードを買っても意味無いな ・N個のストックには何を入れるべきか? ・x0, x1, x2, x3, x4の値は簡易的に推定できそう…… ベース確率(比率)は21 : 11 : 11 : 6 : 4 ・ベース比率に、実際のデータを加算していけば、割と十分正確な数値が出そう ・ところで、0, 1, 0入力は比率に含まれるのか????? 多分含まれないけど要確認 ・モンテカルロ法 + 採算ラインを様々試すシミュレート が良いのか? ・モンテカルロだけなら、各ターンから1000回やっても1000*1000*定数でそれなりに回る? ・しかし、1000ターン先まで見るのは無駄だろうと思うので、min(30,残りturn)ターンぐらいで良いかもしれない ・モンテカルロをするにしても、とりあえずルールベースの貪欲解を作る必要がありそう ・シミュレーションの期間が短いと、増資のメリットが見えにくいのでは? 今のカード状態・カードの出やすさ・残りターンから2~8択を選ぶ ところで、テストケースごとに固有のパラメーターは n, m, k, 各種カードの出やすさのみ とりあえず乱択を実装するか…… モンテカルロを意識した実装ってどうすればいいんだろう? 保持する必要があるデータが軽いので、普通に上書きしまくって良さそう 乱択解はとりあえず動いた 初日の1位がKiri8128さん ということは、なんかこう数学的な最適を計算して選ぶといい感じか? モンテカルロを正しく実装すれば5位以内に入れるのかな? モンテカルロ法はMCという名前の構造体で一括管理することにする データをコピーしても、今回は軽めなので、かなりの回数が回りそう ルールベースの改善が得点に直結しそう それと、増資のタイミングとか…… うーん、まだ分からないことが多い ここで1日目は終わり 12/23 2日目 モンテカルロの実装を勧めていくぞの気持ち とりあえず、T=1000で1ターンに4回操作があるのが不便なので、ターン数を4倍にして ターンmod4ごとに処理をする…… みたいな感じにした モンテカルロをするのだが、ルールベースをどうするか悩む シミュレーション用のコードを書くだけでかなり大変なのだが これは期限内に書ききれるのか……? とりあえず、動きはするものを作れたが、動きが正常なのかは不明 まあいろいろやってみるか もう350行も書いてるのに貪欲法を書き始める事すらできてないんですけど! とりあえず、モンテカルロ法の中身以外は完成したので あとはモンテカルロ法の中身を整えればOKっぽい バグも多そうだけれども、そこは追々 モンテカルロ法の中身を作るにあたり、どのようなルールベースを採用すべきか… 使うカードの選び方について ・増資カードが手元にあるなら即使う ・全力労働カードが手元にあるなら即使う ・通常労働カードでプロジェクトを即完了できるなら使う ・業務転換カードが手元にあり、かつ場のプロジェクトが全て残務量>価値なら業務転換カードを使用する ・キャンセルカードが手元にあり、かつ場のプロジェクトの価値/残務量が最も低くかつ1.0を下回っている場合は使用する ・通常労働カードの中から最も強力なカードを選び、一手で完了できるプロジェクトの中で価値が最大のプロジェクトに使用する ・通常労働カードの中から最も強力なカードを選び、残務量減少量当たりの価値が最も高いプロジェクトに使用する ・それでもカードが選べないような場合は? とりあえずエラー吐いとくか 購入するカードの選び方について ・増資カードは、所持金が 300 < invest ぐらい残るなら安心感がありそう ・全力労働カードはなるべく沢山使用したいが、コストも高いので、次の一手で使用した場合の効率が保証されてる場合のみ使用する ・全力労働カードのうち、w/m/2 > p かつw/mが最大のカードなら買っても採算が取れるだろうという気持ち ・労働カードの内、w > p かつ w / p が最大のカードを買う ・h > vなプロジェクトがあり、h-v >= p ならばキャンセルカードを買う 別に条件を満たさなくても、キャンセルカードは沢山欲しい ・h > vなプロジェクトしかなく、最悪な状況でのみ業務転換カードを使用するが、別にこのカードは無視でもよいと思う ・上記のいずれも満たせないのなら、0 1 0カードを買ってパスをする とりあえずこれで実装してみる 疑問など ・労働カードの現行のプロジェクトに対する最高効率は簡単に計算できるのでは? ・例えば、プロジェクトの価値 * min(削った残務量/元の残務量, 1) の総和…… (合ってる?) ・これが計算できていれば、t=0, t=1のカードを選ぶ時に最適に選べそう ・労働カードの効率自体は簡単に計算でき、基本的にはw-pがそのまま価値になると言える ・全力労働カードは労働力が過剰であるように見えるが、ターンを節約できる事の恩恵もデカい ・モンテカルロ法の代わりにビームサーチできないかな? ・盤面の評価自体は、手元のwの総和 + プロジェクトのv-hの総和 + money + if(invests) (300 << invests) みたいな感じでスコアを評価できそう 一応、方針として覚えておくが、モンテカルロ法にビームサーチを組み込んでもループ回数が少なくなりそうなのと、 後シンプルにこれ以上実装量を増やしたくないし、 シミュレーション内でビームサーチなんてしてたら実行時間がどれだけあっても足りないし やめとこう ところで書いている途中に定数倍が重くなってきたのだが、これは十分な回数回せるのか? ソートを禁止して軽さを維持していく 大枠は完成し、残りは2つ シミュレーションinputの生成、およびカード選択の判定部分の実装 ところで、増資で資金が取り戻せるのって最悪何ターンかかるんだろう? そのターン数をシミュレーション深度の上限に設ければいい感じかもしれない 2日目はこれで終わり 12/24 3日目 まだ貪欲すらかけてないのに、残り期間が半分しか残ってない。まじか。 やることは決めてしまったのでそれを実装するだけ しかし、シミュレーション内での貪欲処理には吟味すべき場所が複数ありそう しんどくなってきた 500行書いてまだ動作するところにすら持っていけてない バグ取りやパラメーター調整の時間が欲しい(無さそう) 日曜日から開始したという人もいたが、実装時間足りる物なのだろうか ぐお~~~~~ コードバグだらけやんけ~~~~~ たすけて~~~~~ 完成したぞ 完成したので無限のバグ取りが始まる バグ取り完了 そしてスコアは……0! 0か……そうか……シミュレーション内で何度も資金が0になっているらしい あとシミュレーションの回数が全く回らない なぜ? と思ったが、始発点が1000 * (n+k) あり、深さ1000で、定数倍もそれなりにあるので、それだけでもうきつい 深さに制限を設けてしまおう モンテカルロはやめて普通の貪欲法を書くことにする ループ回数が足りなさ過ぎてちょっと…… 結局ただの貪欲法になったが、まあ悪くはないのかな? とりあえず簡単な貪欲で341,488,857点で41位 なるほどね うーん貪欲の改善だけで1ページ目まで行けるな それはそうと、実行時間が24msで、100倍ぐらいまでしか行けないな…… モンテカルロする時間猶予は無さそう? 得点を341,488,857 -> 7,198,756,426 にして27位 investsの上限が小さそうなケースではかなり良い結果が出せていそう というわけで3日目はこれで終わり ぎゃーーー3日掛けて作ったモンテカルロ法の実装が無駄になった いや、まだ無駄だと決まったわけでは…… 12/25 4日目 盤面の評価をするのが難しい 所持金・手札・プロジェクト・invest回数 を元に盤面を評価し 選択の中で評価値が最も高い盤面へ遷移するような貪欲を作ってみた プロジェクトはv-hが大きいほど価値があるし、hが小さいほど優れているが h < money + Σw ならばhの大きさはあまり関係ない シミュレートすると、どうにも手札を温存しすぎるようで、これはどう評価すればいいんだろう? プロジェクトの評価では、v-hを減らすと価値がしっかり増えるのが大事なのかな? 選べるプロジェクトを限定するとかなり改善した w:50 のカードしか手元にないとき、h = 5のプロジェクトが場にあるとすごい無駄が発生する 手元にはw:1のカードが常に欲しいかな? 貪欲をゴチャゴチャ弄って15位! 10,319,197,807点を獲得 ところで、ビジュアライザと本番入力で受け取りの順序が違うの、紛らわしくない? まだ得点3倍以上にできるらしい というか、提出の得点が2倍になっても順位表の得点は1.2倍ぐらいしか動かない つまり、まだまだデカいケースで上位に差をつけられている 得点の最大値が小さいケース程、順位表得点への寄与率が高そう 得点の最大値が大きいケースは、誰かがinvest=20でバカ高いスコアを出したら、全員の得点がカスになる つまり、得点をあげたいなら、上限が小さそうなケースを頑張るのが寄与率が高そう? あるいは、全員がinvest = 20にできるようなケースも寄与率が高そう? 17,946,294,069点で13位 変更内容は、選ぶプロジェクトをv-hの最大の物ではなく、v/hが最大の物、に変更した これがかなり効いた 上位まで3倍差というところまで来たが、モンテカルロ法とかできそうかな? そういうことをしないと得点を上げるのは厳しいようにも思える 選ぶプロジェクトを限定した副作用として、wが大きい要素をhが小さいプロジェクトに適用することを避けてしまう wが大きい要素をhが小さいプロジェクトにapplyし、それでv/hがもっと最適になるような操作列も存在することを考える ちょっと限定的かな? 手元のw+moneyの和が大きいのにそれを使えないというジレンマを解消したい 使えないなら使えないで、別のプロジェクトに対してapplyしたい 所持金が0に近くなると、p = 8 w = 50 のカードを買えなかったりして、これは損すぎるので、 できれば手元にある労働カードは即使用して、所持金に変換したい 手詰まり感が出てきた 改善案を書きだそう ・モンテカルロは回数がすくなすぎて改善できるか際どいのに、実装量が多いため、あんまりしたくない(あと1日しかないし) ・かといって実行時間が余ってるのはもったいない x0~x4の出現率などを活用したくもある そもそも、できる操作はカードを選ぶ・カードを使用するの二種類のみなので、この二つについて考察を深めよう カードの使用について ・最も優先的に使いたいのは増資カードで、ストックする意味がなく、手元にあるならば使用することでメリットしかない カードの購入について ・まず絶対に優先したいのは増資カードで、出現が稀なためすぐに買いたい ・次に、ストックできるならストックしたいものは、業務転換カード ・通常労働カードも良い物はストックしたい ・キャンセルカードはそもそも、今すぐに使用したいという場面が少なく、買える時に効果的に使えるなら買うのが適切に見える wを無駄にしないように改善しようとしたが、スコアが下がってしまった…… どうやら、例え無駄が発生したとしても、目先の効率のよいプロジェクトを素早く完了させた方が良いらしい 何をしてもスコアが微妙に悪化するようになってしまった これが局所最適解ってやつか? 明日は最終日なんですけど!!! 幅を増やしたモンテカルロするぐらいしか……なにか思い浮かべ! あ~~~~もうちょっと上に行かせてほし~~~~ まあ何も改善案無いんだけどね しかし貪欲書いて終わりか…… こういう問題はモンテカルロするものだと思っているんだけど 制限時間的にモンテカルロしても、その遷移が本当に良いのかを判定できるような精度を出せなさそうだし ランダム性のバラつきが大きくて回数が少ないと微妙そうだし 遷移後の盤面を評価するのも難しそうだし 盤面の評価方法をガラッと変えてしまおうか? 例えば、v-hを評価に含めるのではなく、現状の手札のwを全てapplyしたときの獲得vで評価する、みたいな。 bitdpを使えばかなり高速に計算できるし。2^7 * 7ぐらい。 あとinvestを買う時にどのくらいの価格で妥協するかも大事な気がする というのも、invest = 0で固定した状態だと、各テストケースで得られる金額はせいぜいが4000~10000程度なのである これはつまり、investを1000支払って買うというのは、investの上限を自ら4~10回に制限するようなものだ、とも言える かといって出現率が低すぎてinvestできなくても困るので、迷うところ まあいろいろ弄ってみるか、伸びるかもしれないし。 お~~~伸びた~~~ 22,556,193,009 点が取れた きもち~~~ この制限のラインを色々弄れば、スコアがさらに伸びるかもしれない! 残弾が増やせて嬉しい嬉しい嬉しい 投げて上がるかは運次第 つまり、やるべきことは、invest購入のタイミング・価格の調整 investが大量に出るなら安くしたいし、investが出ないなら高くても買いたい より具体的には、出現率が21,11,11,6,4 (investの基本出現率は7.547%) 基本出現率と実際の出現率の比率を計算し カードの販売種類数kと,investカードの出現率を元に、購入できるinvestカードの価格の上限を決める、ということをしようと思う これで上がらなかったら詐欺 調整したが初回の提出では伸びなかった(順位表は改善した) 明日も調整しよう reminder : 412行目辺り 4日目は11位でフィニッシュ 12/26 5日目最終日 火曜なので抜かされないんじゃね? という期待をしていたが、ふつうに抜かされる これが最終日の定めか ところで、得点と順位表得点が割と相関しているので、手元で100ケース回してスコア判定したほうが良いかな? その方がやりやすそう investの価格上限を弄りまくったけど微妙にしか変化しないなぁ 実行時間が軽めな貪欲を採用したこともあり、 100ケーステストをそこそこ早く実行できるので、いろいろパラメーターをいじってみる事にする ということで改善したものを提出したら、得点がかなり下がった まじか 手元の100ケースを信じるべきか、本番50ケースを信じるべきか 手元のケースを200ケースに増やした ケース数は正義 順位表の得点ではなく、手元の得点の最大化を優先することにする 潜伏勢に抜かされまくり うーんあらゆる変更で悪化する 何をしたって改善できないぐらいパラメーターを調整できた気がするが、上位との差が4倍なのでそうでもない気もする 爆弾を常に1枚持っておくことで、少し改善できた やっぱりストックしたいのは爆弾だよなぁ 爆弾は複数個ストックしようとすると微妙だった 1個あれば十分で、それ以上は過剰なようだ 労働カードは沢山持っておきたいけど、すぐに使いたい キャンセルカードは持ちたくない、爆弾で良い 全力労働カードは……全力労働カードか ストックするのもありなのか? 潜伏勢が提出を行い始め、順位がどんどん下がっていく 全力労働カードを適切に扱うには、キャンセルカードを積極的に使わないとダメそう? 全力労働カードを適切に盤面評価に組み込むことにより、+8%ぐらい改善! しかし、提出での点数は下がった…… でも手元の200ケースを信じると決めたので システスでWAやTLEを出さなければ、この手元のケースで改善できた部分がジワジワ効くはず(多分) (点差がデカすぎてシステスでの微妙な改善とか意味ない気もするけど) 最終日でもなんだかんだ手元200ケースで20%ぐらい得点は改善できた(順位表での得点は伸びてるのか伸びてないのか分からない) 改善はしているのに、やはり提出結果での得点は伸びない 残り2時間だけど、さらに大きく伸ばせたりしなければ、これが最終提出 参加した感想など いかにもモンテカルロっぽい見た目をしていたので、その実装に時間を費やすことを決定してしまい、 最初の3日間がかなり無駄になってしまった(しかもループ回数が少なすぎて結局使わなかった) この実装中はかなり気分的にキツかった 方針を貪欲に変えてからは、書き換えるたびに順位が上がり、気分的にかなり楽になった パラメーターを弄り続ける事で得点が上昇していったため、自動でパラメーター調整できる人が強かったのではないだろうか もっと様々なパラメーターなどをいじれば、まだ得点を上げる余地はありそう 今回の教訓というか今後の課題は、 手元で1000ケースぐらいを回して、スコアの合計や平均改善率などを簡単に取得できるようにしたり、 パラメーターチューニングを自動でしたりなどをする環境を作りたい など
Submission Info
| Submission Time | |
|---|---|
| Task | A - Business Simulation Game |
| User | Moegi |
| Language | C++ 20 (gcc 12.2) |
| Score | 0 |
| Code Size | 22975 Byte |
| Status | CE |
Compile Error
Main.cpp:3:1: error: extended character 。 is not valid in an identifier
3 | インタラクティブ問らしい。そんな……
| ^
Main.cpp:3:1: error: extended character … is not valid in an identifier
Main.cpp:3:1: error: extended character … is not valid in an identifier
Main.cpp:9:8: error: extended character is not valid in an identifier
9 | 操作2. 次の方針カードの候補から1枚を選んで手札に加える (このとき、コストに応じて所持金が減る)
| ^
Main.cpp:9:58: error: extended character 、 is not valid in an identifier
9 | 操作2. 次の方針カードの候補から1枚を選んで手札に加える (このとき、コストに応じて所持金が減る)
| ^
Main.cpp:10:1: error: extended character ※ is not valid in an identifier
10 | ※ただし、操作2で所持金が負になると[WA]になる
| ^
Main.cpp:10:1: error: extended character 、 is not valid in an identifier
Main.cpp:13:1: error: extended character 、 is not valid in an identifier
13 | 目的は、Tターン後の所持金を最大化すること
| ^
Main.cpp:15:1: error: extended character … is not valid in an identifier
15 | とりあえず乱択でカードを選んで提出すれば正の得点が取れそう……
| ^
Main.cpp:15:1: error: extended character … is not valid in an identifier
Main.cpp:23:1: error: extended character 、 is not valid in an identifier
23 | とはいえ、これで高得点を狙うにはパラメーターチューニングがとても大変そう……
| ^
Main.cpp:23:1: error: extended character … is not valid in an identifier
Main.cpp:23:1: error: extended character … is not valid in an identifier
Main.cpp:25:1: error: extended character 、 is not valid in an identifier
25 | こういうのは、入力の生成を見るのも大事
| ^
Main.cpp:32:12: error: extended character 、 is not valid in an identifier
32 | 20:10:10:5:3の確率で出やすいが、テストケースごとにランダム確率が固定され、t=0が出ない事もありそう
| ^
Main.cpp:32:12: error: extended character 、 is not valid in an identifier
Main.cpp:33:14: error: extended character 、 is not valid in an identifier
33 | t = 0 : 1~50 、+ 分散
| ^
Main.cpp:40:36: error: extended character 、 is not valid in an identifier
40 | ・方針カードの1枚目は必ず 0, 1, 0 であり、カスのカードであるので、そのため、実質パス用の選択肢っぽい
| ^
Main.cpp:40:36: error: extended character 、 is not valid in an identifier
Main.cpp:40:36: error: extended character 、 is not valid in an identifier
Main.cpp:41:1: error: extended character 、 is not valid in an identifier
41 | ・21枚目の増資カードが手元に来たら最悪だなぁ、でもパスすればいいか
| ^
Main.cpp:42:1: error: extended character is not valid in an identifier
42 | ・残りターンが少ない状態で増資カードを選ぶのはまずい 高い価格を回収せねばならないため
| ^
Main.cpp:43:1: error: extended character 、 is not valid in an identifier
43 | ・増資カードが珍しいなら、コストが高くても引きたいが、出やすいなら安くなるまで待ちたい
| ^
Main.cpp:43:1: error: extended character 、 is not valid in an identifier
Main.cpp:44:1: error: extended character 、 is not valid in an identifier
44 | ・増資カードを複数枚手札に入れておいて、一気に使うのも有りなのか?
| ^
Main.cpp:45:1: error: extended character 、 is not valid in an identifier
45 | ・連続で増資カードが来る確率が低いことを考えると、次ターンで即使うべき? 20制限の管理も簡単になる
| ^
Main.cpp:45:1: error: extended character is not valid in an identifier
Main.cpp:46:1: error: extended character 、 is not valid in an identifier
46 | ・プロジェクトは選べないし、t=2やt=3を使う時だけプロジェクトの価値を評価したい
| ^
Main.cpp:47:40: error: extended character is not valid in an identifier
47 | ・プロジェクトを完了して得られる資金 > プロジェクトの遂行にかかるwの期待値 のプロジェクトだけこなしたい
| ^
Main.cpp:49:1: error: extended character 、 is not valid in an identifier
49 | ・その性質を上手く活用するには、良いプロジェクトを常に揃えておきたい
| ^
Main.cpp:50:57: error: extended character 、 is not valid in an identifier
50 | ・良いプロジェクトが多く悪いプロジェクトが少ない場合はt=2、全部最悪なプロジェクトな場合はt=3
| ^
Main.cpp:51:5: error: extended character 、 is not valid in an identifier
51 | ・t=2、t=3は、最悪なプロジェクトが存在しているタイミングで購入するべきで、ストックすべきではないのでは?
| ^
Main.cpp:51:10: error: extended character 、 is not valid in an identifier
51 | ・t=2、t=3は、最悪なプロジェクトが存在しているタイミングで購入するべきで、ストックすべきではないのでは?
| ^
Main.cpp:51:10: error: extended character 、 is not valid in an identifier
Main.cpp:52:7: error: extended character 、 is not valid in an identifier
52 | ・T = 1000の直前は、高い方針カードを買っても意味無いな
| ^
Main.cpp:54:19: error: extended character … is not valid in an identifier
54 | ・x0, x1, x2, x3, x4の値は簡易的に推定できそう…… ベース確率(比率)は21 : 11 : 11 : 6 : 4
| ^
Main.cpp:54:19: error: extended character … is not valid in an identifier
Main.cpp:54:19: error: extended character is not valid in an identifier
Main.cpp:55:1: error: extended character 、 is not valid in an identifier
55 | ・ベース比率に、実際のデータを加算していけば、割と十分正確な数値が出そう
| ^
Main.cpp:55:1: error: extended character 、 is not valid in an identifier
Main.cpp:56:1: error: extended character 、 is not valid in an identifier
56 | ・ところで、0, 1, 0入力は比率に含まれるのか????? 多分含まれないけど要確認
| ^
Main.cpp:56:19: error: extended character is not valid in an identifier
56 | ・ところで、0, 1, 0入力は比率に含まれるのか????? 多分含まれないけど要確認
| ^
Main.cpp:57:20: error: extended character is not valid in an identifier
57 | ・モンテカルロ法 + 採算ラインを様々試すシミュレート が良いのか?
| ^
Main.cpp:57:65: error: extended character is not valid in an identifier
57 | ・モンテカルロ法 + 採算ラインを様々試すシミュレート が良いのか?
| ^
Main.cpp:58:1: error: extended character 、 is not valid in an identifier
58 | ・モンテカルロだけなら、各ターンから1000回やっても1000*1000*定数でそれなりに回る?
| ^
Main.cpp:59:1: error: extended character 、 is not valid in an identifier
59 | ・しかし、1000ターン先まで見るのは無駄だろうと思うので、min(30,残りturn)ターンぐらいで良いかもしれない
| ^
Main.cpp:59:1: error: extended character 、 is not valid in an identifier
Main.cpp:60:1: error: extended character 、 is not valid in an identifier
60 | ・モンテカルロをするにしても、とりあえずルールベースの貪欲解を作る必要がありそう
| ^
Main.cpp:61:1: error: extended character 、 is not valid in an identifier
61 | ・シミュレーションの期間が短いと、増資のメリットが見えにくいのでは?
| ^
Main.cpp:65:1: error: extended character 、 is not valid in an identifier
65 | ところで、テストケースごとに固有のパラメーターは
| ^
Main.cpp:68:1: error: extended character … is not valid in an identifier
68 | とりあえず乱択を実装するか……
| ^
Main.cpp:68:1: error: extended character … is not valid in an identifier
Main.cpp:71:1: error: extended character 、 is not valid in an identifier
71 | 保持する必要があるデータが軽いので、普通に上書きしまくって良さそう
| ^
Main.cpp:74:1: error: extended character is not valid in an identifier
74 | 初日の1位がKiri8128さん ということは、なんかこう数学的な最適を計算して選ぶといい感じか?
| ^
Main.cpp:74:1: error: extended character 、 is not valid in an identifier
Main.cpp:78:1: error: extended character 、 is not valid in an identifier
78 | データをコピーしても、今回は軽めなので、かなりの回数が回りそう
| ^
Main.cpp:78:1: error: extended character 、 is not valid in an identifier
Main.cpp:80:1: error: extended character 、 is not valid in an identifier
80 | それと、増資のタイミングとか……
| ^
Main.cpp:80:1: error: extended character … is not valid in an identifier
Main.cpp:80:1: error: extended character … is not valid in an identifier
Main.cpp:82:1: error: extended character 、 is not valid in an identifier
82 | うーん、まだ分からないことが多い
| ^
Main.cpp:90:1: error: extended character 、 is not valid in an identifier
90 | とりあえず、T=1000で1ターンに4回操作があるのが不便なので、ターン数を4倍にして
| ^
Main.cpp:90:15: error: extended character 、 is not valid in an identifier
90 | とりあえず、T=1000で1ターンに4回操作があるのが不便なので、ターン数を4倍にして
| ^
Main.cpp:91:1: error: extended character … is not valid in an identifier
91 | ターンmod4ごとに処理をする…… みたいな感じにした
| ^
Main.cpp:91:1: error: extended character … is not valid in an identifier
Main.cpp:91:1: error: extended character is not valid in an identifier
Main.cpp:93:1: error: extended character 、 is not valid in an identifier
93 | モンテカルロをするのだが、ルールベースをどうするか悩む
| ^
Main.cpp:96:1: error: extended character … is not valid in an identifier
96 | これは期限内に書ききれるのか……?
| ^
Main.cpp:96:1: error: extended character … is not valid in an identifier
Main.cpp:98:1: error: extended character 、 is not valid in an identifier
98 | とりあえず、動きはするものを作れたが、動きが正常なのかは不明
| ^
Main.cpp:98:1: error: extended character 、 is not valid in an identifier
Main.cpp:102:1: error: extended character 、 is not valid in an identifier
102 | とりあえず、モンテカルロ法の中身以外は完成したので
| ^
Main.cpp:104:1: error: extended character 、 is not valid in an identifier
104 | バグも多そうだけれども、そこは追々
| ^
Main.cpp:106:1: error: extended character 、 is not valid in an identifier
106 | モンテカルロ法の中身を作るにあたり、どのようなルールベースを採用すべきか…
| ^
Main.cpp:106:1: error: extended character … is not valid in an identifier
Main.cpp:111:1: error: extended character 、 is not valid in an identifier
111 | ・業務転換カードが手元にあり、かつ場のプロジェクトが全て残務量>価値なら業務転換カードを使用する
| ^
Main.cpp:112:1: error: extended character 、 is not valid in an identifier
112 | ・キャンセルカードが手元にあり、かつ場のプロジェクトの価値/残務量が最も低くかつ1.0を下回っている場合は使用する
| ^
Main.cpp:113:1: error: extended character 、 is not valid in an identifier
113 | ・通常労働カードの中から最も強力なカードを選び、一手で完了できるプロジェクトの中で価値が最大のプロジェクトに使用する
| ^
Main.cpp:114:1: error: extended character 、 is not valid in an identifier
114 | ・通常労働カードの中から最も強力なカードを選び、残務量減少量当たりの価値が最も高いプロジェクトに使用する
| ^
Main.cpp:117:1: error: extended character 、 is not valid in an identifier
117 | ・増資カードは、所持金が 300 < invest ぐらい残るなら安心感がありそう
| ^
Main.cpp:118:1: error: extended character 、 is not valid in an identifier
118 | ・全力労働カードはなるべく沢山使用したいが、コストも高いので、次の一手で使用した場合の効率が保証されてる場合のみ使用する
| ^
Main.cpp:118:1: error: extended character 、 is not valid in an identifier
Main.cpp:119:1: error: extended character 、 is not valid in an identifier
119 | ・全力労働カードのうち、w/m/2 > p かつw/mが最大のカードなら買っても採算が取れるだろうという気持ち
| ^
Main.cpp:120:1: error: extended character 、 is not valid in an identifier
120 | ・労働カードの内、w > p かつ w / p が最大のカードを買う
| ^
Main.cpp:121:7: error: extended character 、 is not valid in an identifier
121 | ・h > vなプロジェクトがあり、h-v >= p ならばキャンセルカードを買う 別に条件を満たさなくても、キャンセルカードは沢山欲しい
| ^
Main.cpp:121:39: error: extended character is not valid in an identifier
121 | ・h > vなプロジェクトがあり、h-v >= p ならばキャンセルカードを買う 別に条件を満たさなくても、キャンセルカードは沢山欲しい
| ^
Main.cpp:121:39: error: extended character 、 is not valid in an identifier
Main.cpp:122:7: error: extended character 、 is not valid in an identifier
122 | ・h > vなプロジェクトしかなく、最悪な状況でのみ業務転換カードを使用するが、別にこのカードは無視でもよいと思う
| ^
Main.cpp:122:7: error: extended character 、 is not valid in an identifier
Main.cpp:123:1: error: extended character 、 is not valid in an identifier
123 | ・上記のいずれも満たせないのなら、0 1 0カードを買ってパスをする
| ^
Main.cpp:129:1: error: extended character 、 is not valid in an identifier
129 | ・例えば、プロジェクトの価値 * min(削った残務量/元の残務量, 1) の総和…… (合ってる?)
| ^
Main.cpp:129:64: error: extended character … is not valid in an identifier
129 | ・例えば、プロジェクトの価値 * min(削った残務量/元の残務量, 1) の総和…… (合ってる?)
| ^
Main.cpp:129:64: error: extended character … is not valid in an identifier
Main.cpp:129:64: error: extended character is not valid in an identifier
Main.cpp:130:1: error: extended character 、 is not valid in an identifier
130 | ・これが計算できていれば、t=0, t=1のカードを選ぶ時に最適に選べそう
| ^
Main.cpp:131:1: error: extended character 、 is not valid in an identifier
131 | ・労働カードの効率自体は簡単に計算でき、基本的にはw-pがそのまま価値になると言える
| ^
Main.cpp:132:1: error: extended character 、 is not valid in an identifier
132 | ・全力労働カードは労働力が過剰であるように見えるが、ターンを節約できる事の恩恵もデカい
| ^
Main.cpp:134:1: error: extended character 、 is not valid in an identifier
134 | ・盤面の評価自体は、手元のwの総和 + プロジェクトのv-hの総和 + money + if(invests) (300 << invests)
| ^
Main.cpp:136:1: error: extended character 、 is not valid in an identifier
136 | 一応、方針として覚えておくが、モンテカルロ法にビームサーチを組み込んでもループ回数が少なくなりそうなのと、
| ^
Main.cpp:136:1: error: extended character 、 is not valid in an identifier
Main.cpp:136:1: error: extended character 、 is not valid in an identifier
Main.cpp:137:1: error: extended character 、 is not valid in an identifier
137 | 後シンプルにこれ以上実装量を増やしたくないし、
| ^
Main.cpp:141:1: error: extended character 、 is not valid in an identifier
141 | ところで書いている途中に定数倍が重くなってきたのだが、これは十分な回数回せるのか?
| ^
Main.cpp:144:1: error: extended character 、 is not valid in an identifier
144 | 大枠は完成し、残りは2つ シミュレーションinputの生成、およびカード選択の判定部分の実装
| ^
Main.cpp:144:1: error: extended character is not valid in an identifier
Main.cpp:144:1: error: extended character 、 is not valid in an identifier
Main.cpp:146:1: error: extended character 、 is not valid in an identifier
146 | ところで、増資で資金が取り戻せるのって最悪何ターンかかるんだろう?
| ^
Main.cpp:153:1: error: extended character 、 is not valid in an identifier
153 | まだ貪欲すらかけてないのに、残り期間が半分しか残ってない。まじか。
| ^
Main.cpp:153:1: error: extended character 。 is not valid in an identifier
Main.cpp:153:1: error: extended character 。 is not valid in an identifier
Main.cpp:155:1: error: extended character 、 is not valid in an identifier
155 | しかし、シミュレーション内での貪欲処理には吟味すべき場所が複数ありそう
| ^
Main.cpp:160:1: error: extended character 、 is not valid in an identifier
160 | 日曜日から開始したという人もいたが、実装時間足りる物なのだろうか
| ^
Main.cpp:169:1: error: extended character is not valid in an identifier
169 | バグ取り完了 そしてスコアは……0!
| ^
Main.cpp:169:1: error: extended character … is not valid in an identifier
Main.cpp:169:1: error: extended character … is not valid in an identifier
Main.cpp:170:1: error: extended character … is not valid in an identifier
170 | 0か……そうか……シミュレーション内で何度も資金が0になっているらしい
| ^
Main.cpp:170:1: error: extended character … is not valid in an identifier
Main.cpp:170:1: error: extended character … is not valid in an identifier
Main.cpp:170:1: error: extended character … is not valid in an identifier
Main.cpp:172:1: error: extended character is not valid in an identifier
172 | なぜ? と思ったが、始発点が1000 * (n+k) あり、深さ1000で、定数倍もそれなりにあるので、それだけでもうきつい
| ^
Main.cpp:172:1: error: extended character 、 is not valid in an identifier
Main.cpp:172:42: error: extended character 、 is not valid in an identifier
172 | なぜ? と思ったが、始発点が1000 * (n+k) あり、深さ1000で、定数倍もそれなりにあるので、それだけでもうきつい
| ^
Main.cpp:172:42: error: extended character 、 is not valid in an identifier
Main.cpp:172:42: error: extended character 、 is not valid in an identifier
Main.cpp:176:1: error: extended character … is not valid in an identifier
176 | ループ回数が足りなさ過ぎてちょっと……
| ^
Main.cpp:176:1: error: extended character … is not valid in an identifier
Main.cpp:178:1: error: extended character 、 is not valid in an identifier
178 | 結局ただの貪欲法になったが、まあ悪くはないのかな?
| ^
Main.cpp:183:1: error: extended character 、 is not valid in an identifier
183 | それはそうと、実行時間が24msで、100倍ぐらいまでしか行けないな……
| ^
Main.cpp:183:1: error: extended character 、 is not valid in an identifier
Main.cpp:183:1: error: extended character … is not valid in an identifier
Main.cpp:183:1: error: extended character … is not valid in an identifier
Main.cpp:190:1: error: extended character 、 is not valid in an identifier
190 | いや、まだ無駄だと決まったわけでは……
| ^
Main.cpp:190:1: error: extended character … is not valid in an identifier
Main.cpp:190:1: error: extended character … is not valid in an identifier
Main.cpp:195:1: error: extended character is not valid in an identifier
195 | 所持金・手札・プロジェクト・invest回数 を元に盤面を評価し
| ^
Main.cpp:197:17: error: extended character 、 is not valid in an identifier
197 | プロジェクトはv-hが大きいほど価値があるし、hが小さいほど優れているが
| ^
Main.cpp:199:1: error: extended character 、 is not valid in an identifier
199 | シミュレートすると、どうにも手札を温存しすぎるようで、これはどう評価すればいいんだろう?
| ^
Main.cpp:199:1: error: extended character 、 is not valid in an identifier
Main.cpp:200:1: error: extended character 、 is not valid in an identifier
200 | プロジェクトの評価では、v-hを減らすと価値がしっかり増えるのが大事なのかな?
| ^
Main.cpp:203:6: error: extended character 、 is not valid in an identifier
203 | w:50 のカードしか手元にないとき、h = 5のプロジェクトが場にあるとすごい無駄が発生する
| ^
Main.cpp:209:1: error: extended character 、 is not valid in an identifier
209 | ところで、ビジュアライザと本番入力で受け取りの順序が違うの、紛らわしくない?
| ^
Main.cpp:209:1: error: extended character 、 is not valid in an identifier
Main.cpp:211:1: error: extended character 、 is not valid in an identifier
211 | というか、提出の得点が2倍になっても順位表の得点は1.2倍ぐらいしか動かない
| ^
Main.cpp:212:1: error: extended character 、 is not valid in an identifier
212 | つまり、まだまだデカいケースで上位に差をつけられている
| ^
Main.cpp:213:1: error: extended character 、 is not valid in an identifier
213 | 得点の最大値が小さいケース程、順位表得点への寄与率が高そう
| ^
Main.cpp:214:1: error: extended character 、 is not valid in an identifier
214 | 得点の最大値が大きいケースは、誰かがinvest=20でバカ高いスコアを出したら、全員の得点がカスになる
| ^
Main.cpp:214:44: error: extended character 、 is not valid in an identifier
214 | 得点の最大値が大きいケースは、誰かがinvest=20でバカ高いスコアを出したら、全員の得点がカスになる
| ^
Main.cpp:216:1: error: extended character 、 is not valid in an identifier
216 | つまり、得点をあげたいなら、上限が小さそうなケースを頑張るのが寄与率が高そう?
| ^
Main.cpp:216:1: error: extended character 、 is not valid in an identifier
Main.cpp:217:1: error: extended character 、 is not valid in an identifier
217 | あるいは、全員がinvest = 20にできるようなケースも寄与率が高そう?
| ^
Main.cpp:219:12: error: invalid digit "9" in octal constant
219 | 17,946,294,069点で13位
| ^~~~~~~~~~~
Main.cpp:220:1: error: extended character 、 is not valid in an identifier
220 | 変更内容は、選ぶプロジェクトをv-hの最大の物ではなく、v/hが最大の物、に変更した これがかなり効いた
| ^
Main.cpp:220:33: error: extended character 、 is not valid in an identifier
220 | 変更内容は、選ぶプロジェクトをv-hの最大の物ではなく、v/hが最大の物、に変更した これがかなり効いた
| ^
Main.cpp:220:56: error: extended character 、 is not valid in an identifier
220 | 変更内容は、選ぶプロジェクトをv-hの最大の物ではなく、v/hが最大の物、に変更した これがかなり効いた
| ^
Main.cpp:220:56: error: extended character is not valid in an identifier
Main.cpp:221:1: error: extended character 、 is not valid in an identifier
221 | 上位まで3倍差というところまで来たが、モンテカルロ法とかできそうかな?
| ^
Main.cpp:224:1: error: extended character 、 is not valid in an identifier
224 | 選ぶプロジェクトを限定した副作用として、wが大きい要素をhが小さいプロジェクトに適用することを避けてしまう
| ^
Main.cpp:225:1: error: extended character 、 is not valid in an identifier
225 | wが大きい要素をhが小さいプロジェクトにapplyし、それでv/hがもっと最適になるような操作列も存在することを考える
| ^
Main.cpp:228:1: error: extended character 、 is not valid in an identifier
228 | 使えないなら使えないで、別のプロジェクトに対してapplyしたい
| ^
Main.cpp:229:1: error: extended character 、 is not valid in an identifier
229 | 所持金が0に近くなると、p = 8 w = 50 のカードを買えなかったりして、これは損すぎるので、
| ^
Main.cpp:229:37: error: extended character 、 is not valid in an identifier
229 | 所持金が0に近くなると、p = 8 w = 50 のカードを買えなかったりして、これは損すぎるので、
| ^
Main.cpp:229:37: error: extended character 、 is not valid in an identifier
Main.cpp:230:1: error: extended character 、 is not valid in an identifier
230 | できれば手元にある労働カードは即使用して、所持金に変換したい
| ^
Main.cpp:234:1: error: extended character 、 is not valid in an identifier
234 | ・モンテカルロは回数がすくなすぎて改善できるか際どいのに、実装量が多いため、あんまりしたくない(あと1日しかないし)
| ^
Main.cpp:234:1: error: extended character 、 is not valid in an identifier
Main.cpp:236:1: error: extended character 、 is not valid in an identifier
236 | そもそも、できる操作はカードを選ぶ・カードを使用するの二種類のみなので、この二つについて考察を深めよう
| ^
Main.cpp:236:1: error: extended character 、 is not valid in an identifier
Main.cpp:238:1: error: extended character is not valid in an identifier
238 | ・最も優先的に使いたいのは増資カードで、ストックする意味がなく、手元にあるならば使用することでメリットしかない
| ^
Main.cpp:238:1: error: extended character 、 is not valid in an identifier
Main.cpp:238:1: error: extended character 、 is not valid in an identifier
Main.cpp:240:1: error: extended character is not valid in an identifier
240 | ・まず絶対に優先したいのは増資カードで、出現が稀なためすぐに買いたい
| ^
Main.cpp:240:1: error: extended character 、 is not valid in an identifier
Main.cpp:241:1: error: extended character is not valid in an identifier
241 | ・次に、ストックできるならストックしたいものは、業務転換カード
| ^
Main.cpp:241:1: error: extended character 、 is not valid in an identifier
Main.cpp:241:1: error: extended character 、 is not valid in an identifier
Main.cpp:242:1: error: extended character is not valid in an identifier
242 | ・通常労働カードも良い物はストックしたい
| ^
Main.cpp:243:1: error: extended character is not valid in an identifier
243 | ・キャンセルカードはそもそも、今すぐに使用したいという場面が少なく、買える時に効果的に使えるなら買うのが適切に見える
| ^
Main.cpp:243:1: error: extended character 、 is not valid in an identifier
Main.cpp:243:1: error: extended character 、 is not valid in an identifier
Main.cpp:245:1: error: extended character 、 is not valid in an identifier
245 | wを無駄にしないように改善しようとしたが、スコアが下がってしまった……
| ^
Main.cpp:245:1: error: extended character … is not valid in an identifier
Main.cpp:245:1: error: extended character … is not valid in an identifier
Main.cpp:246:1: error: extended character 、 is not valid in an identifier
246 | どうやら、例え無駄が発生したとしても、目先の効率のよいプロジェクトを素早く完了させた方が良いらしい
| ^
Main.cpp:246:1: error: extended character 、 is not valid in an identifier
Main.cpp:252:1: error: extended character … is not valid in an identifier
252 | 幅を増やしたモンテカルロするぐらいしか……なにか思い浮かべ!
| ^
Main.cpp:252:1: error: extended character … is not valid in an identifier
Main.cpp:256:1: error: extended character … is not valid in an identifier
256 | しかし貪欲書いて終わりか……
| ^
Main.cpp:256:1: error: extended character … is not valid in an identifier
Main.cpp:258:1: error: extended character 、 is not valid in an identifier
258 | 制限時間的にモンテカルロしても、その遷移が本当に良いのかを判定できるような精度を出せなさそうだし
| ^
Main.cpp:263:1: error: extended character 、 is not valid in an identifier
263 | 例えば、v-hを評価に含めるのではなく、現状の手札のwを全てapplyしたときの獲得vで評価する、みたいな。
| ^
Main.cpp:263:11: error: extended character 、 is not valid in an identifier
263 | 例えば、v-hを評価に含めるのではなく、現状の手札のwを全てapplyしたときの獲得vで評価する、みたいな。
| ^
Main.cpp:263:11: error: extended character 、 is not valid in an identifier
Main.cpp:263:11: error: extended character 。 is not valid in an identifier
Main.cpp:264:1: error: extended character 。 is not valid in an identifier
264 | bitdpを使えばかなり高速に計算できるし。2^7 * 7ぐらい。
| ^
Main.cpp:264:46: error: extended character 。 is not valid in an identifier
264 | bitdpを使えばかなり高速に計算できるし。2^7 * 7ぐらい。
| ^
Main.cpp:267:1: error: extended character 、 is not valid in an identifier
267 | というのも、invest = 0で固定した状態だと、各テストケースで得られる金額はせいぜいが4000~10000程度なのである
| ^
Main.cpp:267:22: error: extended character 、 is not valid in an identifier
267 | というのも、invest = 0で固定した状態だと、各テストケースで得られる金額はせいぜいが4000~10000程度なのである
| ^
Main.cpp:268:1: error: extended character 、 is not valid in an identifier
268 | これはつまり、investを1000支払って買うというのは、investの上限を自ら4~10回に制限するようなものだ、とも言える
| ^
Main.cpp:268:1: error: extended character 、 is not valid in an identifier
Main.cpp:268:71: error: extended character 、 is not valid in an identifier
268 | これはつまり、investを1000支払って買うというのは、investの上限を自ら4~10回に制限するようなものだ、とも言える
| ^
Main.cpp:269:1: error: extended character 、 is not valid in an identifier
269 | かといって出現率が低すぎてinvestできなくても困るので、迷うところ
| ^
Main.cpp:270:1: error: extended character 、 is not valid in an identifier
270 | まあいろいろ弄ってみるか、伸びるかもしれないし。
| ^
Main.cpp:270:1: error: extended character 。 is not valid in an identifier
Main.cpp:272:12: error: invalid digit "9" in octal constant
272 | 22,556,193,009 点が取れた
| ^~~
Main.cpp:274:1: error: extended character 、 is not valid in an identifier
274 | この制限のラインを色々弄れば、スコアがさらに伸びるかもしれない!
| ^
Main.cpp:275:1: error: extended character is not valid in an identifier
275 | 残弾が増やせて嬉しい嬉しい嬉しい 投げて上がるかは運次第
| ^
Main.cpp:276:1: error: extended character 、 is not valid in an identifier
276 | つまり、やるべきことは、invest購入のタイミング・価格の調整
| ^
Main.cpp:276:1: error: extended character 、 is not valid in an identifier
Main.cpp:277:1: error: extended character 、 is not valid in an identifier
277 | investが大量に出るなら安くしたいし、investが出ないなら高くても買いたい
| ^
Main.cpp:278:1: error: extended character 、 is not valid in an identifier
278 | より具体的には、出現率が21,11,11,6,4 (investの基本出現率は7.547%)
| ^
Main.cpp:280:23: error: extended character 、 is not valid in an identifier
280 | カードの販売種類数kと,investカードの出現率を元に、購入できるinvestカードの価格の上限を決める、ということをしようと思う
| ^
Main.cpp:280:23: error: extended character 、 is not valid in an identifier
Main.cpp:290:1: error: extended character 、 is not valid in an identifier
290 | という期待をしていたが、ふつうに抜かされる
| ^
Main.cpp:292:1: error: extended character 、 is not valid in an identifier
292 | ところで、得点と順位表得点が割と相関しているので、手元で100ケース回してスコア判定したほうが良いかな?
| ^
Main.cpp:292:1: error: extended character 、 is not valid in an identifier
Main.cpp:296:1: error: extended character 、 is not valid in an identifier
296 | 実行時間が軽めな貪欲を採用したこともあり、
| ^
Main.cpp:297:1: error: extended character 、 is not valid in an identifier
297 | 100ケーステストをそこそこ早く実行できるので、いろいろパラメーターをいじってみる事にする
| ^
Main.cpp:298:1: error: extended character 、 is not valid in an identifier
298 | ということで改善したものを提出したら、得点がかなり下がった まじか
| ^
Main.cpp:298:1: error: extended character is not valid in an identifier
Main.cpp:299:1: error: extended character 、 is not valid in an identifier
299 | 手元の100ケースを信じるべきか、本番50ケースを信じるべきか
| ^
Main.cpp:302:1: error: extended character 、 is not valid in an identifier
302 | 順位表の得点ではなく、手元の得点の最大化を優先することにする
| ^
Main.cpp:307:1: error: extended character 、 is not valid in an identifier
307 | 何をしたって改善できないぐらいパラメーターを調整できた気がするが、上位との差が4倍なのでそうでもない気もする
| ^
Main.cpp:309:1: error: extended character 、 is not valid in an identifier
309 | 爆弾を常に1枚持っておくことで、少し改善できた
| ^
Main.cpp:313:1: error: extended character 、 is not valid in an identifier
313 | 1個あれば十分で、それ以上は過剰なようだ
| ^
Main.cpp:315:1: error: extended character 、 is not valid in an identifier
315 | 労働カードは沢山持っておきたいけど、すぐに使いたい
| ^
Main.cpp:316:1: error: extended character 、 is not valid in an identifier
316 | キャンセルカードは持ちたくない、爆弾で良い
| ^
Main.cpp:317:1: error: extended character … is not valid in an identifier
317 | 全力労働カードは……全力労働カードか
| ^
Main.cpp:317:1: error: extended character … is not valid in an identifier
Main.cpp:320:1: error: extended character 、 is not valid in an identifier
320 | 潜伏勢が提出を行い始め、順位がどんどん下がっていく
| ^
Main.cpp:322:1: error: extended character 、 is not valid in an identifier
322 | 全力労働カードを適切に扱うには、キャンセルカードを積極的に使わないとダメそう?
| ^
Main.cpp:323:1: error: extended character 、 is not valid in an identifier
323 | 全力労働カードを適切に盤面評価に組み込むことにより、+8%ぐらい改善!
| ^
Main.cpp:324:1: error: extended character 、 is not valid in an identifier
324 | しかし、提出での点数は下がった……
| ^
Main.cpp:324:1: error: extended character … is not valid in an identifier
Main.cpp:324:1: error: extended character … is not valid in an identifier
Main.cpp:327:1: error: extended character 、 is not valid in an identifier
327 | システスでWAやTLEを出さなければ、この手元のケースで改善できた部分がジワジワ効くはず(多分)
| ^
Main.cpp:332:1: error: extended character 、 is not valid in an identifier
332 | 改善はしているのに、やはり提出結果での得点は伸びない
| ^
Main.cpp:333:1: error: extended character 、 is not valid in an identifier
333 | 残り2時間だけど、さらに大きく伸ばせたりしなければ、これが最終提出
| ^
Main.cpp:333:1: error: extended character 、 is not valid in an identifier
Main.cpp:338:1: error: extended character 、 is not valid in an identifier
338 | いかにもモンテカルロっぽい見た目をしていたので、その実装に時間を費やすことを決定してしまい、
| ^
Main.cpp:338:1: error: extended character 、 is not valid in an identifier
Main.cpp:341:1: error: extended character 、 is not valid in an identifier
341 | 方針を貪欲に変えてからは、書き換えるたびに順位が上がり、気分的にかなり楽になった
| ^
Main.cpp:341:1: error: extended character 、 is not valid in an identifier
Main.cpp:342:1: error: extended character 、 is not valid in an identifier
342 | パラメーターを弄り続ける事で得点が上昇していったため、自動でパラメーター調整できる人が強かったのではないだろうか
| ^
Main.cpp:343:1: error: extended character 、 is not valid in an identifier
343 | もっと様々なパラメーターなどをいじれば、まだ得点を上げる余地はありそう
| ^
Main.cpp:345:1: error: extended character 、 is not valid in an identifier
345 | 今回の教訓というか今後の課題は、
| ^
Main.cpp:346:1: error: extended character 、 is not valid in an identifier
346 | 手元で1000ケースぐらいを回して、スコアの合計や平均改善率などを簡単に取得できるようにしたり、
| ^
Main.cpp:346:1: error: extended character 、 is not valid in an identifier
Main.cpp:1:1: error: expected unqualified-id before numeric constant
1 | 12/22
| ^~