码迷,mamicode.com
首页 > 其他好文 > 详细

CHDU2015个人校赛

时间:2016-04-16 00:35:50      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

题目链接:

草滩小王子与天行健

这个题主要分成四种情况讨论:

一荤一素,两荤两素,一素两荤,一荤两素。

因为不管是饭和汤,还是面条,都会对应上面四种情况,所以我把饭和汤,面条写的一个函数里。

详细见代码,请各位大神指教。----wzm

技术分享
 1 #include <iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 using namespace std;
 6 int a[15],b[15],c[15],d[15],e[15];
 7 int a1,b1,c1,d1,e1;
 8 int sum[5],ans,minn,maxn;
 9 void f(int s){//一饭一汤,面条
10     for(int x = 1; x<=a1; x++){
11         for(int y = 1; y<=b1; y++){
12             if((s+a[x]+b[y])>=minn&&(s+a[x]+b[y])<=maxn){
13                 ans++;
14             }
15         }
16     }
17     for(int z = 1; z<=c1; z++){
18         if((s+c[z])>=minn&&(s+c[z])<=maxn){
19             ans++;
20         }
21     }
22 }
23 void solve(){
24     int t;
25     scanf("%d",&t);
26     while(t--){
27         cin>>a1>>b1>>c1>>d1>>e1;
28         for(int i = 1; i<=a1; i++) cin>>a[i];
29         for(int i = 1; i<=b1; i++) cin>>b[i];
30         for(int i = 1; i<=c1; i++) cin>>c[i];
31         for(int i = 1; i<=d1; i++) cin>>d[i];
32         for(int i = 1; i<=e1; i++) cin>>e[i];
33         cin>>minn>>maxn;
34         ans = 0;
35         for(int i = 1; i<=d1; i++){//一荤一素
36             for(int j = 1; j<=e1; j++){
37                 {
38                     int s = d[i]+e[j];
39                     f(s);
40                 }
41             }
42         }
43         for(int i = 1; i<=d1; i++)//两荤两素
44         for(int j = i+1; j<=d1; j++){
45             for(int p = 1; p<=e1; p++){
46                 for(int q = p+1; q<=e1; q++){
47                     int s = d[i]+d[j]+e[p]+e[q];
48                     f(s);
49                 }
50             }
51         }
52         for(int i = 1; i<=d1; i++){//一荤两素
53             for(int p = 1; p<=e1; p++)
54                 for(int q = p+1; q<=e1; q++){
55                     int s = d[i]+e[p]+e[q];
56                     f(s);
57                 }
58         }
59         for(int p = 1; p<=e1; p++){//两荤一素
60             for(int i = 1;i<=d1; i++){
61                 for(int j = i+1; j<=d1; j++){
62                     int s = d[i]+d[j]+e[p];
63                     f(s);
64                 }
65             }
66         }
67         printf("%d\n",ans);
68     }
69 }
70 int main()
71 {
72     solve();
73     return 0;
74 }
wzm

 

 

 

 

 

 

 

 

 

~end~

CHDU2015个人校赛

标签:

原文地址:http://www.cnblogs.com/chdacm/p/5395063.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!