24h購物| | PChome| 登入
2009-02-26 19:38:01| 人氣751| 回應0 | 上一篇 | 下一篇

2005 NPSC E. 聯立多元一次方程式

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

測資很大,1000*1000個數字,"同步"就會很重要!同步"有時候"會+快,看情況

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

#include<stdio.h>  
#include<stdlib.h>  
main()  
{  
 int t,n,maxflag;  
 double sum,max,m;
 while(scanf("%d",&t)==1)  
  {  
   int a,b,c,flag;  
   while(t--)
    {
     scanf("%d",&n);
     flag=1;
     int x[1000]={0};
     for(a=0;a<n;a++)
      {
       sum=0;max=-1;
       for(b=0;b<n;b++)
        {
         scanf("%lf",&m);
         if(m<0) m=m*-1;
         sum=sum+m;
         if(m>max)
          {
           max=m;
           maxflag=b;
          }
        }
       sum=sum-max;
       if(sum>=max) flag=0;
       if(flag!=0)
        {
         if(x[maxflag]!=0) flag=0;
         else x[maxflag]=1;
        }
      }
      if(flag!=0)
       printf("yes\n");
      else
       printf("no\n");
    }
  }  
 return 0;  
}

/*******************-**************************/

輸入很多 來個輸入優化吧!


#include<stdio.h>        
#include<stdlib.h>
double point()
{
  char cha;
  double poi=0,num=1;
    while(cha=getchar())   
    {  
     if(cha==' '||cha=='\n') break;  
     num=num/10;
     poi=poi+(cha-48)*num;
    }  
    return poi;
}        
double input()  
{  
  char cha,flag=1;  
  double x=0;  
  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;  
     if(cha=='.')
      {
        x=x+point();
        break;
      }
       x=x*10+cha-48; 
    }  
    return x*flag;
}   
main()     
{     
 int t,n,maxflag;     
 double sum,max,m;  
 while(scanf("%d",&t)==1)     
  {     
   int a,b,c,flag;     
   while(t--)  
    {  
     scanf("%d",&n);  
     flag=1;  
     int x[1000]={0};  
     for(a=0;a<n;a++)  
      {  
       sum=0;max=-1;  
       for(b=0;b<n;b++)  
        {  
         m=input(); 
         if(m<0) m=m*-1;  
         sum=sum+m;  
         if(m>max)  
          {  
           max=m;  
           maxflag=b;  
          }  
        }  
       sum=sum-max;  
       if(sum>=max) flag=0;  
       if(flag!=0)  
        {  
         if(x[maxflag]!=0) flag=0;  
         else x[maxflag]=1;   
        }  
      }  
      if(flag!=0)  
       printf("yes\n");  
      else 
       printf("no\n");   
    }  
  }     
 return 0;     
}
  

台長: 來源不明
人氣(751) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: NPSC |
此分類下一篇:2007 NPSC E. 猜數字
此分類上一篇:2006 NPSC B. 幼稚

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