草体にぼ日記

だらだらと

2020年5月32日 日記

2020年 5月32日

まえがき

コンテストのオーバーフローの問題にムカついたので今日は5月32日です。 5月32日のぶんの記事を公開します。

投稿した後気づいたから付け足すけど、$なんか式$でいい感じにしてくれないのか えー

健康管理

何した

コンテストに出た

具体的に

今日解いた問題

ABC169-A Multiplication 1

[yarudake]

ABC169-B Multiplication 2

[いじめ,オーバーフロー]
…… 1e18を超えた時の判定がむずいので a[0] * a[1] * ... をnowっていう変数にとりあえず入れておく。
$$now * a[i] > 1e18$$ ってことは $ now > 1e18 / a[i] $(式変形)かぁ、って思ってそうしたら行けた。

オーバーフロー嫌い

ABC169-C Multiplication 3

[いじめ,オーバーフロー,小数]
なんか、よくわからないけどbを受け取って (B をDOUBLEで受け取る)$ a * b $ を出力するだけだとエラーになるな ↓ $ a * (b * 100) / 100 $ これでもエラー(は???) b * 100 で壊れるらしい(ふざけるな)

仕方ないのでx.yzで与えられるbを string で受け取りました。
その後 100x + 10y + z としてint型のbを作成して、 $ a * b $ を出力して勝ちました(わけわからん。ふざけるなよ。俺は競プロerであってプログラマーじゃねえぞ。)

ABC169-D Div Game

[素因数]
$ z = pe $ っていうのがミソじゃね。知らんけど。 なんかまぁ、$N = 2 ^ 4 * 3 ^ 2 ( = 144) $ みたいな時, zは2,4,3,の3つが行けて(答えは3) Nは最終的には6 になってるんだけど、この時Nの素因数は2と3、1個ずつ使って6で割る!!!みたいなことは出来ない。
だからまぁ、$ N = a ^ x * b ^ y * c ^ z $みたいな形してるとき、xを1+2+3+...+kって感じで分割するのが良くて…みたいな感じでやってったら行けた。


でまぁ、a っていうのはvector<pair<int,int>> で、.firstに素因数, .secondにその素因数が何個あるかが格納サれてるから…こんな感じでやって…
( N <= 10 ^ 12), 1012って240ぐらいだから 1 + 2 + 3 + 4 + ... + k>= x ってなるkを見つけるループは全然重くない
なんかまぁ、ノリで伝われよ(投げやり)

for(auto x:a) {
        // xはpair型
        ll now = 0 ;
        for(int i = 1; i <= 50; i++){
            if (x.second >= now + i){
                ans ++;
                now += i;
            } else {
                break;
            }
        }
    }

ABC169-E Count Median

[中央値,最大化,最小化]
残り2分ぐらいで通せました(やったね)

なんかまぁ、さ、とりあえず考えることは 中央値として採用される値の範囲を求めろってことジャン(じゃん?)
で、値の数が偶数のときは、 x[n/2] x[n/2 + 1]の2つの値の平均が中央値じゃん…
だから、一回N=奇数の時を片付けよう。 N=奇数のとき
求めるのはx[n/2 + 1]の範囲

で、なんかよくわからないけどx[n/2 + 1]の最小はAをソート(小さい順)したときのA[n/2 + 1]で、最大はBをソートしたときのB[n/2+1]だった。
(もうなんか、なんでか知らないけどそうなったから良いや)

N = 偶数のとき
x[n/2]とx[n/2+1]の最小最大をそれぞれ求める(どうして俺が求められたのかはよくわからない)
でまぁ、 x[n/2]のmin,maxがそれぞれa, b
x[n/2+1]のmin,maxがそれぞれc,d とするじゃん(どうやって求めるのかは知らんけど), {3,5}の中央値って4じゃん
{1,7}の中央値も4じゃん。
これをどうやって同一視させてやるか迷うじゃん。
でまあ、天才にぼしは考えたんだよ。 ,a+c がx[n/2] + x[n/2+1]の最小で b + d がx[n/2] + x[n/2 + 1]の最大じゃん(ホゲーwww)つまり、a+c からb+d が中央値の2倍が取りうる値の範囲なんだよね 笑

ま、分かったふりして何も分かってないんだけどね。

あとがき

また月曜日がやってきたよ。誰も望んでないのに。

まぁ俺は望んでるんだけどね。

以下は毎回記事に貼っているテンプレート

基本的に読書はTwitterで絡みのある人だけだと思いますが、僕のブログだけ見てるって人もいるかもしれないので、一応自己紹介っぽいことをしている記事を貼っておきます - 瑞々しぃにぼしの自己紹介(自己紹介の記事です)