浏览器正能量网站免费图片,网上营销模式,邢台做网站推广找谁,wordpress官方手机客户端前言
题解上说#xff1a; 然而我的贪心不仅A了#xff0c;而且 反例也A了
自己的洛谷题解链接#xff1a;https://www.luogu.org/blog/user52918/solution-p2062 正题 大意
n个人#xff0c;每个人有一个要求a[i]表示他所在的队伍里不可以少于a[i]个人#xff0…前言
题解上说 然而我的贪心不仅A了而且 反例也A了
自己的洛谷题解链接https://www.luogu.org/blog/user52918/solution-p2062 正题 大意
n个人每个人有一个要求a[i]表示他所在的队伍里不可以少于a[i]个人然后可以分成求最大的队伍数量。 解题思路
贪心的思想就是尽量将要求大的人放在一起。所以我们要先排个序从大到小然后用一个now表示当前队列还需多少个人可以满足条件 初始代码 nowa[1];for (int i1;in;i){now--;if (!now){nowa[i];s;wfalse;}}
然后我们可以发现 8 1 2 4 5 5 5 5 5
这一组数据中我们会将4归入第二个队列导致第二个队列不成立所以我们需要进行优化该情况。如果我们发现将目前在队列里的的归入前一个队列会更优的话我们就可以直接改变now 代码
#includecstdio
#includealgorithm
using namespace std;
int n,a[1000001],now,s,maxs;
bool w;
bool cmp(int x,int y)
{return xy;
}
int main()
{scanf(%d,n);for (int i1;in;i)scanf(%d,a[i]);sort(a1,a1n,cmp);//排序wtrue;//第一个队列无法将之前的合并到前一个队列nowa[1];for (int i1;in;i){if (a[i]now!w)nowa[i];//发现更优情况now--;if (!now)//已经满足要求{nowa[i];s;wfalse;}}printf(%d,s);
}