洛谷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]均分数据 随机化贪心

洛谷 P2503 [HAOI2006]均分数据 随机化贪心的更多相关文章

  1. 洛谷P2503 [HAOI2006]均分数据(模拟退火)

    题目描述 已知N个正整数:A1.A2.…….An .今要将它们分成M组,使得各组数据的数值和最平均,即各组的均方差最小.均方差公式如下: 输入输出格式 输入格式: 输入文件data.in包括: 第一行 ...

  2. BZOJ.2428.[HAOI2006]均分数据(随机化贪心/模拟退火)

    题目链接 模拟退火: 模拟退火!每次随机一个位置加给sum[]最小的组. 参数真特么玄学啊..气的不想调了(其实就是想刷刷最优解) 如果用DP去算好像更准.. //832kb 428ms #inclu ...

  3. P2503 [HAOI2006]均分数据

    P2503 [HAOI2006]均分数据 模拟退火+dp (不得不说,我今天欧气爆棚) 随机出1个数列,然后跑一遍dp统计 #include<iostream> #include<c ...

  4. bzoj 2428: [HAOI2006]均分数据 随机化

    2428: [HAOI2006]均分数据 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...

  5. 洛谷 P2504 [HAOI2006]聪明的猴子

    洛谷 P2504 [HAOI2006]聪明的猴子 题目描述 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着,部分植物的树冠露在水 ...

  6. bzoj2428: [HAOI2006]均分数据

    模拟退火.挺好理解的.然后res打成了ans一直WA一直WA...!!!一定要注意嗷嗷嗷一定要注意嗷嗷嗷一定要注意嗷嗷嗷. 然后我就一直卡一直卡...发现最少1800次的时候就可以出解了.然后我就去调 ...

  7. bzoj2428 [HAOI2006]均分数据 模拟退火

    [HAOI2006]均分数据 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 3434  Solved: 1091[Submit][Status][Dis ...

  8. 洛谷P1120 小木棍 [数据加强版](搜索)

    洛谷P1120 小木棍 [数据加强版] 搜索+剪枝 [剪枝操作]:若某组拼接不成立,且此时 已拼接的长度为0 或 当前已拼接的长度与刚才枚举的长度之和为最终枚举的答案时,则可直接跳出循环.因为此时继续 ...

  9. 【洛谷p1031】均分纸牌

    [博客园的第一条随笔,值得纪念一下] 均分纸牌[传送门] 洛谷上的算法标签是 这道题是一道贪心题,过了四遍才过(蒟蒻有点废) 第一遍的时候考虑的非常少,只想到了求出平均数→求差值→从左往右加差值: 这 ...

随机推荐

  1. python常用sys模块

    sys.argv 命令行参数List,第一个元素是程序本身路径 sys.modules.keys() 返回所有已经导入的模块列表 sys.exc_info() 获取当前正在处理的异常类,exc_typ ...

  2. dubbo学习(五)注册中心zookeeper

    初识zookeeper 下载地址:https://archive.apache.org/dist/zookeeper/ 详细的ZooKeeper教程戳这里~ PS: 建议目前选择3.4的稳定版本进行使 ...

  3. kafka学习(一)初识kafka

    文章更新时间:2020/06/08 一.简介 定义:kafka是一个分布式,基于zookeeper协调的发布/订阅模式的消息系统,本质是一个MQ(消息队列Message Queue),主要用于大数据实 ...

  4. 使用SpringBoot的方式配置过滤器

    springboot 不存在web.xml 那么如何配置过滤器呢 springboot提供了一种方式 通过spring容器配置 @Bean public FilterRegistrationBean ...

  5. UGOPEN实现解析NX表达式

    UGOPEN函数UF_MODL_dissect_exp_string可以解析表达式,但是当表达式存在附注信息时,会将附注信息附加在 rhs_str上,例如: 这样,当单独获取附注信息时还需要拆分字符串 ...

  6. Java随谈(三)如何创建好一个对象?

    本文推荐阅读时间30分钟 大家都知道,在编写Java程序里,一般就是处理各种各样的对象,那么,你知道一共有多少种创建对象的方式吗? 希望大家能稍微思考一下再往下翻. 答案是4种 new 一个对象 反射 ...

  7. 图片压缩工具pngquant

    关于图片压缩的,之前看到一个imageOptim,用着不错,也挺好用的,直接打开要压缩的图片或者文件夹,唰唰唰的就开始压缩了,如下图 后来觉得不是很方面,还要打开软件,选择文件夹,然后就又研究了一下, ...

  8. python3-day1

    一.python的优缺点: 先看优点 Python的定位是"优雅"."明确"."简单",所以Python程序看上去总是简单易懂,初学者学Py ...

  9. Neo4j---性能优化

    不会项目管理的研发不是好loder(^_^ ^_^),开个玩笑,目的是想说项目管理很重要,研发同胞们需要重视.重视.重视(重要的事情说三遍).随着项目业务扩展,不再是停留在基本某一业务范围,海量数据接 ...

  10. 交互式甘特图组件VARCHART XGantt 如何在活动中标注非工作间隔

    甘特图从1998年的第一个商用版本开始就致力于计划编制和项目管理方面控件的研究和开发,经过20多年的积累和沉淀,目前可为软件开发商和最终用户提供最顶级的计划编制和项目管理的控件产品,帮助用户快速的整合 ...