Codeforces Beta Round #62

久々に好成績だったので書くよ!(といっても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の中では一番良い成績だったと思います!

レート:16971819(うれしい)


実力がないのにオレンジコーダーになってしまったので戸惑う。(むしろ緑でもおかしくないくらいの実力なのに)