题目传送门

这道题可以用C++的random_shuffle屮过去。

random数列插入顺序,每次都插入数值和最小的那一组。

#include <cmath>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; int N,M,a[];
double ave,ans=2e9,t[]; double get()
{
double tot=;
memset(t,,sizeof t);
for(int i=;i<=N;i++){
int d,mx=2e9;
for(int j=;j<=M;j++)if(t[j]<mx)mx=t[j],d=j;
t[d]+=a[i];
}
for(int i=;i<=M;i++)
tot+=(ave-t[i])*(ave-t[i]);
return tot;
} int main()
{
srand();
scanf("%d%d",&N,&M);
for(int i=;i<=N;i++)scanf("%d",&a[i]),ave+=a[i];ave/=M;
for(int i=;i<=;i++){
random_shuffle(a+,a+N+);
ans=min(ans,get());
}
printf("%.2lf",sqrt(ans/M));
return ;
}

random_shuffle

这道题也可以用模拟退火。

设定一个初始温度,然后降温,降温的同时如果大于某个你设定的温度,即当前状态不稳定,进行贪心。

反之为稳定可以随机一个放到随机一个组里。

code:

#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std; int N,M,w[],S=;
double ans,res=2e9,t[],ave,a[]; void work(int x,int y)
{
t[w[x]]-=a[x];
t[y]+=a[x];
w[x]=y;
} double get()
{
double tot=;
for(int i=;i<=M;i++)
tot+=(ave-t[i])*(ave-t[i]);
return tot;
} int main()
{
scanf("%d%d",&N,&M);
for(int i=;i<=N;i++)
scanf("%lf",&a[i]),ave+=a[i];
ave/=M;
srand();
while(S--){
memset(t,,sizeof t);
memset(w,,sizeof w);
for(int i=;i<=N;i++)
t[w[i]=rand()%M+]+=a[i];
ans=get();
for(double Tempr=;Tempr>;Tempr*=0.812){
int x=rand()%N+,y=,bef;
if(Tempr<)y=rand()%M+;
else for(int i=;i<=M;i++)if(t[y]>t[i])y=i;
bef=w[x];
work(x,y);
double now=get();
if(now<ans||Tempr>rand()%)ans=now;
else work(x,bef);
}
res=min(res,ans);
}
printf("%.2lf",sqrt(res/M));
return ;
}

BZOJ2428_均分数据_KEY的更多相关文章

  1. bzoj2428: [HAOI2006]均分数据

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

  2. 【BZOJ2428】均分数据(模拟退火)

    [BZOJ2428]均分数据(模拟退火) 题面 BZOJ 题解 先说说黄学长的做法: 当温度比较高的时候,贪心 每次随机一个数,把他放进当前和最少的那一组里面 温度足够低的时候就完全随机然后转移 这样 ...

  3. BZOJ2428 均分数据

    2428: [HAOI2006]均分数据 Time Limit: 5 Sec  Memory Limit: 128 MB Description 已知N个正整数:A1.A2.…….An .今要将它们分 ...

  4. P2503 [HAOI2006]均分数据

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

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

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

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

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

  7. 洛谷 P2503 [HAOI2006]均分数据 随机化贪心

    洛谷P2503 [HAOI2006]均分数据(随机化贪心) 现在来看这个题就是水题,但模拟赛时想了1个小时贪心,推了一堆结论,最后发现贪心做 不了, 又想了半个小时dp 发现dp好像也做不了,在随机化 ...

  8. 【BZOJ2428】[HAOI2006]均分数据

    Description 已知N个正整数:A1.A2.…….An .今要将它们分成M组,使得各组数据的数值和最平均,即各组的均方差最小.均方差公式如下: ,其中σ为均方差,是各组数据和的平均值,xi为第 ...

  9. mycat使用之MySQL单库分表及均分数据

    转载自 https://blog.csdn.net/smilefyx/article/details/72810531 1.首先在Mycat官网下载安装包,这里就以最新的1.6版本为例,下载地址为:  ...

随机推荐

  1. Oracle EBS PO退货失败

    无法读取例程 &ROUTINE 中配置文件选项 INV_DEBUG_TRACE 的值. 系统-配置文件-地点层 INC%调试%踪 是 select *  from po_interface_e ...

  2. [SQL Server]利用索引改善sql语句

    很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解.比如: 1.select * from table1 where name=''z ...

  3. .net下log4net的使用

    这里以控制台应用程序为例 首先是要添加引用: 安装后可以看到项目中多了log4net的引用: 添加应用程序配置文件app.config,配置log4net <?xml version=" ...

  4. Linux file命令详解

    file: 查看文件类型 file常见命令参数 Usage: file [OPTION...] [FILE...] Determine type of FILEs. --help display th ...

  5. springmvc处理日期格式

    解决http400错误 通常有两个来源: 1 页面的下拉列表中传入了字符串,而服务器需要的是Integer类型的,所以服务器拒绝. 2, 浏览器传给服务器端的日期格式字符串,服务器端理解不了,所以需要 ...

  6. Java 的字符串,String、StringBuffer、StringBuilder 有什么区别?

    String 是 Java 语言非常基础和重要的类,提供了构造和管理字符串的各种基本逻辑.它是典型的 Immutable 类,被声明成为 final class,所有属性也都是 final 的.也由于 ...

  7. SPH算法(求最小代价树)

    一.sph算法简介 1.最小代价树算法 SPH算法也叫做MPH( minimum path heuristic)算法, 用于构造时延约束最算法小代价组播树. 该算法中每 个目的结点通过与当前组播树有最 ...

  8. 理解JVM——类加载机制

    我们在编写Java程序之后,会通过编译器得到一个class文件,这个class文件是如何与JVM进行配合的呢?类中的信息是如何变成JVM可以使用的Java类型呢?这些都是类加载机制做到的. 虚拟机把描 ...

  9. RAC with asm on AIX, ORA-01114 error,with "gipcretAuthFail (22) " in ocssd.log

    I/O Errors in Alert log with ORA-29701, with "gipcWait failed with 16" in trace (文档 ID 149 ...

  10. Hadoop学习之路(十三)MapReduce的初识

    MapReduce是什么 首先让我们来重温一下 hadoop 的四大组件: HDFS:分布式存储系统 MapReduce:分布式计算系统 YARN:hadoop 的资源调度系统 Common:以上三大 ...