概述
2020.04.04【NOIP普及组】模拟赛C组23 总结
这次比赛我考了150分,第8名,还可以。
这一次竟然比的是USACO的银组,what? 。
第一题:Swapity Swap
题目:
题目描述
Farmer John 的 N 头奶牛(1≤N≤10^5)站成一排。对于每一个 1≤i≤N,从左往右数 第 i 头奶牛的编号为 i。Farmer John 想到了一个新的奶牛晨练方案。他给奶牛们 M 对整数 (L1,R1)…(LM,RM),其中 1≤M≤100。他让她们重复以下包含 M 个步骤的过程 K(1≤K≤10^9)次:
对于从 1 到 M 的每一个步骤i:当前从左往右数在位置 Li…Ri 的奶牛序列反转她们的顺序。
当奶牛们重复这一过程 K 次后,请对每一个 1≤i≤N 输出从左往右数第 i 头奶牛的编号。
输入
输入的第一行包含 N, M 和 K。对于每一个 1≤i≤M,第 i+1 行包含 Li 和 Ri,均为范围在 1…N 内的整数,其中 Li<Ri。
输出
在第 i 行输出指令序列执行了 K 次后奶牛序列中从左往右数第 i 个元素的编号。
样例输入
7 2 2
2 5
3 7
样例输出
1
2
4
3
5
7
6
数据范围限制
测试点 1-2 满足 N=K=100。
测试点 3-5 满足 K≤10^3。
测试点 6-10 没有额外限制。
提示
初始时,奶牛们的顺序从左往右为 [1,2,3,4,5,6,7]。在这一过程的第一步过后,顺序变为 [1,5,4,3,2,6,7]。在这一过程的第二步过后,顺序变为 [1,5,7,6,2,3,4]。再重复这两个步骤各一次可以得到样例的输出。
方法:
- 对于 20 20 20分(实际得 30 30 30分)的做法:直接进行暴力。时间复杂度为 O ( n m k ) O(nmk) O(nmk)。
- 对于 50 50 50分的做法:可以用一个数组存它的下标将要去的点,一边做一遍更新。时间复杂度为 O ( n k ) O(nk) O(nk)。
- 对于满分的做法:对 50 50 50分进行优化,用快速幂或倍增法求的答案。时间复杂度为 O ( n log k 2 ) O(nlog^2_k) O(nlogk2)。
第二题:Triangles
题目:
题目描述
Farmer John 想要给他的奶牛们建造一个三角形牧场。有 N(3≤N≤10^5)个栅栏柱子分别位于农场的二维平面上不同的点 (X1,Y1)…(XN,YN)。他可以选择其中三个点组成三角形牧场,只要三角形有一条边与 x 轴平行,且有另一条边与 y 轴平行。
FJ 可以组成的所有可能的牧场的面积之和等于多少?
输入
第一行包含 N。
以下 N 行每行包含两个整数 Xi 和 Yi,均在范围 −10^4…10^4 之内,描述一个栅栏柱子的位置。
输出
由于面积之和不一定为整数且可能非常大,输出面积之和的两倍模 10^9+7 的余数。
样例输入
4
0 0
0 1
1 0
1 2
样例输出
3
数据范围限制
测试点 1-2 满足 N=200。
测试点 3-4 满足 N≤5000。
测试点 5-10 没有额外限制。
提示
栅栏木桩 (0,0)、(1,0) 和 (1,2) 组成了一个面积为 1 的三角形,(0,0)、(1,0) 和 (0,1) 组成了一个面积为 0.5 的三角形。所以答案为 2*(1+0.5)=3。
方法:
- 对于 20 20 20分的做法:直接枚举。时间复杂度为 O ( n 3 ) O(n^3) O(n3)。
- 对于满分的做法:用数学方法统计并计算。时间复杂度为 O ( 4 n ) O(4n) O(4n)。
第三题:Clock Tree
题目:
题目描述
Farmer John 的新牛棚的设计十分奇怪:它由编号为 1…N 的 N 间房间(2≤N≤2500),以及 N−1 条走廊组成。每条走廊连接两间房间,使得每间房间都可以沿着一些走廊到达任意其他房间。
牛棚里的每间房间都装有一个在表盘上印有标准的整数 1…12 的圆形时钟。然而,这些时钟只有一根指针,并且总是直接指向表盘上的某个数字(它从不指向两个数字之间)。
奶牛 Bessie 想要同步牛棚中的所有时钟,使它们都指向整数 12。然而,她头脑稍有些简单,当她在牛棚里行走的时候,每次她进入一间房间,她将房间里的时钟的指针向后拨动一个位置。例如,如果原来时钟指向 5,现在它会指向 6,如果原来时钟指向 12,现在它会指向 1。如果 Bessie 进入同一间房间多次,她每次进入都会拨动这间房间的时钟。
请求出 Bessie 可能的出发房间数量,使得她可以在牛棚中走动并使所有时钟指向 12。注意 Bessie 并不拨动她出发房间的时钟,但任意时刻她再次进入的时候会拨动它。时钟不会自己走动;时钟只会在 Bessie 进入时被拨动。此外,Bessie 一旦进入了一条走廊,她必须到达走廊的另一端(不允许走到一半折回原来的房间)。
输入
输入的第一行包含 N。下一行包含 N 个整数,均在范围 1…12 之内,表示每间房间初始时的时钟设置。以下 N−1 行每行用两个整数 a 和 b 描述了一条走廊,两数均在范围 1…N 之内,为该走廊连接的两间房间的编号。
输出
输出出发房间的数量,使得 Bessie 有可能使所有时钟指向 12。
样例输入
4
11 10 11 11
1 2
2 3
2 4
样例输出
1
数据范围限制
测试点 1-7 满足 N≤100。
测试点 8-15 没有额外限制。
提示
在这个例子中,当且仅当 Bessie 从房间 2 出发时她可以使所有房间的时钟指向 12(比如,移动到房间 1,2,3,2,最后到 4)。
方法:
- 方法 1 1 1:动态规划。时间复杂度为 O ( n 2 ) O(n^2) O(n2)。
- 方法 2 2 2:数学方法:看一下每个结点的深度是奇数还是偶数,然后判断。时间复杂度为 O ( n ) O(n) O(n)。
总结:这是我遇到的最难的第一题。下一次我一定会更好!
最后
以上就是诚心凉面为你收集整理的2020.04.04【NOIP普及组】模拟赛C组23 总结的全部内容,希望文章能够帮你解决2020.04.04【NOIP普及组】模拟赛C组23 总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复