元旦快到了,校學生會讓樂樂負責新年晚會的紀念品發放工作。為使得參加晚會的同學所獲得的紀念品價值相對均衡,他要把購來的紀念品根據**進行分組,但每組最多只能包括兩件紀念品,並且每組紀念品的**之和不能超過乙個給定的整數。為了保證在盡量短的時間內發完所有紀念品,樂樂希望分組的數目最少。
你的任務是寫乙個程式,找出所有分組方案中分組數最少的一種,輸出最少的分組數目。
貪心,
每次將最小的和最大的合併,否則最大的單獨劃出
#include
using namespace std;
#define for(i,n) for(int i=1;i<=n;i++)
#define fork(i,k,n) for(int i=k;i<=n;i++)
#define rep(i,n) for(int i=0;i#define ford(i,n) for(int i=n;i;i--)
#define forkd(i,k,n) for(int i=n;i>=k;i--)
#define repd(i,n) for(int i=n;i>=0;i--)
#define forp(x) for(int p=pre[x];p;p=next[p])
#define forpiter(x) for(int &p=iter[x];p;p=next[p])
#define lson (o<<1)
#define rson ((o<<1)+1)
#define mem(a) memset(a,0,sizeof(a));
#define memi(a) memset(a,127,sizeof(a));
#define memi(a) memset(a,128,sizeof(a));
#define inf (2139062143)
#define f (100000007)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector
#define pi pair
#define si(a) ((a).size())
typedef long
long ll;
typedef unsigned long
long ull;
ll mul(ll a,ll b)
ll add(ll a,ll b)
ll sub(ll a,ll b)
void upd(ll &a,ll b)
int read()
while(isdigit(ch))
return x*f;
}int a[1000000];
int main()
else r--;
++ans;
}cout0;}
紀念品分組(貪心 排序)
貪心演算法 先對陣列從小到大排序,用i 0,j n 1指標指向首尾元素 如果 a i a j w 則將 a i 單獨作為一組,指標j 如果 a i a j w,則將 a i 和 a j 分為一組,指標i j 如此重複直到 取完 所有元素。元旦快到了,校學生會讓樂樂負責新年晚會的紀念品發放工作。為使得...
紀念品分組
問題描述 元旦快到了,校學生會讓樂樂負責新年晚會的紀念品發放工作。為使得參加晚會的同學所獲得的紀念品價值 相對均衡,他要把購來的紀念品根據 進行分組,但每組最多只能包括兩件紀念品,並且每組紀念品的 之和不能超過乙個給定的整數。為了保證在盡量短的時 間內發完所有紀念品,樂樂希望分組的數目最少。你的任務...
紀念品分組
time limit 1 sec memory limit 128 mb submit 4 solved 2 submit status web board 元旦快到了,校學生會讓樂樂負責新年晚會的紀念品發放工作。為使得參加晚會的同學所獲得 的紀念品價值相對均衡,他要把購來的紀念品根據 進行分組,但...