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;
    } 
  • 相关阅读:
    高效并发服务器模型
    Linux下Wiki服务器的搭建
    Wiki程序PmWiki的安装和汉化
    Linux 套接字编程中的 5 个隐患
    IOCP简介
    IP协议详解之IP地址要领
    IP协议详解之配套协议:ARP, ICMP
    超级详细Tcpdump 的用法
    如何测试主机的MTU多大?
    Linux下Socket编程的端口问题( Bind error: Address already in use )
  • 原文地址:https://www.cnblogs.com/lyqlyq/p/7103468.html
Copyright © 2011-2022 走看看