U40620 niiickの还没想好名字的题

给定一个长度为\(n\)的序列\(a_1,a_2...,a_n\)

要求将这\(n\)个数分为\(m\)组,每组可以有任意多个数,但同一组中的数必须是原序列中连续的一段

求如何分组能使得各组的标准差最小,

即求$$min(\sqrt{\sum_{i=1}m\frac{(x_i-\overline{x})2}{m}})$$其中\(x_i\)为第\(i\)组数的和,\(\overline{x}\)为各组数和的平均值

求这个最小值


纪念一下交了19遍(不是因为debug)


Solution

我们先考虑这个部分 \(\sum_{i = 1}^{m}(x_{i} - \overline{x}) ^ {2}\)

设 \(dp[i][j]\) 表示考虑前 \(i\) 个数, 分成 \(j\) 个部分的最小值

类似区间\(dp\), 我们暴力枚举断点计算多分一组, 即大区间的答案

状态转移方程见代码

Code

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
#include<climits>
#include<cmath>
#define LL long long
#define REP(i, x, y) for(int i = (x);i <= (y);i++)
using namespace std;
int RD(){
int out = 0,flag = 1;char c = getchar();
while(c < '0' || c >'9'){if(c == '-')flag = -1;c = getchar();}
while(c >= '0' && c <= '9'){out = out * 10 + c - '0';c = getchar();}
return flag * out;
}
const int maxn = 419;
int num, m;
double dp[maxn][maxn], sum[maxn], ave;
int main(){
num = RD(), m = RD();
REP(i, 1, num)sum[i] = sum[i - 1] + RD();
ave = sum[num] / (m * 1.0);
REP(i, 0, num)REP(j, 0, m)dp[i][j] = 1e19;
dp[0][0] = 0;
REP(i, 1, num){
REP(j, 1, min(i, m)){
REP(k, 0, i - 1){
dp[i][j] = min(dp[i][j],
dp[k][j - 1] + ((sum[i] - sum[k] - ave) * (sum[i] - sum[k] - ave)));
}
}
}
printf("%.2lf\n", sqrt(dp[num][m] / (double)m));
return 0;
}

U40620 还没想好名字的题的更多相关文章

  1. U45490 还没想好名字的题Ⅱ

    这一题的环状板 Solution 暴力断环为链, 枚举起点跑 \(n\) 遍 \(DP\), 取最小值即可 Code #include<iostream> #include<cstd ...

  2. noi2018还没想好记

    前面说点什么.. 没想到吧 嘴上说着不写的彩笔博主最后还是写了这篇东西.. Day -inf 在雅礼集训,打了四场模拟赛.. 真正说打得好的.. 也就那么一场 身体很差 心态很差 状态很差 虽然有书读 ...

  3. 自学C Primer Plus时还没想明白的问题

    2016年11月24日 1. 计算机中两个浮点数怎样进行加法运算.2. 为什么计算机在计算时存在损失精度的可能3. 无符号数和有符号数的运算是怎样的4. printf中使用格式控制符的截断问题,比如% ...

  4. HDU2426:Interesting Housing Problem(还没过,貌似入门题)

    #include <iostream> #include <queue> #include <stdio.h> #include <string.h> ...

  5. 11-基于dev的bug(还没想通)

    十六进制转八进制 http://lx.lanqiao.cn/problem.page?gpid=T51 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n ...

  6. gRPC趁现在还没大火,抢先了解一下

    前言 系统分布式已经成为程序员的家常,将大型单体划分为相对简单的小模块,分散系统能力,提升系统扩展性.功能模块复用性等:各功能模块之间肯定会有很多数据共享和交互的应用场景,那就避免不了各模块之间的通信 ...

  7. 字节一面:事务还没提交的时候,redolog 能不能被持久化到磁盘呢?

    又是被自己菜醒的一天,总结面经看到这题目听都没听过,打开百度就像吃饭一样自然 老规矩,背诵版在文末.点击阅读原文可以直达我收录整理的各大厂面试真题 首先,咱需要明白的是,啥是持久化? 听起来高大上,换 ...

  8. 在各方面还没准备好的时候,大家一定要慎用border-box样式!!!!

    这几天,我被一个js问题困扰到癫狂了! 事情是这样的,我之前写了个功能非常复杂的纯jquery代码的前端gridview控件,实现了大量的功能和效果,在一些项目里也用得很好. 最近有个项目,样式做了调 ...

  9. 成功熬了四年还没死?一个IT屌丝创业者的深刻反思

    三个IT屌丝创业的故事 从前有三个屌丝,聚在一起做网络.提供免费的网络服务,砸锅卖铁,通宵达旦,除了卖肾,啥都做了.3年后终于做到了五百万用户.对于年轻人来说,能把五百万人玩弄于鼓掌之间,已经是很牛逼 ...

随机推荐

  1. CMD命令操作符

    cmd                   command的缩写,是windows环境下的虚拟DOS窗口,提供有DOS命令,功能强大 mstsc                 远程 inetmgr  ...

  2. 《TCP/IP 详解 卷1:协议》第 9 章:广播和本地组播(IGMP 和 MLD)

    我已经懒了,卷一已经是去年年底看完的,但怎么说卷一的坑开了就要填完啊-- 广播和本地组播(IGMP 和 MLD) 引言 有 4 种 IP 地址,单播(unicast).任播(anycast).组播(m ...

  3. 树莓派与Arduino Leonardo使用NRF24L01无线模块通信之基于RF24库 (一) 配置与测试

    引脚连接说明 与树莓派的连线 NRF24L01 => 树莓派 GND          =>   GND VCC          =>    3.3V CE           = ...

  4. 解决java使用Runtime.exec执行linux复杂命令不成功问题

    最近要实现一个Java调用一个复杂shell命令实现数据同步,该命令有管道重定向的语句,结果硬是执行不成功,而且也没异常报出.经过一段时间的折腾终于解决了此问题,权当做备忘记录下来(重点在红色框中的“ ...

  5. (一)Jmeter 简单的录制

    JMeter介绍 1.JMeter,一个100%的纯Java桌面应用,它是Apache组织的开放源代码项目,它是功能和性能测试的工具.JMeter可以用于测试静态或者动态资源的性能(文件.Servle ...

  6. 关于对JSON.parse()与JSON.stringify()的理解

    JSON.parse()与JSON.stringify()的区别   JSON.parse()[从一个字符串中解析出json对象] 例子: //定义一个字符串 var data='{"nam ...

  7. Windows Server 2008 R2 安装WinDbg以及符号路径设置

    1.下载WinDbg安装包(Debuggers And Tools-x64_en-us v6.12.0002.633 AMD64.msi),双击安装 2.从网站http://msdn.microsof ...

  8. 2018 南京icpc现场赛总结

    Day 0 提前5个小时从学校出发,在登机口坐下时,飞机还有1个多小时起飞. 航班准时起飞,到了南京以后直接坐地铁到学校附近(南京地铁票也太精致了吧). 因为天已经黑了,就只在学校附近转了一圈就回酒店 ...

  9. 解决Slave SQL线程Waiting for binlog lock

       最近在我们线上库物理备份的时候出现一个奇怪的现象:    我们备份都在从库上备份的,在业务低一般是在晚上2点钟开始备份.有天发现从库的延迟一直在增加,登录上实例,通过show processli ...

  10. BibTex相关

    标签(空格分隔): 杂七杂八的问题 又到了写论文的高峰期(?)在BibTeX中添加参考文献时,发现选项很多,对一些称呼还是一脸懵逼..阿一古,也许是最后一次写论文了,还弄清楚的还是清楚一下吧~ [转自 ...