当前位置: 首页 > wzjs >正文

集约化网站群建设wordpress 代码解读

集约化网站群建设,wordpress 代码解读,网站推广的基本方法是什么,商务局网站群建设方案成绩统计 问题描述 小蓝的班上有 n 个人,一次考试之后小蓝想统计同学们的成绩,第 i 名同学的成绩为 a[i]。当小蓝统计完前 x 名同学的成绩后,他可以从 1 ∼ x 中选出任意 k 名同学的成绩,计算出这 k 个成绩的方差。小蓝至少要检…

成绩统计

问题描述

小蓝的班上有 n 个人,一次考试之后小蓝想统计同学们的成绩,第 i 名同学的成绩为 a[i]。当小蓝统计完前 x 名同学的成绩后,他可以从 1 ∼ x 中选出任意 k 名同学的成绩,计算出这 k 个成绩的方差。小蓝至少要检查多少个人的成绩,才有可能选出 k 名同学,他们的方差小于一个给定的值 T

方差计算公式

k 个数 v1, v2, ..., vk 的方差 σ² 定义为:

σ² = (1 / k) * Σ(v[i] - v̄)²   (i = 1, 2, ..., k)

其中, 表示 v 的平均值,计算公式为:

v̄ = (1 / k) * Σv[i]   (i = 1, 2, ..., k)

输入格式

  • 第一行包含三个正整数 n, k, T,相邻整数之间使用一个空格分隔。
  • 第二行包含 n 个正整数 a1, a2, ..., an,相邻整数之间使用一个空格分隔。

输出格式

输出一行包含一个整数表示答案。如果不能满足条件,输出 -1

样例输入

5 3 1
3 2 5 2 3

样例输出

4

样例说明

  • 检查完前三名同学的成绩后,选出的成绩是 3, 2, 5,方差为 1.56。
  • 检查完前四名同学的成绩后,选出的成绩是 3, 2, 2,方差为 0.33 < 1,符合要求,因此答案为 4

评测用例规模与约定

对于 10% 的评测用例,保证 1 ≤ n, k ≤ 10²
对于 30% 的评测用例,保证 1 ≤ n, k ≤ 10³
对于所有评测用例,保证 1 ≤ n, k ≤ 10⁵1 ≤ T ≤ 2³¹ - 1

c++代码

#include<bits/stdc++.h>using namespace std;long long n, k, T, g_left, g_right, x, ans, ex2, ex;
vector<long long> grades, middle, sum_ex, sum_ex2;int judge() {middle = vector<long long>(x + 1);sum_ex = vector<long long>(x + 1, 0);sum_ex2 = vector<long long>(x + 1, 0);for (int i = 0; i <= x; i++) {middle[i] = grades[i];}sort(middle.begin(), middle.end());sum_ex[0] = middle[0];sum_ex2[0] = middle[0] * middle[0];for (int i = 1; i <= x; i++) {sum_ex[i] = middle[i] + sum_ex[i - 1];sum_ex2[i] = middle[i] * middle[i] + sum_ex2[i - 1];}for (int i = k - 1; i <= x; i++) {if (i - k >= 0) ex2 = sum_ex2[i] - sum_ex2[i - k];else ex2 = sum_ex2[i];if (i - k >= 0) ex = sum_ex[i] - sum_ex[i - k];else ex = sum_ex[i];if (ex2 * k - (ex)*(ex) < T * k * k) return 1;}return 0;
}int main() {cin >> n >> k >> T;grades = vector<long long>(n);for (int i = 0; i < n; i++) {cin >> grades[i];}g_left = k - 1;g_right = n - 1;ans = -2;while (g_right >= g_left) {x = (g_left + g_right) / 2;if (judge() == 1) {g_right = x - 1;ans = x;}else g_left = x + 1;}cout << ans + 1<< endl;
}//by wqs

题目解析

你要找出最小的x需要二分查找策略,否则超时。

x确定之后就要给前x个数排序。

因为方差最小的k个数肯定是连续(从小到大排序)的k个数,我们要从所有连续的k个数里面判断方差是否小于T。

如果都大于等于T,说明前x个数不行。

只要有一个小于T,说明前x个数可以。

方差的计算用D(x) = e(x^2) - e(x)^2;

代码实现

二分策略查找x
g_left = k - 1;//左边界
g_right = n - 1;//右边界
ans = -2;
while (g_right >= g_left) {x = (g_left + g_right) / 2; //中间值if (judge() == 1) { //判断这个x是否可行g_right = x - 1;//可行更新右边界ans = x;}else g_left = x + 1;//不可行更新左边界
}
前x个数排序

因为方差最小的k个数肯定是连续(从小到大排序)的k个数,我们要从所有连续的k个数里面判断方差是否小于T。

middle = vector<long long>(x + 1);
for (int i = 0; i <= x; i++) {middle[i] = grades[i];
}
sort(middle.begin(), middle.end());
计算前x个所有连续k个数的方差
sum_ex sum_ex2简化运算

方差的计算用D(x) = e(x^2) - e(x)^2;

sum_ex存储前x个数的和, sum_ex2存储前x个数的平方和。

令ex2 = sum_ex2[i] - sum_ex2[i - k];

令ex = sum_ex[i] - sum_ex[i - k];

则e(x^2) = ex2 / k;

e(x) = ex / k;

这样我们计算e(x^2) 、e(x) 方便多了

sum_ex[0] = middle[0];
sum_ex2[0] = middle[0] * middle[0];
for (int i = 1; i <= x; i++) {sum_ex[i] = middle[i] + sum_ex[i - 1];sum_ex2[i] = middle[i] * middle[i] + sum_ex2[i - 1];
}
计算方差

令ex2 = sum_ex2[i] - sum_ex2[i - k];

令ex = sum_ex[i] - sum_ex[i - k];

则e(x^2) = ex2 / k;

e(x) = ex / k;

e(x^2) - e(x)^2 < T等价于

ex2 * k - ex*ex < T * k * k

这样我们就避免了使用除法,可以全部用整数了。

for (int i = k - 1; i <= x; i++) {if (i - k >= 0) ex2 = sum_ex2[i] - sum_ex2[i - k];else ex2 = sum_ex2[i];if (i - k >= 0) ex = sum_ex[i] - sum_ex[i - k];else ex = sum_ex[i];if (ex2 * k - (ex)*(ex) < T * k * k) return 1;
}

如果都大于等于T,说明前x个数不行。

只要有一个小于T,说明前x个数可以。


文章转载自:

http://gS6J7gIo.pwwdp.cn
http://9JmbU6z5.pwwdp.cn
http://KGgWdUpE.pwwdp.cn
http://ZQ7mgaxk.pwwdp.cn
http://lmhyodqo.pwwdp.cn
http://EojkVWZt.pwwdp.cn
http://zLmQTCf6.pwwdp.cn
http://8a8EjLYO.pwwdp.cn
http://M23z9vmB.pwwdp.cn
http://XBdioRnn.pwwdp.cn
http://mRwcKt2N.pwwdp.cn
http://ZQTjtIM4.pwwdp.cn
http://RmZ7p5Dn.pwwdp.cn
http://XRGQewne.pwwdp.cn
http://bkni6CGd.pwwdp.cn
http://yjPa9O0f.pwwdp.cn
http://vDPvE2fU.pwwdp.cn
http://SqFJAFrN.pwwdp.cn
http://ugrUPxc6.pwwdp.cn
http://zTgBDv3q.pwwdp.cn
http://19D0cwTe.pwwdp.cn
http://AuL0vuA9.pwwdp.cn
http://uUeL8SVC.pwwdp.cn
http://8S5iSTIH.pwwdp.cn
http://ghUg02ur.pwwdp.cn
http://M6PemEPa.pwwdp.cn
http://VGWIdTKG.pwwdp.cn
http://uXO20MEb.pwwdp.cn
http://46Y0uLV3.pwwdp.cn
http://MVJrqVCI.pwwdp.cn
http://www.dtcms.com/wzjs/746401.html

相关文章:

  • 建下载网站资讯网站模板带会员投稿功能
  • 做网站的背景怎么做网站建设云南
  • 优秀网站作品截图广州有什么好玩的山
  • 闸北区网站建设如何做网站代码
  • 做网站还需要兼容ie6吗郑州app软件定制
  • 做市级网站需要什么社区门户网站建设方案
  • 做网站公司 陕西渭南做网站要要多少钱
  • 公司网站制作流程网站案例 中企动力技术支持
  • z怎么做优惠券网站什么是网站实施
  • 企业网站需要多大带宽重庆网站建设重庆零臻科技价
  • php在电子商务网站建设中的应用研究 戴书浩昆明城乡建设局网站
  • 用WordPress建什么站好鹤壁网站seo优化
  • 河南网站建站推广国外经典设计网站
  • 免费网站一级域名注册了解网站的建设心得
  • 网站seo的关键词排名怎么做的黑龙江省建设协会网站首页
  • 洛阳网站建设培训wordpress 运行时间
  • 固原地网站seowordpress打不开
  • 公司网站费用计入什么科目朝阳网络信息有限公司
  • 四川省查询建设人员注册证书网站免费平面设计软件有哪些
  • 烟台网站推广效果好手机网站公司哪家好
  • 建设银行签名通在网站哪里下载网站后台登陆口
  • 专做动漫的网站做企业官网哪家公司好
  • 织梦网站模板如何安装教程视频教程网站制作公司中企动力推荐
  • 成都网站设计制作价格谷歌优化是什么意思
  • 深圳网页制作与网站建设方案维护网站图怎么做才能小而清晰度
  • 做自己视频教程的网站企业建设营销网站的基本步骤
  • 怎么做网站弹窗通知256m内存 wordpress
  • 我谁知道在哪里可以找人帮忙做网站wix做中文网站怎么样
  • 建一个自己的网站需要多少钱深圳创纪录暴雨19小时
  • 一级a做爰片不卡免费网站查看网站是否wordpress