学军中学6月培训第一次模拟赛

这篇博客是什么呢?

是学军中学培训比赛记录哒!

Problem A


给出N个不同的点的坐标
求一个N-1次的多项式函数 经过这些点
输出其表达式
为了使题目更简便 所有运算在 Mod 1,000,000,007下进行

输入格式:

一个整数 N
以后N行 每行两个整数 Xi,Yi 表示这个函数经过 (Xi,Yi)

输出格式:

共一行 N个大于等于0小于1,000,000,007的整数
第i个整数表示 x^(i-1)次项的系数

样例输入:

2
0 1
2 4

样例输出:

1 5000000005

数据范围:

对于20%的数据 N<=10
对于40%的数据 N<=500
对于100%的数据 N<=5000 0<=Xi,Yi<=10^9
数据保证 不会有相同的Xi对应着不同的Yi

时间限制:

时限 1s

空间限制:

512MB


自闭过程

并没有意识到一个高次多项式除以一个二次多项式的复杂度是\(O(n)\)的,然后还没有想到那个DP做法。

先写了一个搞死小圆,又试着写了一个\(O(n^2 \log n)\)的前后缀\(MTT\),结果跑了\(20s\)\(40pts\)滚粗了。

题解

算法一

考虑拉格朗日插值公式:

\[f(x)=\sum_{i=1}^{n}y_i\prod_{j=1,j \neq i}^{n}\frac{x-x_j}{x_i-x_j} \]

可以转化成这样:

\[f(x)=\sum_{i=1}^{n}A_i\prod_{j=1,j \neq i}^{n}(x-x_j) \]

\(g(x)=\prod_{j=1}^{n}(x-x_j)\),有:

\[f(x)=\sum_{i=1}^{n}A_i\frac{g(x)}{x-x_i} \]

枚举\(i\),后面那个\(\frac{g(x)}{x-x_i}\)可以\(O(n)\)算,时间复杂度为\(O(n^2)\)

算法二

考虑算法一中的这个式子:

\[f(x)=\sum_{i=1}^{n}A_i\prod_{j=1,j \neq i}^{n}(x-x_j) \]

可以理解为你要算\(\prod_{j=1}^{n}(x-x_j)\),不过你需要对于其中一个\(j\),把乘\((x-x_j)\)换成乘\(A_j\),然后对于每种方案最终得到的多项式求和。

很容易想到用两个数组DP就好了,令\(f[i][j]\)表示还没有换过,\(g[i][j]\)表示已经换过了,状态转移方程显然,时间复杂度为\(O(n^2)\)

Problem B


千百年来 古老的黄河哺育了一代又一代智慧勤劳的中华儿女 是中华民族的母亲河

黄河发源于巴颜喀拉山 贯穿整个华北平原 奔腾不息 激流飞溅 最终汇入勃海

全长万里 流经九省 有长安雒阳大梁宜阳等古都名簇拥于其两侧

但是 在古代 要解决预防黄河不定期的洪汛是一件很困难的事情

智慧勤劳的先贤们 想到建立了类似后来的烽火台办法来解决这个问题

他们在巴颜喀拉山和沿途的高地建立烽火台 把上流的河流洪汛信息转成二进制

日举燧 夜举烽 (如果不行的话也会用人力)昼夜不息的传向下流城市

己知洪汛信息从巴颜喀拉山上开始发送 途经一些高地上的烽火台 传到下流的城市

一般来说(数据不保证)

高地高度越高 能向下流传达信息的距离就越远 但同时建造费用也越高(因为要把土木石块等建材运上山顶)

当然巴颜喀拉山的高地上有已经建好的烽火台(即建造费用为零)

现在告诉你所有高地的信息:

Pi: 建立烽火台的代价

Ri: 能向下流传达信息的最大距离

Di: 这个高地到巴颜喀拉山的距离

要求你选取其中一些高地建立烽火台 (设其序列为 S1…SK)

把信息传到下流某一个高地

如果 第i个烽火台的 D_(s_i )+R_(S_i )
那么 我们需要用人力跑到 D_(s_i )+R_(S_i ) 处来接收上一个烽火台的信息
人力传输要花费 (D_(S_(i+1) )-D_(S_i )-R_(S_i ))^K/(D_(S_i )+R_(S_i ) ) 的代价
(K即人力传输的先进程度 用一个大于等于2小于等于5的正整数表示)

否则就不需要传输代价

现在问你如果想要在第I个高地建立烽火台 接收到来自巴颜喀拉山的信息

最少需要的代价是多少

输入格式:

两个整数 N,K 表示 高地数 和 人力传输的方式

以后N行 第i行三个整数 Pi,Ri,Di

表示在距离巴颜喀拉山第i近的高地建立烽火台的代价

以及 能向下流传达信息的最大距离

以及 这个高地到巴颜喀拉山的距离

巴颜喀拉山即是第一近的高地

输出格式:

共N行

第i行表示 在距离巴颜喀拉山第i近的高地建立烽火台接收到巴颜喀拉山传来的信息的

最小代价 保留一位小数

样例输入:

6 5
0 20 0
10 30 10  
5 10 20
10 10 30
10 8 40
1 0 50

样例输出:

0.0
10.0
5.0
15.0
20.0
21.7

以下是某行所对应的方案

选1
选1,2
选1,3
选1,3,4
选1,2,5
选1,2,5,6

数据范围:

对于20%的数据 N<=15

对于40%的数据 N<=5000

对于100%的数据 N<=100000, 2<=K<=5, 0<=Di,Ri,Pi<=1000000000 D1=P1=0

对于 40%的数据 K=2

对于 30%的数据 K=3

对于 10%的数据 K=4

对于 20%的数据 K=5

数据保证所有答案<=1e15

时限 3s

注意:

数据里p[1]可能不为 0,请选手们读入之后把 p[1]改成 0


自闭过程

完全没有往决策单调性这方面想,反而是想了半天数据结构优化DP。

写了个没用的离散化懒得删了,没想到离散化的数组开小导致越界,原本\(40pts\)的暴力炸得只剩\(20pts\)了,滚粗了。

题解

\(f[i]\)表示考虑了前\(i\)个烽火台,强制选了第\(i\)个的最小代价。

考虑从\(f[j]\)\(f[i]\)的转移,如果\(D_j+R_j \geq D_i\),显然可以直接转移,用一个优先队列维护就好了,如果\(D_j+R_j < D_i\),可以注意到这类转移具有决策单调性(证明?),直接使用单调队列维护决策三元组就好了,具体可以看这篇博客,时间复杂度为\(O(n \log n)\)

Problem C


给出一张由N个点构成的有向图
每个点有一个由小写字符表示的优先程度 , 记为Pi
对于 一条回路
我们把他所有点的Pi 按照回路的顺序依次连起来 构成一个字符串
称为这条回路的一个表示
当然 一条长度为N (N>=3) 的回路有N种 表示
我们称其中最小的一个为其最小表示
现给出一张有向图 求其一条经过所有点各一次的回路 使其最小表示最小

输入格式:

第一行 一个整数 N表示 点数
第二行 N个字符 表示这N个点的 Pi
接下来 每行两个数 Ai,Bi 表示Ai -->Bi 有一有向条
读到文件结束为止

输出格式:

仅一行 依照最小表示的顺序输出 每个点的标号

样例输入:

15
mmielxpdahryfdp
1 2
1 3
1 4
1 6
1 8
1 9
1 10
1 12
1 13
1 14
2 3
2 4
2 5
2 8
2 10
2 11
2 14
2 15
3 4
3 5
3 6
3 7
3 8
3 14
4 3
4 5
4 7
4 9
4 11
4 12
4 14
5 1
5 6
5 8
5 9
6 3
6 4
6 7
6 8
6 11
6 12
6 13
6 15
7 1
7 3
7 8
7 12
7 14
8 3
8 4
8 5
8 7
8 9
8 10
8 12
9 2
9 6
9 8
9 10
9 11
9 12
9 14
9 15
10 1
10 2
10 5
10 8
10 11
10 13
10 14
10 15
11 2
11 3
11 4
11 5
11 7
11 10
11 12
11 15
12 1
12 3
12 5
12 6
12 8
12 9
12 10
12 13
12 15
13 4
13 5
13 6
13 8
13 9
13 10
13 14
14 3
14 4
14 6
14 7
14 9
14 11
14 12
14 13
14 15
15 1
15 2
15 3
15 4
15 5
15 6
15 9
15 10
15 13

样例输出:

9 8 4 14 13 10 5 1 3 7 12 6 11 2 15 

// 1 2 3 4 5 6 7 15 15 15 <-这是啥?

数据规模:

1<=n<=1000000

边数规模未说明,按读入能够承受为限。

文件下载:

qaq.zip

spj.zip


自闭过程

知道这是提答题的第一反应:woc,提答题,出题人nmsl

打完前两道题的暴力之后开始搞,还有差不多两个小时的时间。

前两个点,嗯,状压DP。

第三、四个点,\(n=m\)?嗯,是个基环树,没思路,走了。(连通图还一定存在哈密顿回路,闭着眼睛都知道这玩意是个环,神TM基环树,我TM真是个人才)

第五、六、七个点,\(m=\frac{n(n-1)}{2}\),是个竞赛图,所有字符还一模一样,都知道强连通竞赛图一定存在哈密顿回路,但是我不会求啊,欲哭无泪。

第八、九、十个点,什么玩意?

最后只写了前两个点的状压DP,写的时候还犯了不少NC错误。

题解

一个环的话倍长之后求\(SA\)就好了。

强连通竞赛图求哈密顿回路的话可以看这篇博客,还有这篇

最后三个点zzy切了,不过我还是一脸懵逼。

总分:40+20+20=80pts

Rank:9

posted on 2019-06-05 20:59  ErkkiErkko  阅读(72)  评论(0编辑  收藏  举报