BZOJ 2428 JZYZOJ1533 : [HAOI2006]均分数据 模拟退火 随机化
http://www.lydsy.com/JudgeOnline/problem.php?id=2428
http://172.20.6.3/Problem_Show.asp?id=1533
http://blog.csdn.net/qpswwww/article/details/44161053
本来用了看的博客里的srand想缩短时间不知道为什么wa了,在本校oj也挂了一组,但是不管是挂的数据在本地测,还是成组数据在本地测都是ac的。问了学长然后去掉了srand提高了次数,ac了。应该就是srand的锅,因为在bzoj上不去掉srand提高次数也是wa。
/**************************************************************
Problem: 2428
User: 137shoebills
Language: C++
Result: Accepted
Time:4884 ms
Memory:1304 kb
****************************************************************/ #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn=;
int n,m;
int a[maxn]={};
int org[maxn]={};
int sum[maxn]={};
double xa=,ans=;
void doit(){
memset(sum,,sizeof(sum));
for(int i=;i<=n;i++){
org[i]=rand()%m+;
sum[org[i]]+=a[i];
}
double cnt=,lcnt,T=;
for(int j=;j<=m;j++){
cnt+=((double)sum[j]-xa)*((double)sum[j]-xa);
}cnt/=(double)m;
while(T>0.1){//温度设定
T*=0.9;
int x=rand()%n+,y,mi=;//随机选一个数,最小和对应位置,最小和
if(T>)//温度高贪心温度低随机
for(int i=;i<=m;i++){if(mi>sum[i]){mi=sum[i];y=i;}}
else y=rand()%m+;
if(y==org[x]){continue;} sum[org[x]]-=a[x];sum[y]+=a[x];
lcnt=cnt;cnt=;//重新算方差
for(int j=;j<=m;j++){
cnt+=((double)sum[j]-xa)*((double)sum[j]-xa);
}cnt/=(double)m; if(cnt<lcnt)org[x]=y;
else if(rand()%>T)org[x]=y,cnt=lcnt;
else{
sum[org[x]]+=a[x];sum[y]-=a[x];
}
if(cnt<ans)ans=cnt;//更新答案
}
}
int main(){
//freopen("data.in","r",stdin);
//freopen("data.out","w",stdout);
scanf("%d%d",&n,&m);
//srand(20010123);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);xa+=a[i];
}xa/=(double)m;
for(int i=;i<=;i++)doit();
printf("%.2f\n",sqrt(ans));
return ;
}
BZOJ 2428 JZYZOJ1533 : [HAOI2006]均分数据 模拟退火 随机化的更多相关文章
- bzoj2428 [HAOI2006]均分数据 模拟退火
[HAOI2006]均分数据 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 3434 Solved: 1091[Submit][Status][Dis ...
- 洛谷P2503 [HAOI2006]均分数据(模拟退火)
题目描述 已知N个正整数:A1.A2.…….An .今要将它们分成M组,使得各组数据的数值和最平均,即各组的均方差最小.均方差公式如下: 输入输出格式 输入格式: 输入文件data.in包括: 第一行 ...
- BZOJ2428[HAOI2006]均分数据——模拟退火
题目描述 已知N个正整数:A1.A2.…….An .今要将它们分成M组,使得各组数据的数值和最平均,即各组的均方差最小.均方差公式如下: ,其中σ为均方差,是各组数据和的平均值,xi为第i组数据的数值 ...
- HAOI2006 均分数据 [模拟退火]
题目描述 已知N个正整数:A1.A2.--.An .今要将它们分成M组,使得各组数据的数值和最平均,即各组的均方差最小.均方差公式如下: 输入输出格式 输入格式: 输入文件data.in包括: 第一行 ...
- P2503 [HAOI2006]均分数据
P2503 [HAOI2006]均分数据 模拟退火+dp (不得不说,我今天欧气爆棚) 随机出1个数列,然后跑一遍dp统计 #include<iostream> #include<c ...
- bzoj 2428: [HAOI2006]均分数据 随机化
2428: [HAOI2006]均分数据 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...
- 洛谷 P2503 [HAOI2006]均分数据 随机化贪心
洛谷P2503 [HAOI2006]均分数据(随机化贪心) 现在来看这个题就是水题,但模拟赛时想了1个小时贪心,推了一堆结论,最后发现贪心做 不了, 又想了半个小时dp 发现dp好像也做不了,在随机化 ...
- bzoj2428: [HAOI2006]均分数据
模拟退火.挺好理解的.然后res打成了ans一直WA一直WA...!!!一定要注意嗷嗷嗷一定要注意嗷嗷嗷一定要注意嗷嗷嗷. 然后我就一直卡一直卡...发现最少1800次的时候就可以出解了.然后我就去调 ...
- bzoj 2428: [HAOI2006]均分数据 && bzoj 3680 : 吊打XXX 模拟退火
每次把元素随便扔随机一个初始解,退火时每次随机拿一个元素扔到随机一个集合里,当温度高时因为状态不稳定扔到那个元素和最小的里边. 如果新解优,更新ans. 把原式拆一下,就可以用int存了. bzoj ...
随机推荐
- 51nod 1073 约瑟夫环
题目链接 先说一下什么是约瑟夫环,转自:传送门 关于约瑟夫环问题,无论是用链表实现还是用数组实现都有一个共同点:要模拟整个游戏过程,不仅程序写起来比较烦,而且时间复杂度高达O(nm),当n,m非常大( ...
- spring boot 加载原理
spring boot quick start 在springBoot里面,很吸引的一个特征就是可以直接把应用打包成jar/war包形式.然后jar/war包可以直接运行的.不需要再配置web Ser ...
- xp,win7,win10系统安装GHO镜像下载
淘宝买的纯净版系统镜像 不含任何垃圾软件 极致纯净 链接:http://pan.baidu.com/s/1eR12db0 密码:opjm 链接:http://pan.baidu.com/s/1mhEN ...
- python基础===数据伪造模块faker
介绍文档: https://pypi.org/project/Faker/ https://faker.readthedocs.io/en/latest/ https://faker.readthed ...
- 使用 Xtrabackup 在线对MySQL做主从复制【转】
1. 说明 1.1 xtrabackup mysqldump对于导出10G以下的数据库或几个表,还是适用的,而且更快捷.一旦数据量达到100-500G,无论是对原库的压力还是导出的性能,mysqldu ...
- python魔法函数__dict__和__getattr__的妙用
python魔法函数__dict__和__getattr__的妙用 __dict__ __dict__是用来存储对象属性的一个字典,其键为属性名,值为属性的值. 既然__dict__是个字典那么我们就 ...
- 关于DataTable.Select不到数据的一种解决方案
网上有很多说的,试过,都没用.自己研究了一下,解决方案如下: 建立dataview,用dv.rowfilter,就可以取到了,然后TOTABLE即可. 代码如下:(只看中间那几句即可) private ...
- PGSql
http://www.yiibai.com/postgresql/ http://www.postgresql.org/ http://blog.csdn.net/wulex/article/deta ...
- SuSE Linux Supervisor的安装与使用案例
建议使用 root 管理员账户操作 1.安装工具 1.apache 2..Net Core(dotnet-sdk-2.0) 3.Supervisor(进程管理工具,目的是服务器一开机就启动服务器 ...
- syslog日志格式解析
在网上搜的文章,写的很全乎.摘抄如下,供大家参考学习 1.介绍 在Unix类操作系统上,syslog广泛应用于系统日志.syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog ...