题意大概为有一个箱子被格成n+1部分,往箱子里随机放m个玩具,问各个部分最终各有几个玩具。
#include<iostream> #include<cstdio> #include<string.h> using namespace std; const int maxn=1<<13; struct LINE { int x_1,y_1,x_2,y_2; }line[maxn]; int point[maxn][2]; bool judge(int x1,int y1,int x0,int y0,int x2,int y2) { int p=(x1-x0)*(y2-y0)-(x2-x0)*(y1-y0); if(p<0) return true; return false; } int main() { //freopen("test.txt","r",stdin); int n,m,x1,y1,x2,y2; while(scanf("%d%d%d%d%d%d",&n,&m,&x1,&y1,&x2,&y2),n) { int i,j; for(i=0;i<n;i++) { scanf("%d%d",&line[i].x_1,&line[i].x_2); line[i].y_1=y1,line[i].y_2=y2; } line[n].x_1=x2,line[n].y_1=y1; line[n].x_2=x2,line[n].y_2=y2; for(i=1;i<=m;i++) { scanf("%d%d",&point[i][0],&point[i][1]); } int ans[maxn]; memset(ans,0,sizeof(ans)); for(i=1;i<=m;i++) { for(j=0;j<=n;j++) { if(judge(point[i][0],point[i][1],line[j].x_2,line[j].y_2, line[j].x_1,line[j].y_1)) { ans[j]++; break; } } } for(i=0;i<=n;i++) printf("%d: %d\n",i,ans[i]); printf("\n"); } return 0; }