洛谷P2503 [HAOI2006]均分数据(模拟退火)
题目描述
已知N个正整数:A1、A2、……、An 。今要将它们分成M组,使得各组数据的数值和最平均,即各组的均方差最小。均方差公式如下:
输入输出格式
输入格式:
输入文件data.in包括:
第一行是两个整数,表示N,M的值(N是整数个数,M是要分成的组数)
第二行有N个整数,表示A1、A2、……、An。整数的范围是1--50。
(同一行的整数间用空格分开)
输出格式:
输出文件data.out包括一行,这一行只包含一个数,表示最小均方差的值(保留小数点后两位数字)。
输入输出样例
6 3 1 2 3 4 5 6
0.00
说明
样例解释:1和6、2和5、3和4分别为一组
【数据规模】
对于40%的数据,保证有K<=N <= 10,2<=K<=6
对于全部的数据,保证有K<=N <= 20,2<=K<=6
直接强上模拟退火
随机出每个位置在哪个地方
然后每次任意取出一个元素,加到最小的分组中
exp的设定就按套路来,用更新后的值减去之前的值
然后在BZOJ上T飞了
// luogu-judger-enable-o2 #include<cstdio> #include<cmath> #include<ctime> #include<cstdlib> #include<algorithm> #include<cstring> #define sqr(x) ((x)*(x)) const int MAXN = 31; const double eps = 1e-15; const int INF = 1e9 + 10; using namespace std; inline int read() {char c = getchar();int x = 0, f = 1;while(c < '0' || c > '9') {if(c == '-') f = -1;c = getchar();}while(c >= '0' && c <= '9') {x = x * 10 + c - '0';c = getchar();}return x * f; } int N, M; int belong[MAXN], a[MAXN]; double sum[MAXN], Aver = 0, Best = 1e20; void MoNiTuiHuo() {memset(sum, 0, sizeof(sum));const double DeltaT = 0.99;double ans = 0;for(int i = 1; i <= N; i++) belong[i] = rand() % M + 1, sum[ belong[i] ] += a[i];for(int i = 1; i <= M; i++) ans += sqr(sum[i] - Aver);for(double T = 10000; T > eps; T *= DeltaT) {int P = min_element(sum + 1, sum + M + 1) - sum;//找出最小的位置 int X = rand() % N + 1;//这里直接随机就可以 double Pre = ans;ans -= sqr(sum[ belong[X] ] - Aver) + sqr(sum[P] - Aver);sum[ belong[X] ] -= a[X]; sum[P] += a[X];ans += sqr(sum[ belong[X] ] - Aver) + sqr(sum[P] - Aver); if((ans < Pre) || (exp( (ans-Pre)/T ) * RAND_MAX < rand() )) belong[X] = P;//以一定概率接受最优解 else ans = Pre, sum[ belong[X] ] += a[X], sum[P] -= a[X]; //不更新 }if(ans < Best) Best = ans; } int main() {#ifdef WIN32freopen("a.in", "r", stdin);#endifsrand(19260817);N = read(); M = read();for(int i = 1; i <= N; i++) a[i] = read(), Aver += a[i];Aver /= M;for(int i = 1; i <= 1000; i++) MoNiTuiHuo();printf("%.2lf",sqrt(Best / M));//因为y=sqrt(x)这个函数具有单调性,所以最后在开根就可以 return 0; }
洛谷P2503 [HAOI2006]均分数据(模拟退火)相关推荐
- BZOJ2428[HAOI2006]均分数据——模拟退火
题目描述 已知N个正整数:A1.A2.--.An .今要将它们分成M组,使得各组数据的数值和最平均,即各组的均方差最小.均方差公式如下: ,其中σ为均方差,是各组数据和的平均值,xi为第i组数据的数值 ...
- [BZOJ2428] [HAOI2006]均分数据 模拟退火
我真是*了狗了 随机数种子被卡了 我也是醉了 什么给T分段什么的 做几万次模拟退火什么的 根本想不到啊QAQ 一晚上就被这些鬼模拟退火虐过去了 #include<cstdio> #incl ...
- 动态生成洛谷个人练习/估值数据
最近有人问我怎么才能动态生成洛谷个人练习/估值数据,下面给大家讲一下 首先打开Google Chrome浏览器,输入网址 http://luogu.wao3.cn/ 输入自己的洛谷UID 然后调试选项 ...
- BZOJ.2428.[HAOI2006]均分数据(随机化贪心/模拟退火)
题目链接 模拟退火: 模拟退火!每次随机一个位置加给sum[]最小的组. 参数真特么玄学啊..气的不想调了(其实就是想刷刷最优解) 如果用DP去算好像更准.. //832kb 428ms #inclu ...
- 洛谷——P2341 [HAOI2006]受欢迎的牛//POJ2186:Popular Cows
P2341 [HAOI2006]受欢迎的牛/POJ2186:Popular Cows 题目背景 本题测试数据已修复. 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所 ...
- 洛谷P2341 [HAOI2006]受欢迎的牛 (Tarjan,SCC缩点)
P2341 [HAOI2006]受欢迎的牛|[模板]强连通分量 https://www.luogu.org/problem/P2341 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就 ...
- [HAOI2006]均分数据
题解 今天下午刚学了模拟退火 借这个题来总结下模拟退火的要注意的问题吧 1 : \(eps\)不要设的太大 2 : 初温\(T\)在2000左右就差不多可以了 3 : 注意题目要求是要求最大值还是最小 ...
- 洛谷P2502:[HAOI2006]旅行
题目描述 Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N个景点(编号为1,2,3,-,N),这些景点被M条道路连接着,所有道路都是双向的,两个景点之间可能有多条道路.也 ...
- 洛谷 P2341 [HAOI2006]受欢迎的牛
题目 题目背景 本题测试数据已修复. 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的"喜欢" ...
最新文章
- 【算法】算法 第四版 练习题的解法
- linux安装jetty部署war包,jetty部署war包
- 惠普10亿美元锻造Helion云品牌
- js-ajax-04
- cubieboard 将linux debian 系统灌入Nand中的操作记录
- 无国界医生_如何在5分钟内创建无国界风格的技能树
- php分布式缓存系统 Memcached 入门
- requests模块爬取糗事百科用xpath解析
- BZOJ1096-[ZJOI2007]仓库建设
- php载入内存的是本地代码吗,常量和静态变量会先载入内存后在进行执行php代码...
- 【linux笔记】vi和vim编辑器,重定向输出,系统命令,进程,管道
- bigint hive java类型_【干货】Hive常用函数大全
- ROS Bridge 笔记(02)— carla_ros_bridge 功能包(准备 ROS环境、运行 ROS Bridge、配置 CARLA 参数、同步模式下使用 ROS Bridge、主车辆控制)
- 张一鸣宣布卸任字节跳动CEO!
- leetcode刷面试题(面试题08合集)
- 切比雪夫不等式例题讲解_14.初中数学:怎么求k的值?解一元一次不等式,基础常考题型...
- python正则表达式匹配数字和字母_只能输入数字和字母组合的正则表达式怎么写?...
- 两个常用的功能,将shp数据属性转成TXT和Excel
- 8核和16核服务器性能差异,intel再次科普:8核处理器玩游戏最好,16核真心没必要...
- 测U盘实际容量 (缩水U盘、扩容盘、假U盘)
热门文章
- SAP WM初阶之LX09查询TR List
- SAP QM QS41 试图维护Catalog为3的Code Group, 报错-You need to maintain catalog 3 (Usage Decisions) in Customi
- 从主数据的角度看一个零售ERP系统
- “上海名媛群”事件,我来说几句
- SAP SD 常用表
- CBNet:物体检测的一种新的组合主干网络结构
- 国产光刻设备第一股:从官司缠身到国产希望?
- 波士顿动力的仓库机器人Strentch来了,挑战每小时搬运800个箱子
- 盘点|应用落地,构建城市“大脑”
- 北大发布最新《图神经网络推荐系统》2020综述论文,27页pdf