洛谷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. EAM资产管理系统应用趋势简述

    EAM资产管理系统应用趋势简述 随着各种企业对资产管理需求的不断增长,EAM市场也正在持续升温,对于石油.化工.煤炭.钢铁等流程化企业及其他资产密集型企业来说,设备占用了企业大量的成本,如何降低设备维 ...

  2. Pandas 中的遍历与并行处理

    使用 pandas 处理数据时,遍历和并行处理是比较常见的操作了本文总结了几种不同样式的操作和并行处理方法. 1. 准备示例数据 import pandas as pd import numpy as ...

  3. goto 无条件跳转

    0. 基本模型 goto 顾言思义,是跳转的意思. goto 后接一个标签,这个标签的意义是告诉 Go程序下一步要执行哪里的代码. 所以这个标签如何放置,放置在哪里,是 goto 里最需要注意的. g ...

  4. 刷题[WUSTCTF2020]朴实无华

    解题思路 打开是一个这样的页面,查看源码发现什么人间极乐bot,试试是不是robots.txt,查看发现类似flag文件,查看发现是假的flag,但是burp抓包后发现,返回的头部有信息 源码出来了, ...

  5. 神作!阿里首发并发编程神仙笔记,Github已星标92K

    Qzone 微信 神作!阿里首发并发编程神仙笔记,Github已星标92K JAVA超神编程 2020-09-23 21:04:06 JVM 无论什么级别的Java从业者,JVM都是进阶时必须迈过的坎 ...

  6. RabbitMQ小记(一)

    1.了解消息中间件 消息中间件,Message Queue Middleware,简称MQ,又称消息对列或消息对列中间件,利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式 ...

  7. LightningChart运行互动示例介绍

    LightningChart.NET完全由GPU加速,并且性能经过优化,可用于实时显示海量数据-超过10亿个数据点. LightningChart包括广泛的2D,高级3D,Polar,Smith,3D ...

  8. KEIL查看ARM-Cortex M架构soc的内核寄存器之 MSP

       参考下图stm32l475的参考手册: MSP指向地址基地址为0x20000000的内存处.参考STM32L475的memory map可知MSP指向的是SRAM的一块地址.并且由上面的编译信息 ...

  9. 为cmd中的命令添加别名,以解决java:错误: 编码 GBK 的不可映射字符 (0xAF)

    使用sublineText3编写了java代码,通过cmd javac编译 提示 错误:编码GBK的不可映射字符 解决方法 使用javac -encoding UTF-8 Person.java 结果 ...

  10. 这一次,彻底理解JavaScript深拷贝

    导语 这一次,通过本文彻底理解JavaScript深拷贝! 阅读本文前可以先思考三个问题: JS世界里,数据是如何存储的? 深拷贝和浅拷贝的区别是什么? 如何写出一个真正合格的深拷贝? 本文会一步步解 ...