洛谷P2503 [HAOI2006]均分数据(随机化贪心)

现在来看这个题就是水题,但模拟赛时想了1个小时贪心,推了一堆结论,最后发现贪心做

不了,

又想了半个小时dp 发现dp好像也做不了,在随机化贪心和模拟退火

选了模拟退火但写炸了。(我怎么这么水)。我们来看这个题,采取

随机化贪心,利用random_shuffle函数将所有数字不停随机

化,每次

随机化后贪心的取就可以,因为采取的是随机化贪心,所以贪心策略不必最优,我们用x数组去存

储每个位置的值,枚举每一个数字,将数字加到最小的位置即可,我们已知最小位置的值一定小

于品均数,所以加到最小位置是较优的。

放代码吧

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<cstdlib>
#include<ctime>
#include<algorithm>
using namespace std;
const int maxn=1e4;
int n,m;
int a[maxn];
int x[maxn];
double xl,ans=0x3f3f3f3f;
void slove(){
memset(x,0,sizeof(x));
for(int i=1;i<=n;i++){
int p=1;
for(int j=1;j<=m;j++){
if(x[j]<x[p])
p=j;
}
x[p]+=a[i];
}
double cnt=0;
for(int i=1;i<=m;i++){
cnt+=pow(xl-x[i],2);
}
cnt=cnt/(double)m;
ans=min(ans,cnt);
}
int main(){
// freopen("a.in","r",stdin);
scanf("%d%d",&n,&m);
double add=0;
for(int i=1;i<=n;i++){
cin>>a[i];
add+=a[i];
}
xl=add/m;
// cout<<xl<<endl;
int t=100000;
while(t--){
random_shuffle(a+1,a+1+n);
slove();
}
ans=sqrt(ans);
printf("%.2f",ans);
return 0;
}
```P2503 [HAOI2006]均分数据 随机化贪心

最新文章

  1. 一些css知识
  2. github基本操作
  3. 动态给drawable上色
  4. [问题2014S02] 解答
  5. LTE Module User Documentation(翻译2)——配置LTE MAC 调度器
  6. 团队开发-极速蜗牛-NABC模型
  7. Codeforces Beta Round #80 (Div. 1 Only) D. Time to Raid Cowavans 离线+分块
  8. 别在细节上栽跟头------------mysql 字段类型详解
  9. swift 点击button改变其内填充图片,达到选中的效果
  10. Orchard站点性能优化-预热
  11. JFileChooser
  12. win8.1 usb3 速度慢的解决方法
  13. mime.go
  14. 命令行程序增加 GUI 外壳
  15. javascript原型模式概念解读
  16. C++ 线性搜索算法演示的代码
  17. weui的icons示例
  18. 转帖 云和恩墨 http://www.eygle.com/archives/2015/06/sql_version_count.html
  19. 线段树||BZOJ1593: [Usaco2008 Feb]Hotel 旅馆||Luogu P2894 [USACO08FEB]酒店Hotel
  20. android:windowSoftInputMode属性;界面关闭后软键盘不隐藏的解决方法;

热门文章

  1. ribbon源码(4) 载均衡算法
  2. 趣图:当我修复一个隐藏Bug之后
  3. python自动保存百度网盘资源,一定要看
  4. RabbitMQ与Kafka选型对比
  5. spark 四种模式
  6. 推荐一款轻量小众却高效免费开源windows热键脚本语言Autohotkey
  7. Centos-对比文件差异-diff
  8. 从面向过程到面向对象再到MVC
  9. Jetson AGX Xavier/ubuntu查找文件
  10. The comparison between object and constructor