题目描述:
小 Z 喜欢搭积木。小 Z 一共有 n 块积木,并且积木只能竖着一块一块的摞,可以摞多列。小 Z 的积木都是智能积木,第 i 块积木有一个情绪值 Xi。当摞在该积木上面积木总数超过 Xi 时,i 号积木就会不高兴。小 Z 情商这么高,肯定不希望有积木不高兴。但是他又希望每块积木都被用上,并且摞的积木列的总数最少。你能帮帮萌萌的小 Z 吗?
解题思路:
既然希望每块积木都被用上,那自然是能用的都用上,我们可以想到用贪心来解决这道题。
首先按照情绪值从小到大排序,将小的放在大的上面,能放就放,如果不能再放了,就需要再开一列,最后累加列数就是要求的结果。
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
int n,a[5005],v[5005],ans,m;
int main(){