[HAOI2006]均分数据

[HAOI2006]均分数据
在这里插入图片描述

题解:

题目稍微解释一下:
把n个数以分为m组,计算每一组的和,求得到的这m个数的方差。由于分法是任意的,我们要求这些方差中的最小值
我们先用STL中的函数random_shuffle()用来对一个元素序列进行重新排序(随机的)
众所周知:如果每个组数的大小都相近的话,方差就越小
所以我们每次将第i个数加给当前数之和最小的那个组,这样操作可以使得在当前排列下,m组数最相近,也就是方差最小
循环个5e5次就够了,太多就会超时(5e6的话洛谷和牛客的机子都会超时)
貌似dp也可以做??

代码:

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
inline int read(){
   int s=0,w=1;
   char ch=getchar();
   while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
   while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();//s=(s<

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

牛客每日一题 文章被收录于专栏

记录牛客的每日一题

全部评论

相关推荐

zYvv:双一流加大加粗再标红,然后广投。主要是获奖荣誉不够,建议开始不用追求大厂,去别的厂子刷下实习。
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务