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

五彩烟花

时间:2015-05-07 18:18:55      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

Description

 

过年的时候大家都要放五彩缤纷的烟火。让我们来做一次烟火设计师。

我们有一共有n发烟火弹,一共有m支不同的烟火筒,每个烟火筒都有一个容量L[i],所有烟火筒的容量之和刚好等于烟火弹的数量,我们要把所有烟火弹分发到各个烟火筒中。每个烟火筒还有一个固定的弹射装置,它能产生一个固定的冲击力F[i],每发烟火弹i都有一个最低所需冲击力P[i],只有当烟火筒能提供的冲击力大于等于烟火弹的所需要的冲击力,烟火才能被发射、爆炸。每发烟火弹i成功发射爆炸以后会产生一个美感M[i],作为烟火设计师,我们要让烟火产生的美感总和最大。


 

Input

 

第一行为一个正整数T,表示数据组数

接下来T*5行,每5行为一组输入数据

对于每组数据:

第一行为两个正整数n,m

第二行为m个正整数,分别表示每支烟火筒的容量

第三行为m个正整数,分别表示每支烟火筒的冲击力

第四行为n个正整数,分别表示每发烟火弹所需的最低冲击力

第五行为n个正整数,分别表示每发烟火弹能产生的美感

 

Output

 

对于每组数据输出一个正整数,为最大的美感。

 

 

Sample Input

 

1
3 2
1 2
3 2
2 3 3
8 9 10

 

Sample Output

 

18

 

Hint


1<=n<=80000,1<=m<=n,1<=F[i],P[i],M[i]<=100000

技术分享

 1 #include<stdio.h>/*WAcode!*/
 2 #include<string.h>
 3 #include<algorithm>
 4 using namespace std;
 5 typedef struct
 6 {
 7     int volume;
 8     int chong_;
 9     int vol_;
10 }tong;
11 typedef struct
12 {
13     int chong;
14     int beauty;
15 }fire;
16 int temp1(fire M1,fire M2)
17 {
18     return M1.beauty>M2.beauty;
19 }
20 int temp2(tong M1,tong M2)
21 {
22     return M1.chong_<M2.chong_;
23 }
24 int main()
25 {
26     int T,m,n,i,j,k;/*m烟火筒数目,n烟火弹数目*/
27     scanf("%d",&T);
28     while(T--)
29     {
30         scanf("%d%d",&n,&m);
31         fire a[n];/*烟火弹*/
32         tong b[m];/*烟火筒*/
33         int Bsum=0;/*美感总和*/
34         memset(a,0,sizeof(a));
35         memset(b,0,sizeof(a));
36         for(i=0;i<m;i++)
37             scanf("%d",&b[i].volume);
38         for(i=0;i<m;i++)
39             scanf("%d",&b[i].chong_);
40         for(i=0;i<n;i++)
41             scanf("%d",&a[i].chong);
42         for(i=0;i<n;i++)
43             scanf("%d",&a[i].beauty);
44         sort(a,a+n,temp1);
45         sort(b,b+m,temp2);
46         for(i=0;i<n;i++)
47         {
48             for(j=0;j<m;j++)
49             {
50                 if((a[i].chong<=b[j].chong_)&&(b[j].volume>b[j].vol_))
51                 {
52                     b[j].vol_++;
53                     Bsum+=a[i].beauty;
54                     //printf("%d ",a[i].beauty);
55                     //printf("%d   %d  %d  %d\n",a[i].chong,b[j].chong_,j,b[j].vol_);
56                     break;
57                 }
58             
59             }
60             if(j==m)
61             {
62                 for(k=0;k<m;k++)
63                 {
64                     if(b[k].volume>b[k].vol_)
65                     {
66                         b[k].vol_++;
67                         break;
68                     }
69                 }
70             }
71         }
72         printf("%d\n",Bsum);    
73     }
74 }

 

五彩烟花

标签:

原文地址:http://www.cnblogs.com/a1225234/p/4485414.html

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