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
      | ^~