zoukankan      html  css  js  c++  java
  • 纪念品分组

    题目描述

    元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品, 并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。 

    你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。

    输入

    输入包含n+2行: 
    第1行包括一个整数w,为每组纪念品价格之和的上眼= 第2行为一个整数n,表示购来的纪念品的总件数G 
    第3-n+2行每行包含一个正整数Pi (5 <= Pi <= w3)w表示所对应纪念品的价格。 
    100%的数据满足: 1 <= n <= 30000, 80 <= W <= 200  

    输出

    仅1行,包含一个整数, ep最少的分组数目合

    样例输入

    100
    9
    90
    20
    20
    30
    50
    60
    70
    80
    90
    

    样例输出

    6
    按照从小到大排列,小的与大的匹配
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int MAX=30005;
     4 int n,w,a[MAX],ans=0;
     5 int main()
     6 {
     7     ios::sync_with_stdio(false);
     8     cin.tie(0);
     9 //    freopen("in.txt","r",stdin);
    10     cin>>w>>n;
    11     for(int i=0;i<n;i++)
    12         cin>>a[i];
    13     sort(a,a+n);
    14     int l=0,r=n-1;
    15     while(l<=r)
    16     {
    17         if(a[l]+a[r]<=w)
    18         {
    19             l++;
    20             r--;
    21             ans++;
    22         }
    23         else
    24         {
    25             r--;
    26             ans++;
    27         }
    28     }
    29     cout<<ans<<endl;
    30     return 0;
    31 }
    View Code
    如有错误,请指正,感谢!
  • 相关阅读:
    URAL——DFS找规律——Nudnik Photographer
    URAL1353——DP——Milliard Vasya's Function
    URAL1203——DPor贪心——Scientific Conference
    递推DP HDOJ 5389 Zero Escape
    区间DP UVA 1351 String Compression
    树形DP UVA 1292 Strategic game
    Manacher HDOJ 5371 Hotaru's problem
    同余模定理 HDOJ 5373 The shortest problem
    递推DP HDOJ 5375 Gray code
    最大子序列和 HDOJ 1003 Max Sum
  • 原文地址:https://www.cnblogs.com/scott527407973/p/9457042.html
Copyright © 2011-2022 走看看