10.21下午考试

100+30+100=230

rank6

好菜啊

表示第二题80分90分他们都怎么写的。。。

T3暴力直接AC。。。

1、数列

(sequence.pas/c/cpp)

【题目描述】

小林是个爱数学的孩子。这一天,他正在研究斐波那契数列。斐波那契数列的定义为:

F[0] = 0

F[1] = 1

F[n] = F[n-2] + F[n-1] (n >= 2)

聪明的小林马上就想出了 F[n]的通项公式。接着他又想到,如果 F 数列不是数,而是字符串,‘+’是字符串的拼接号,那么 F 数列的第 n 项会是多少呢?

在上述定义中, F[0] = “0”, F[1] = “1”, F[2] = “01”, F[3] = “101”,F[4] = “01101”, ...... 。

由于 F[n] 的第 n 位可能很大,小林只需要知道 F[n]的第 L 位至第 R 位。其中 L 和 R 都是从 0 开始计数。

【输入格式】

一行共三个整数,分别为 n, L, R。

【输出格式】

只有一行,是一个长为 R-L+1 的字符串。

【样例输入】

4 1 3

【样例输出】

110

【数据规模】

对于 40%的数据, n <= 20;

对于 100%的数据, 0 <= n, L, R < 2^31, 0 <= R-L <= 10000。

【题解】

大水题

他妈的推了40分钟

当n>=47 len>2147483647

所以可以直接把>=47的奇数变为47

>=48的奇数变为48(好像是46忘了)

然后把前十几预处理出来(可以直接打表。。。)

然后后面的递归处理

一个区间可能跨过端点也可能不跨过

分三种情况处理

反正就那么做就行了

2、互异

(diff.pas/c/cpp)

【题目描述】

小林正在研究一串各项互不相同的数列。

数列的长度为 n,数列的各项为 a1, a 2 , a 3, ..., a n 。

小林想找到一个正整数 m,使得数列中各项对 m 取模后,依然互异。由于 m很大时一定成立,因此小林想找一个最小的正整数 m。

同时,从魔法城堡回来的亮亮为了向小林炫耀自己破魔法阵时所用的神光,便赐予小林法力,使他能够用神光去掉数列中至多 k 项(不需要连续)。

【输入格式】

第一行两个整数 n 和 k。

第二行为 n 个互不相同的整数, a1, a 2 , a 3, ..., a n 。

【输出格式】

只有一个整数,表示 m 的最小值。

【样例输入】

7 0
2 4 5 8 9 14 20

【样例输出】

13

【数据规模】

对于 30%的数据, 1≤n≤10, k=0;

对于另外 30%的数据, 1≤n≤100, 0≤k≤2;

对于 100%的数据, 1≤n≤5000, 0≤k≤4, 0≤ a i ≤10^6。

【题解】

如果两个数模m相等,那么他俩差是m倍数

预处理所有数的差,放到100万个桶fuck[i]里

然后打一发线性筛,求出b[i]代表差中至少有b[i]个含有因子i

从小到大枚举m,首先b[m]要小于k*(k+1)/2才能继续

然后呢就暴力枚举n个数取模,判断是否有小于等于k个数,如果是输出m,break掉即可。不是继续枚举m。

复杂度O(玄学)。就讨厌这种题。。。。qtmd

3、魔法

(magic.pas/c/cpp)

【题目描述】

亮亮在炫耀了神光后,觉得自己的魔法不能像梦境中一样将连续一片区域笼罩,显示不出自己的本领,于是又埋头苦睡,于睡梦中冥神苦思,终于创造出了自己的法杖。

他的法杖一黑一白,也能够像在破魔法阵时那样发出神光,笼罩连续的一片区域。他很开心,于是决定再次去向小林炫耀。

小林正在计算一列数列的标准差。虽然数列中数的个数很多,但他算得又快又准。

亮亮见状,设置了一个参数 D,举起黑色法杖,发出黑色神光,将数列中从L 到 R 位置上的数全都笼罩,只见被笼罩的数中,所有小于 D 的数都变成了 D,而其余的数没有发生变化。小林十分惊异,只见亮亮微微一笑,修改了参数 D,L 和 R 的值,紧接着举起白色法杖,发出白色神光,将数列中从 L 到 R 位置上的数全都笼罩,只见被笼罩的数中,所有大于 D 的数都变成了 D,而其余的数没有发生变化。

亮亮说:“我能瞬间改变一个区间内数的值,你能立刻算出一个区间内所有数的标准差吗?”这下又轮到你出手帮助小林了。

【输入格式】

第一行为一个整数 n,表示数列的长度。

第二行为 n 个整数ai ,表示初始的数列。

第三行为一个整数 m,即操作数。

接下来 m 行,每行分别表示一个操作,格式如下:

1、 U l r d 亮亮发动黑色神光,将区间[l,r]中小于 d 数变成 d;

2、 D l r d 亮亮发动白色神光,将区间[l,r]中大于 d 数变成 d;

3、 A l r 亮亮要求小林计算区间[l,r]中数的标准差。

【输出格式】

输出每次’A’操作所询问的数值,保留一位小数。

【样例输入】

5
1 2 3 4 5
5
A 1 5
U 1 3 2
A 13
D 3 5 4
A 1 3

【样例输出】

1.4
0.5
0.5

【数据规模】

对于 50%的数据, n,m<=1000;

对于 100%的数据, 1<=n,m<=50000, 1<=l,r<=n, 1<=a[i],d<=10^6。

【提示】

方差\(\displaystyle D=\frac {\displaystyle \sum_{i=1}^n(x_i-\bar x)^2}n\),标准差\(\sigma=\sqrt D\)

【题解】

\(\displaystyle D=\frac {\displaystyle \sum_{i=1}^n(x_i-\bar x)^2}n\)

\(\displaystyle \quad=\frac {\displaystyle \sum_{i=1}^n(x_i^2-2x_i\bar x+\bar x^2)}n\)

\(\displaystyle \quad=\frac {\displaystyle \sum_{i=1}^nx_i^2-2\bar x\sum_{i=1}^nx+\sum_{i=1}^n\bar x^2}n\)

\(\displaystyle \quad=\frac {\displaystyle \sum_{i=1}^nx_i^2-2n\bar x^2+n\bar x^2}n\)

\(\displaystyle \quad=\frac {\displaystyle \sum_{i=1}^nx_i^2-n\bar x^2}n\)

\(\displaystyle \quad=\frac {\displaystyle \sum_{i=1}^nx_i^2}n-\bar x^2\)

所以我们需要维护一个区间平方和和一个区间和

可以用线段树

并打一个区间是否全部相等的标记,如果全部相等那么直接操作

能跑到200多ms

但是

震惊的是

1300ms的暴力

AC了

qtmd

这套题sb题啊

正解还他妈分块。。。return dou

posted @ 2018-10-23 18:43  ghj1222  阅读(569)  评论(1编辑  收藏  举报