atcoder.jp
参加したのでその勢いでメモ。
結果をしてはA、Bが解けて4169/5155位。CがTLE、DがWAでE、Fは読めず。
前回はABC解けて2724/5392位(unratedだったけど)だったので残念な結果に。ちょっと出来なさすぎてストレスに。。これコンテスト後も提出できるようなので、後でC,Dくらいはリトライしたいところ。
まずAとBは簡単だったので割愛。
Cはサンプルの動作はOKでしたが、愚直に実装したからかテストケースのうち3つがTLE(時間超過)となりNG。vectorからのeraseを調べて早いといわれる方法に変えてみたりしましたが改善せず。最後は時間切れに。多分、判定処理をもっと簡単なやり方でやるべきぽい(最小・最大との比較だけで十分。Lの最大>Rの最小の時注意だけど)。あと、repマクロとかimos法って何?TODO:あとで調べる
問題のD。これは問題を理解仕切れなかったぽいです。例えば入力例2だけど、A配列が「1 8 5 7 100 4 52 33 13 5」に対して、J=2(B=4、C=30)の時、「4」つのカードの数字をすべて「30」に置き換える(30未満の数字が4つ以上あるので)ので、「30 8 30 7 100 30 52 33 13 30」で333になると思ったんですが、出力例は338でした。
解説動画見ても分からなったんですが、これJがすべてのパターンについてカード入れ替えてよいという事だったということで理解ができました。日本語が理解できてなかったぽいです。残念。
あと他の人の提出が見てるので参考になる。少ないコード長で解いた人も凄いけど、少ない実行時間でやってる人がまた凄い。Cで一番短い人のコードはこんな感じ。
#include<bits/stdc++.h> using namespace std; int main(){ int n,m; cin>>n>>m; int x=1,y=n; for(int i=0;i<m;i++){ int a,b; cin>>a>>b; x=max(x,a); y=min(y,b); } cout<<max(y-x+1,0); }
あと実行時間が短い人のを試しに一つ見たら、いきなり以下のようなコードで始まってて意味不明だった。あとで調べよう…
#ifdef LOCAL #pragma GCC optimize ("O0") #else #pragma GCC optimize ("O3") #endif #include <bits/stdc++.h>
明日も開催されますが、旅行先の宿に居るので参加不可なので、また次があればトライしたいです。
疲れた…