CF——Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017)

[C. Five Dimensional Points](http://codeforces.com/contest/851/problem/C)

1.2D時設原點爲好點,所以最多周圍有4個點,x,y正負軸上;3D時加2個(z軸),所以5D時最多周圍由10個點,加上本身,最多11點。當n > 11時,輸出0;
2.當n < 11 枚舉,0 < t = cos <= 1 時是壞點;

AC code ``` #include #include #include #include

double dx(int i,int j,int k)
{
return ((T[j].a-T[i].a)(T[k].a - T[i].a) + (T[j].b-T[i].b)(T[k].b-T[i].b)+(T[j].c-T[i].c)(T[k].c- T[i].c)+(T[j].d-T[i].d)(T[k].d-T[i].d) + (T[j].e-T[i].e)*(T[k].e-T[i].e));
}

int main()
{
int n;
cin >> n;
for(int i = 0; i < n; i++)
scanf("%d%d%d%d%d",&T[i].a,&T[i].b,&T[i].c,&T[i].d,&T[i].e);

if(n > 11) {cout << "0" << endl;return 0;}

for(int i = 0; i < n; i++)
{

	bool flag = false;   
	for(int j = 0; j < n; j++)
	{
		if(j == i) continue;
		for(int k = 0; k < n; k++)
		{  
			if(k == j || k == i) continue;
			double t = dx(i,j,k)/sqrt(dd(i,j)*dd(i,k));
			if(t <= 1 && t > 0)
			flag = true;
			if(flag)	break;
		}
		if(flag) break;	 	
	}
	if(flag)  continue;
	ans[s++] = i+1;
}

sort(ans,ans+s);
    cout << s << endl;
for(int i = 0; i < s; i++)
  printf("%d\n",ans[i]);
    return 0;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章