BZOJ1121: [POI2008]激光发射器SZK
【传送门:BZOJ1121】
简要题意:
在一个平面直角坐标系中给出一个多边形,相邻边垂直且每条边与坐标轴平行,要求在所有顶点放置发射器或者接收器,每个发射器能发射光线,且方向为角平分线,可以在到达每条边后进行反射,每个接收器只能接受一个发射器的光线,求出最多能有多少对发射器和接收器
题解:
结论题
因为光线可逆,所以肯定不存在一个点同时被两个点射到,而且如果A能射到B,那么B也能射到A,所以答案就为n/2
参考代码:
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<cstdlib> using namespace std; int x[110000],y[110000]; int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d%d",&x[i],&y[i]); printf("%d\n",n/2); return 0; }
渺渺时空,茫茫人海,与君相遇,幸甚幸甚