久々に好成績だったので書くよ!(といっても2完だが)
A
"やるだけ"だと思っていた問題。
関数の定義間違えててバグってしまって「てこずったなー」と思ってたら、提出した時42人くらいしか出してなくてビビった。
正直に言うと、適当に文章の冒頭だけ見て解いたらテストケース一致したので提出したんです・・・。
ハックしてて初めて、「与えられるpでつくる順列で7コ以上x==f(x)になるようなものの数を求めよ」とかいう謎問題だったということに気づいた。
気づいても結局剰余演算なので順番に関わらず0か4!コ当てはまるので気にしませんでした。
解いてて数学的解法してる人も数人いたなーという印象。
冷静に考えればx%p=xが成り立つのってx < pの時しかないもんね・・。
コード、f(x)つくる必要ない。
int p1,p2,p3,p4,a,b; int f(int x){ return x%p1%p2%p3%p4; } int main(){ ios_base::sync_with_stdio(true); int n,m,ret=0; cin >> p1 >> p2 >> p3 >> p4 >> a >> b; for(int i=a;i<=b;i++){ if(f(i)==i){ ret++; } } cout << ret << endl; }
492 Pt.(4min) AC.
B
とりあえず読む。分配すればいいのか・・・。
小数やな→
→均一にする値決める二分探索やな
→減衰率k/100でa足りないってことは、a*100/(100-k)どっかで余ってりゃいいのか。
→じゃあO(n)でその値に全てを出来るかどうか判定できるな。
ということでやりました。84は二分探索の収束に十分であろう適当な定数。
先輩が誤差WA出してて悲しくなった(出力関数関係)。誤差恐いよ・・・。
(k=100のケースがあれば面白かった(小学生並の意見))
int n,k; vector<double> v; bool isable(double x){ double need = 0; double cur = 0; rep(i,n){ if(v[i] < x){ need += (x-v[i])/((100.0-k)/100); }else{ cur += (v[i]-x); } } return need < cur+EPS; } int main(){ ios_base::sync_with_stdio(true); cin >> n >> k; rep(i,n){ int a; cin >> a; v.push_back(a); } double l = 0 , r = 1000; rep(i,84){ double x = (l+r)/2; if(isable(x)){ l = x; }else{ r = x; } } printf("%.10lf\n",l); }
920 Pt.(20min AC)
C
C解く前にstandings見て、数十点しか違わないのに順位が60位くらい離れている現状を見て、
hackしたもんがちだと思ってひたすらA問題を見まくっていたけど誰も怪しいコード提出してなかったので、諦めて読んだ。
しかし、フロー系の問題(っぽそう)だったのですぐに閉じた。
D
木とか期待値とか恐いから読むのやめました。どうせ解けない。
E
読んですらない。
Hack
20分でBまで解き終わって、そこからひたすら100分くらいhack狙ってましたが、誰も誤ったコードを出していなくて悲しくなりました。
一人sortせずにnext_permutation()してる人がいたっぽいですが、他の人に先に撃墜されてしまいました。
結局うちの部屋のAは一人(FPCで書いててなぜかTLE?)だけシステムテスト落ちてるだけでした。必死に頑張ってたのに悲しい。まあC取り組んでても解けなかったでしょうがね・・・。
結果
Hackは出来ずじまいでしたが492+920=1412で151位でした。
今まで参加したdiv1の中では一番良い成績だったと思います!
レート:1697→1819(うれしい)
実力がないのにオレンジコーダーになってしまったので戸惑う。(むしろ緑でもおかしくないくらいの実力なのに)