接着剤の精進日記

競プロでの精進や研究に関係したことを書いていきます。

AtCoder 第6回 ドワンゴからの挑戦状 予選

数学色強めな印象のドワンゴからの挑戦状
問題を開く、コードを書く、提出AC(ここまで2分)
残り約2時間椅子を温めて終わり、虚無だね
f:id:tkm-kyudo:20200112165542p:plain

A - Falling Asleep

問題の読解が若干辛くてウってなった
問題文を睨むと文字列Xが出てきた後の総和を求めるだけとわかるので書くとAC
こどふぉバチャやりまくったおかげかこういうの通すスピード早くなった気がする
提出コード

int main(){
    cin.tie(0);
    ios::sync_with_stdio(false);
    int N;
    cin >> N;
    vector<string> S(N);
    vector<int> t(N);
    REP(i,N) cin >> S[i] >> t[i];
    string X;
    cin >> X;
    ll ans = 0;
    bool ok = false;
    REP(i,N){
        if(S[i] == X){
            ok = true;
            continue;
        }
        if(ok) ans += t[i];
    }
    cout << ans << endl;
}

B - Fusing Slimes

な に こ れ 笑
問題文をぐっと睨むと、結局求めたいのはスライムを各頂点と置いて1~N-1の頂点をすべて通って最後に頂点Nにたどり着く経路長の総和とわかる
ここから手元で実験をするも法則性がよく見えずある頂点からある頂点に行く経路数どうやって出すんだと唸っていた
終わった後に解説とかTLを見ると、各経路を何回通るか求めればいいらしい(天才)
実験すると調和級数が出てくるらしい(天才)
まだ通してないのでちゃんと通しておきます

おわりに

企業コンのこういう配点は早解き勝負になりがちだね
ちゃんとB通せるようになると早解きでビクビクしなくて済むのでちゃんと解けるようにしようね…
Aしか解いてないのでいつも以上に中身がなくてごめんなさい