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

    纪念品分组

    描述

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

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

    【限制】

    50%的数据满足: 1 <=n <= 15

    100%的数据满足: 1 <= n <= 30000, 80 <= W <= 200

    格式

    输入格式

    第1行包括一个整数w,为每组纪念品价格之和的上限= 第2行为一个整数n,表示购来的纪念品的总件数G

    第3-n+2行每行包含一个正整数Pi (5 <= Pi <= w3)w表示所对应纪念品的价格。

    输出格式

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

    样例1

    样例输入1

    100
    9
    90
    20
    20
    30
    50
    60
    70
    80
    90
    

    样例输出1

    6
    

    限制

    各个测试点1s

    来源

    Noip2007普及组第2题

    从两头向中间:

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<algorithm>
    
    using namespace std;
    const int N=30010;
    
    int a[N];
    int w,n;
    int r;
    int js=0;
    int answer=0;
    
    inline int read()
    {
        int x=0;char c=getchar();
        while(c<'0'||c>'9')c=getchar();
        while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();
        return x;
    } 
    
    bool cmp(int a,int b)
    {    return a>b;    }
    
    int main()
    {
        w=read();
        js=0;
        answer=0;
        n=read();
        r=n;
        for(int i=1;i<=n;i++)
            a[i]=read();
        sort(a+1,a+n+1,cmp);
        bool flag=1;
        for(int i=1;i<=n;i++)
        {
            int now=a[i];
            while(now+a[r]<=w)
            {
                if(i==r)
                {
                    printf("%d",answer+1);
                    return 0; 
                } 
                now+=a[r--];
                js++;
                if(js==n)
                {
                    printf("%d
    ",answer++);
                    return 0;
                }
            }
            js++;
            answer++;
            if(js==n)
                printf("%d
    ",answer);
        }
        return 0;
    } 
  • 相关阅读:
    Web APP开发技巧总结
    2015年 移动开发都有哪些热点?
    手机APP UI设计尺寸基础知识
    最新Android & iOS设计尺寸规范
    给iOS开发者的Android开发建议
    Android 应用开发推荐书单
    Android 你应该知道的学习资源 进阶之路贵在坚持
    一篇文章让你读懂iOS和Android的历史起源
    Android平台上最好的几款免费的代码编辑器
    Google 发布的15个 Android 性能优化典范
  • 原文地址:https://www.cnblogs.com/lyqlyq/p/7103468.html
Copyright © 2011-2022 走看看