Description

Solution

对于一种确定的排列,我们可以用 \(O(n^2*k)\) 的 \(DP\) 算出最优划分的方法
但是排列需要枚举,我们可以考虑退火
每一次交换两个元素,跑一边 \(DP\) 求答案即可

#include<bits/stdc++.h>
#define sqr(x) ((x)*(x))
using namespace std;
const int N=25;
inline int rd(int l,int r){return l+rand()%(r-l+1);}
int n,m,a[N],b[N],s[N];double p,f[N][7],inf=1e15;
inline double calc(){f[0][0]=0;for(int i=1;i<=n;i++)s[i]=s[i-1]+b[i],f[i][0]=inf;for(int j=1;j<=m;j++)for(int i=1;i<=n;i++){f[i][j]=inf;for(int k=0;k<i;k++)f[i][j]=min(f[i][j],f[k][j-1]+sqr(s[i]-s[k]-p));}return f[n][m]/m;
}
double maxt=100000,mint=1e-15,Down=0.993,ans=inf;
inline void solve(){double t=maxt,tans,sans=inf;while(t>mint){int x=rd(1,n-1),y=rd(x+1,n);swap(b[x],b[y]);tans=calc();if(tans<sans)sans=tans;else if(exp((ans-tans)/t)*RAND_MAX<rand())swap(b[x],b[y]);else sans=tans;ans=min(ans,sans);t*=Down;}ans=min(ans,sans);
}
int main(){freopen("pp.in","r",stdin);freopen("pp.out","w",stdout);srand(19260859);cin>>n>>m;for(int i=1;i<=n;i++)cin>>a[i],s[i]=s[i-1]+a[i];p=(double)s[n]/m;int T=5;while(T--){for(int i=1;i<=n;i++)b[i]=a[i];solve();}printf("%.2lf\n",sqrt(ans));return 0;
}

转载于:https://www.cnblogs.com/Yuzao/p/8719291.html

bzoj 2428: [HAOI2006]均分数据相关推荐

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

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

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

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

  3. BZOJ2428[HAOI2006]均分数据——模拟退火

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

  4. [HAOI2006]均分数据

    题解 今天下午刚学了模拟退火 借这个题来总结下模拟退火的要注意的问题吧 1 : \(eps\)不要设的太大 2 : 初温\(T\)在2000左右就差不多可以了 3 : 注意题目要求是要求最大值还是最小 ...

  5. [BZOJ2428] [HAOI2006]均分数据 模拟退火

    我真是*了狗了 随机数种子被卡了 我也是醉了 什么给T分段什么的 做几万次模拟退火什么的 根本想不到啊QAQ 一晚上就被这些鬼模拟退火虐过去了 #include<cstdio> #incl ...

  6. BZOJ 1051: [HAOI2006]受欢迎的牛

    1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 7120  Solved: 3779 [Submit][S ...

  7. bzoj 1049: [HAOI2006]数字序列(DP+DP)

    1049: [HAOI2006]数字序列 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1848  Solved: 801 [Submit][Sta ...

  8. BZOJ 1051: [HAOI2006]受欢迎的牛【Trajan】

    1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MB Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛 ...

  9. bzoj 1050: [HAOI2006]旅行comf(codevs.cn 1001 舒适的路线) 快排+并查集乱搞

    没用的话:好像很久没发博客了,主要是懒太蒟找不到水题.我绝对没弃坑...^_^ 还用些话:本文为博主原创文章,若转载请注明原网址和作者. 进入正题: 先pa网址: bzoj :http://www.l ...

最新文章

  1. python官网地址-python官网地址
  2. TCP/IP详解 卷一(第十一章 UDP:用户数据报协议)
  3. A value-added tax (VAT) IN UK
  4. 权限不同,设置标签绑定的事件生效与不生效(使事件不起作用)
  5. 【C语言进阶深度学习记录】十五 编译过程简介
  6. centos linux7 系统安装
  7. 使用PostgREST构建PostgreSQL数据库的REST风格API
  8. 自带python库的环境软件_pyenv虚拟环境管理python多版本和软件库
  9. android camera实例
  10. 【软件设计师教程】程序设计语言基础知识
  11. 百家号怎么加网站链接进行引流,方法让你轻松掌握
  12. turtle库进阶练习
  13. 如何使用secureCRT连接vmware中的虚拟主机?
  14. 第二届天府大地艺术季(春)三道堰青杠树村分会场开幕
  15. Android 蓝牙HID协议(基于BR蓝牙)连接流程分析--framework-jni-btif-bta-btm-hci -- 全网最详细(一)
  16. 数组取出使用某一个entiti
  17. 内存申请标记注意区分___GFP_HIGH和___GFP_HIGHMEM
  18. 全面质量管理理论中的五个影响产品质量的主要因素
  19. Educational Codeforces Round 131 (Rated for Div. 2) A-D题解
  20. 双线性汇合(bilinear pooling)在细粒度图像分析及其他领域的进展综述

热门文章

  1. 修改windows功能要开启哪个服务器,win7更改windows功能提示出现错误并非所有的功能被成功更改怎么办...
  2. vue中v-model的使用
  3. Android 3.0 SDK 最新官方下载
  4. LeetCode简单题目(#263 #268 #278 #283 #290)-5道(数字、字符串)
  5. C语言入栈算法,栈的入栈、出栈、获取栈顶的c语言算法
  6. 2020-09-08 Win7-Win10内部版本号
  7. 推荐《喵星人行为心理学》
  8. android开发那些事儿(三)--manifest文件中uses-sdk和project中target详解
  9. ndk-build生成.so
  10. asp.net mvc 压缩html代码,浅谈ASP.NET中MVC 4 的JS/CSS打包压缩功能