查看: 1600|回復: 0
打印 上一主題 下一主題

[POJ] 2318 - TOYS

[複製鏈接]

該用戶從未簽到

10

主題

32

帖子

163

積分

高一新生

Rank: 2

積分
163

台南一中資訊社新手達陣

跳轉到指定樓層
樓主
發表於 2014-4-30 08:07:48 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

趕快加入我們來參與討論吧!

您需要 登錄 才可以下載或查看,沒有帳號?加入我們

x
題目:http://poj.org/problem?id=2318
AC Code:http://ideone.com/gvN0dV

寒訓計算幾何題(說明待補)

Submission id:12499327 Status:AC
http://poj.org/status?result=0&user_id=Lucifer1998
#include <cstdio>
  • #include <cstring>

  • using namespace std;

  • struct data{
  •         double x,y;
  •         data(){}
  •         data(int _x,int _y): x(_x),y(_y){}
  •         data operator-(data a)const{return data(x - a.x , y - a.y);}
  •         data operator+(data a)const{return data(x + a.x , y + a.y);}
  •         bool operator^(data a)const{return x * a.y - y * a.x > 0;}
  • };

  • int n,m,lx,ly,rx,ry;
  • data d[7000];
  • int a[7000],b[7000],ans[7000];

  • int lower(data ask){
  •         int l = 0,r = n+1,mid;
  •         while(r - l >1){
  •                 mid  = (l+r)/2;
  •                 if(d[mid] ^ data(ask.x - b[mid], ask.y - ry))r = mid;
  •                 else l = mid;
  •         }
  •         return r;
  • }

  • int main(){
  •         while(~scanf("%d",&n),n){
  •                 scanf("%d%d%d%d%d",&m,&lx,&ly,&rx,&ry);
  •                 for(int i= 1;i<=n;++i){
  •                         scanf("%d%d",&a[i],&b[i]);
  •                         d[i] = data(a[i] - b[i] , ly - ry);
  •                 }
  •                 a[0] = b[0] = lx;
  •                 d[0] = data(0,ly-ry);
  •                 a[n+1] = b[n+1] = rx;
  •                 d[n+1] = data (0,ly - ry);
  •                 memset(ans,0,sizeof ans);
  •                 for(int i=0;i<m;++i){
  •                         int x,y;
  •                         scanf("%d%d",&x,&y);
  •                         ans[lower(data(x,y))]++;
  •                 }
  •                 for(int i=1;i<=n+1;++i){
  •                         printf("%d: %d\n",i-1,ans[i]);
  •                 }
  •                 puts("");
  •         }
  • }


  • 評分

    參與人數 1金幣 +3 收起 理由
    nam104 + 3

    查看全部評分

    回復

    使用道具 檢舉

    您需要登錄後才可以回帖 登入 | 加入我們

    本版積分規則

    快速回覆 返回頂部 返回列表