1. 程式人生 > >紀念品分組

紀念品分組

problem 紀念 clu inline () ont href ron line

紀念品分組

難題不會做,只能來做這種簡單題
當年看起來無比難的題現在竟然如此簡單了
希望有一天能夠看現在的難題也很簡單吧.

  • 貪心
  • front 指向最前,rear 指向最後,如果 p[front]+p[rear] \(\leq\) w,則歸到一組,否則 p[front] 單獨一組
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN=3e4+5;
int p[MAXN];
int main()
{
    int w,n;
    scanf("%d",&w); 
    scanf("%d",&n);
    for(int i=1;i<=n;i++)scanf("%d",&p[i]);
    sort(p+1,p+n+1);
    int cnt=0,front=1,rear=n;
    while(front<=rear){
        if(front==rear){
            cnt++;
            break;
        }
        if(p[front]+p[rear]<=w){
            cnt++;
            front++;rear--;
        }
        else{
            cnt++;
            rear--;
        }
    }
    printf("%d",cnt);
    return 0;
}

紀念品分組