Jan.12th
注:黑粗体为超链接
做课件又做了一上午……然后课件被神犇们刚了一中午……还被阿掉了。今天真是美好的一天。
不想说话 先上图
非常感人。前面十几次全都是用自己的方法排序的,然后一直被卡精度。(FUCK CF)
然后看了别人的程序,发现有atan2这种函数,然后我就傻了。
atan2(y,x)返回坐标原点为起点,指向(x,y)的射线在坐标平面上与x轴正方向之间的角的角度。
C++ Code By WTRC
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
|
#include<cstdio>
#include<cstring> #include<algorithm> #include<cctype> #include<ctime> #include<cstdlib> #include<string> #include<queue> #include<cmath> #define Rep(x,a,b) for (int x=a;x<=b;x++) #define Per(x,a,b) for (int x=a;x>=b;x--) #define ll long long #define ld long double using namespace std; inline int IN(){ int x=0,ch=getchar(),f=1; while (!isdigit(ch)&&(ch!='-')&&(ch!=EOF)) ch=getchar(); if (ch=='-'){f=-1;ch=getchar();} while (isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();} return x*f; } int n; struct Vector{ int idx; ld FUCK_CF; bool operator <(const Vector&x)const{return FUCK_CF<x.FUCK_CF;} }a[100005]; int main(){ n=IN(); Rep(i,1,n){ a[i].idx=i; int x=IN(),y=IN(); a[i].FUCK_CF=atan2(1.0*y,1.0*x); } sort(a+1,a+n+1); int Ans1=a[1].idx,Ans2=a[n].idx; ld Min=a[1].FUCK_CF+2*acos(-1)-a[n].FUCK_CF; Rep(i,1,n-1){ ld Ang=a[i+1].FUCK_CF-a[i].FUCK_CF; if (Ang<Min) Min=Ang,Ans1=a[i].idx,Ans2=a[i+1].idx; } printf("%d %d\n",Ans1,Ans2); } |
SB题不解释