2018 FJUT ACM 校赛 j题 外传:魔王打工记(一)

外传:魔王打工记(一)

TimeLimit:1000MS  MemoryLimit:128MB

64-bit integer IO format:%lld

Problem Description

话说Home_W大魔王手下有四大天王: 首席战神——赛文斯,SoftWork首席科学家——布莱克,首席军师——金金金,首席狙击手——超无聊,首席苦力——小明。

然而,这些部下个个都是饭桶,把Home_W都快吃穷。虽然Home_W嘴上说:打工是不可能打工的,这辈子不可能打工的。烧杀抢又不会做,就只有当正义的魔王这种东西,才能维持的了生活的体面,进了魔王堡感觉像回家一样,在魔王堡的感觉比家里感觉好多了!里面个个都是人才,说话又好听,我超喜欢里面的!”但实际上,Home_W在背地里伪造了各种身份,偷偷地做一些兼职以维持生计。

现在Home_W刚升入国家统计局工作,统计局里刚给他分配报酬1e RMB的一项工作:

给出N个整数a1,a2,a3,……,aN,问:对于任意的L,R。求序列aL,aL+1……aR的方差乘(R-L+1)2

其中方差的公式如下:

Home_W在接到工作后熟练敲起了代码,只见他摸上键盘的一瞬间天黑地暗,大地都在颤抖,星辰都在闪烁,不到一分钟就算完了。办公室里的无不起立鼓掌,领导也对其刮目相看,额外奖励了他价值1e9+7 RMB的破坏公物罚单一张。

Input

单组数据

开头是一个整数N,q代表N个数字,q次询问.N,q<=100,000

接下来有n个数a1,a2,a3,……an  ,(0<=ai<=10000)

再接下来q行,每行包含两个整数L,R. (1<=L<=R<=N)

Output

对于每个查询输出一个整数,代表方差乘(R-L+1)2

SampleInput

10 10
6 1 3 0 4 5 0 7 7 4
8 10
2 4
1 3
5 8
7 9
4 10
1 9
4 6
1 6
9 10

SampleOutput

18
14
38
104
98
356
576
42
161
9【思路】:(此处的^,不是异或,是代表pow())v(x)=(1/n)*∑(x[i]-(ave)sum(x))^2result(x)=(i/n)*(∑(x[i]-(ave)sum(x))^2))*(r-l+1)^2n=r-l+1result(x)=n*∑((x[i]-(ave)sum(x))^2)(ave)sum(x)=(∑x[i])/nresult(x)=n*∑(x[i]^2-(2*x[i]*∑x[i]/n+(∑(x[i]^2))/(n^2)))因为∑(x[i])可以视为一个常数,即可化简如下:      =n*∑(x[i]^2)-2(∑x[i])^2+(∑x[i])^2      =n*∑(x[i]^2)-(∑x[i])^2看不懂的可以看图片:(字不好看)


附上代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
const int MAXN = 100005;
int n,q;
int math[MAXN];
ll sum[MAXN];
ll sum2[MAXN];
int main()
{
    while(~scanf("%d%d",&n,&q))
    {memset(math,0,sizeof(math));
    memset(sum,0,sizeof(sum));
    memset(sum2,0,sizeof(sum2));
    sum[0]=0;
    sum2[0]=0;
        for(int i=1; i<=n; i++)
        {
            scanf("%d",&math[i]);
            sum[i]=sum[i-1]+math[i];
            sum2[i]=sum2[i-1]+(math[i]*math[i]);

        }
        for(int i=1;i<=q;i++)
        {
            int l,r;
            scanf("%d%d",&l,&r);
            int num=(r-l+1);
            ll ans=num*(sum2[r]-sum2[l-1])-(sum[r]-sum[l-1])*(sum[r]-sum[l-1]);
            printf("%lld\n",ans);
        }
    }
    return 0;
}

原文地址:https://www.cnblogs.com/qq136155330/p/9038664.html

时间: 2024-10-06 13:48:20

2018 FJUT ACM 校赛 j题 外传:魔王打工记(一)的相关文章

2018 FJUT ACM校赛L题 外传:魔王打工记(三)

外传:魔王打工记(三) TimeLimit:1000MS  MemoryLimit:128MB 64-bit integer IO format:%lld Problem Description 靠着小明的朝五晚九地经营共享单车,魔王堡的总算熬过了这一个月.但是好景不长,共享单车市场竞争的太激烈,小明的公司已经开始亏损了,再这么下去吃枣药丸. 统计局的工资可能都不够亏的.为保住自己裤衩不被当掉,Home_W正苦苦思索着策略,这时网上突然出现了阿里巴巴用区块链养猪的新闻,Home_W看到现在农业这

2018 FJUT acm校赛 b题 第二集:以后我就叫你小蛤了

第二集:以后我就叫你小蛤了 TimeLimit:1000MS  MemoryLimit:128MB 64-bit integer IO format:%lld Problem Description "小蛤啊,对了以后我就叫你小蛤了,你给的题完全没有难度啊" "哼,你别得意,让你碰巧做出来了而已,接下来这题你绝对不可能做出来的,你要是做出来了balabalabala...." "行了行了,快说题目吧,我时间宝贵啊!" 小A心急如焚,想尽快知道小C

Sdut 2416 Fruit Ninja II(山东省第三届ACM省赛 J 题)(解析几何)

Time Limit: 5000MS Memory limit: 65536K 题目描写叙述 Haveyou ever played a popular game named "Fruit Ninja"? Fruit Ninja (known as Fruit Ninja HD on the iPad and Fruit Ninja THD for NvidiaTegra 2 based Android devices) is a video game developed by Hal

青岛理工ACM交流赛 J题 数格子算面积

数格子算面积 Time Limit: 1000MS Memory limit: 262144K 题目描述 给你一个多边形(用’\’和’/’表示多边形的边),求多边形的面积. 输入 第一行两个正整数h 和 w (2 ≤ h, w ≤ 100),h是多边形所在平面的高,w是多边形所在平面的宽,接下来h行,每行w个字符,描述了整个平面的每个单元(每个单元是一个单位面积),字符只会是’\’,’/’和’.’其中之一,’\’,’/’表示多边形的边,’.’表示空白单元. 输出 输出一个数,输入代表的平面内多边

西电校赛网络赛J题 lucas定理计算组合数

西电校赛网络赛J题  lucas定理计算组合数 问题 J: 找规律II 时间限制: 1 Sec  内存限制: 128 MB 提交: 96  解决: 16 [提交][状态][讨论版] 题目描述 现有数阵如下: 1    2  3   4     5    6 1   3   6  10  15 1   4  10   20 1   5   15 1    6 1 求这个数阵的第n行m列是多少(行列标号从1开始) 结果对10007取模 输入 多组数据,每组数据一行,包含两个整数n,m(1<=n<=

第九届西电ACM校赛解答

Description 欢迎参加西电第九届ACM校内赛!作为一名经历了四届校赛的ACM老队员以及本次校赛的出题人,每次校赛都让我有一种全新的感受--有第一次参加校赛时提交代码时紧张到双手发抖,也有当裁判时看到有些不明真相的人提交编译后程序时的欢乐.不管你是第几次参赛,好好享受这一刻带给你的各种感受,经历就是一种财富.为了让大家更好地记住这悲喜交加的日子,特意准备了这么一道题: 给你一个日期,你只要输出这个日期是在校赛前还是校赛后,或者刚好就是校赛那一天(2011年5月22号). 题目是什么意思呢

2016 年宁波工程学院第七届ACM校赛题解报告

2016 年宁波工程学院第七届ACM校赛题解报告 本题解代码直接为比赛代码,仅供参考. A,B,C,D,G,H,J,K,L,M 来自 Ticsmtc 同学. F 来自 Gealo 同学. E,I 来自Alex 学长. Promblem A :    Two Sum 时间限制: 1 Sec  内存限制: 64 MB 题目描述: 给出n个数,另外给出?个整数S,判断是否可以从中取出2个数,使得这两个数的和是S. 输入: 第?行有个整数T(1 <= T <= 10),代表数据组数. 对于每组数据,第

CSU 1425 NUDT校赛 I题 Prime Summation

这个题本来有希望在比赛里面出了的 当时也想着用递推 因为后面的数明显是由前面的推过来的 但是在计算的时候 因为判重的问题 ...很无语.我打算用一个tot[i]来存i的总种树,tot[i]+=tot[j]//j为可以由j推到i的一系列数,但这样是不对的,会产生大量重复计算... 看了下标程才发现要用二维来计算出种类总数,f[i][j]+=sum(f[i-j][k]) 表示在推i数的时候,第一个素数为j的种类数,注意j一定为素数,而且k不能大于j...标程里面处理的比较简练,就学了下他的写法. 至

第十届山东省acm省赛补题(2)

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4124 L Median Time Limit: 1 Second      Memory Limit: 65536 KB Recall the definition of the median of  elements where  is odd: sort these elements and the median is the -th largest element.