24h購物| | PChome| 登入
2009-03-08 23:59:05| 人氣415| 回應0 | 上一篇 | 下一篇

2007 NPSC E. 東方幻想鄉

推薦 0 收藏 0 轉貼0 訂閱站台

/***********************************************************/

#include<stdio.h>
#include<stdlib.h>
main()
{
    int n,t;
    long long int px,py,x,y,vx,vy;

    while(scanf("%d %d %d %d",&n,&t,&px,&py)==4&&n!=0)
    {
        int a,b,c,hit=0;
        for (a=0;a<n;a++)
        {
         scanf("%d %d %d %d",&x,&y,&vx,&vy);
         if(hit==1) continue;
         vx=x+t*vx;
         vy=y+t*vy;
         int x1=x,x2=vx,x3=px,y1=y,y2=vy,y3=py;
         if((x1-x2)*(y3-y1)==(x3-x1)*(y1-y2)&&((x3>=x1&&x3<=x2)||(x3>=x2&&x3<=x1))&&((y3<=y2&&y3>=y1)||(y3<=y1&&y3>=y2)))      
           hit=1;
        }
        if(hit==1) printf("true\n");
        else printf("false\n");
    }
    return 0;
}

/********************************/

輸入太多,來個優化輸入吧!

#include<stdio.h>
#include<stdlib.h>
int input()  
{  
  char cha;  
  int x=0,flag=1;  
  while(cha=getchar())  
     if(cha!=' '&&cha!='\n') break;  
   if(cha!='-')
       x=x*10+cha-48; 
   else flag=-1;  
  while(cha=getchar())   
    {  
     if(cha==' '||cha=='\n') break;  
      x=x*10+cha-48;  
    }  
    return x*flag;  
}
main()
{
    int n,t;
    long long int px,py,x,y,vx,vy;

    while(scanf("%d %d %d %d",&n,&t,&px,&py)==4&&n!=0)
    {
        int a,b,c,hit=0;
        for (a=0;a<n;a++)
        {
         x=input();
         y=input();
         vx=input();
         vy=input();
         if(hit==1) continue;
         vx=x+t*vx;
         vy=y+t*vy;
         int x1=x,x2=vx,x3=px,y1=y,y2=vy,y3=py;
         if((x1-x2)*(y3-y1)==(x3-x1)*(y1-y2)&&((x3>=x1&&x3<=x2)||(x3>=x2&&x3<=x1))&&((y3<=y2&&y3>=y1)||(y3<=y1&&y3>=y2)))      
           hit=1;
        }
        if(hit==1) printf("true\n");
        else printf("false\n");
    }
    return 0;
}

台長: 來源不明
人氣(415) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: NPSC |
此分類下一篇:2006 NPSC F. 費波那星
此分類上一篇:2007 NPSC D. MVP

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文