Codevs 1005 生日禮物

來源:互聯網
上載者:User

標籤:ace   問題   表達   body   log   span   blog   bre   input   

1005 生日禮物 時間限制: 1 s    空間限制: 128000 KB    題目等級 : 黃金 Gold題目描述 Description

       9月12日是小松的朋友小寒的生日。小松知道小寒特別喜歡蝴蝶,所以決定折蝴蝶作為給小寒的生日禮物。他來到了PK大學最大的一家地下超市,在超市裡,小松找到了n種可以用來摺紙的本子。每種類型的本子裡有若干不同顏色的紙若干張,當然同種類型的本子一定是完全一樣的,而不同種類型的本子不一定完全不一樣。他統計了一下,這裡總共有n種不同類型的可以用來摺紙的本子,每種本子各有bi本,所有的紙中有m種顏色是小寒所喜歡的顏色。小松希望他折的每種顏色的蝴蝶的數目是一樣的。換句話說,小松必須折m*k只蝴蝶,其中k代表每種顏色蝴蝶的數目,這個數由小松自己來決定。但是小松又不能浪費紙,也就是說他買的本子中,只要是小寒喜歡的顏色的紙都要被折成蝴蝶。於是問題來了,每種類型的本子應該各買多少本,才能折出這m*k只蝴蝶呢?當然,由於小松是個很懶的人,他希望折的蝴蝶數目越少越好,只要表達了心意就可以了(也就是不能1隻也不折)。而如果小松總共必須折1000隻以上的蝴蝶才能滿足要求,那麼他就寧願換一種禮物的方案了。

輸入描述 Input Description

       輸入的第一行包含2個整數n(1≤n≤8),m(1≤m≤10)。表示有n種不同類型的本子和m種小寒喜歡的顏色。接下來一個n*m的矩陣。第i行第j列的整數aij表示在第i種類型的本子中包含小寒喜歡的顏色j的紙有aij(1≤aij≤100)張。再接下來的一排n個整數b1到bn,表示每種顏色的本子在超市中有多少本(1≤bi≤5)。

輸出描述 Output Description

       輸出包含一個整數,表示小松最少需要折的蝴蝶數目,如果該數目超過1000,則輸出”alternative!”。(由於可能存在多種買本子的方案,所以這裡就不要求輸出具體方案了)

範例輸入 Sample Input

2 3

2 1 2

4 8 4

5 5

範例輸出 Sample Output

36

 1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 int a[10][12],f[12],sum[12],lim=1001;//限制邊界次數 題目要求不超過1000  5 int n,m; 6 void dfs(int s){ 7     for(int i=0;i<=f[s];i++){ 8         for(int k=1;k<=m;k++) 9             sum[k]+=a[s][k]*i;//每種顏色的本子的數目;10         if(s<n) dfs(s+1);11         else{12             int flag=0;13             for(int k=2;k<=m;k++){14                 if(sum[k]!=sum[k-1]){15                     flag=1;break;16                 }17             }18             if(!flag)//每種顏色的本子的數目都一樣 sum[1..n]都可以 19                 if(sum[1]*m<lim&&sum[1]>0)20                     lim=min(lim,sum[1]*m);21         }22         for(int k=1;k<=m;k++)//回溯 23             sum[k]-=a[s][k]*i;24     }25 }26 int main(){27     scanf("%d%d",&n,&m);28     for(int i=1;i<=n;i++)//第i行第j列的整數aij表示在第i種類型的本子中包含小寒喜歡的顏色j的紙有aij(1≤aij≤100)張29         for(int j=1;j<=m;j++)30             scanf("%d",&a[i][j]);31     for(int i=1;i<=n;i++)//本子數目 32         scanf("%d",f+i);33     dfs(1);//從第一本開始搜 34     if(lim<=1000) printf("%d\n",lim);35     else printf("alternative!\n");36     return 0;37 }

 

Codevs 1005 生日禮物

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.