BNUOJ29376 沙漠之旅

來源:互聯網
上載者:User
                                                        沙漠之旅Time Limit: 1000msMemory Limit: 65536KB64-bit integer IO format:
%lld
     Java class name: Main           Prev              Submit              

Status              
Statistics              
Discuss              
Next                                                                                                 

“小胖要穿越一片沙漠,小胖開著一輛大吉普,小胖的吉普油耗高,吉普能放四桶油。”

這就是人人會唱的沙漠之歌~~體現了小胖拔群的聰明才智。

小胖的問題是這樣的:現在需要駕車穿越一片沙漠,總的行駛路程為L。小胖的吉普裝滿油能行駛X距離,同時其後備箱最多能放下四桶油。在起點有N種汽油,每種汽油都有無限桶,一桶能行駛距離Ai。現在小胖想知道:能不能恰好帶四桶油,再加上出發前裝滿的油,使得恰好能行駛L距離。

Input

第一行一個正整數T(1 <= T <= 50),表示資料的組數。

接下來T組資料,每組資料的第一行是三個整數L(1 <= L <= 1000),X(1 <= X <= L),N(1 <= N <= 1000)。

接下來N行,每行一個正整數Ai(1 <= Ai <= 1000),表示第i種汽油一桶能行駛的距離。

Output

對於每組資料輸出一行,若能輸出“Yes”,否則輸出“No”

Sample Input
120 9 223
Sample Output
Yes
Source 第十一屆北京師範大學程式設計競賽決賽            Author zhaoli

 

題目大意:解方程:ai1+ai2+ai3+ai4=l-x;

思路:枚舉兩兩之間的組合,10^6的時間效率,50組資料是可以過的,但是用map竟然會逾時,暈死.

還有一個小小的trick:就是尋找結果的時候,不必枚舉完所有10^6的組合,只需要枚舉1~l-x內的數即可,因為兩兩之間的組合+兩兩之間的組合必定要等於l-x才是結果

AC Program:

#include<stdio.h> #include<string.h> #include<map> using namespace std;int a[1005];int mm[2100];int main(){    int test;  scanf("%d",&test);  while(test--){                int l,x,n;      scanf("%d%d%d",&l,&x,&n);      for(int i=0;i<n;i++){          scanf("%d",&a[i]);                      }                              //map<int,int>mm;      memset(mm,0,sizeof(mm));                              //int kg=0;      int tmp;      for(int i=0;i<n;i++){        for(int j=0;j<n;j++){                            //sum[kg]=a[i]+a[j];            tmp=a[i]+a[j];                                        //mm[tmp]=1;            mm[tmp]=1;                             //kg++;        }                 }                             //sort(sum,sum+kg);      int flag=0;      int t=l-x;      for(int i=1;i<t;i++){                                 //if(sum[i]>t)break;                                //if(mm[t-sum[i]]==1){          if(mm[i] && mm[t-i]){              printf("Yes\n");                                 //goto end;                              flag=1;             break;          }          }       if(!flag)      printf("No\n");                                  //end:;  }  //system("pause");  return 0;}

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.