2020.04.04【NOIP普及组】模拟赛C组23 总结

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]。再重复这两个步骤各一次可以得到样例的输出。

方法:

  1. 对于 20 20 20分(实际得 30 30 30分)的做法:直接进行暴力。时间复杂度为 O ( n m k ) O(nmk) O(nmk)
  2. 对于 50 50 50分的做法:可以用一个数组存它的下标将要去的点,一边做一遍更新。时间复杂度为 O ( n k ) O(nk) O(nk)
  3. 对于满分的做法:对 50 50 50分进行优化,用快速幂或倍增法求的答案。时间复杂度为 O ( n log ⁡ k 2 ) O(n\log^2_k) O(nlogk2)

第二题:Triangles
题目:

题目描述
Farmer John 想要给他的奶牛们建造一个三角形牧场。有 N(3≤N≤10^5)个栅栏柱子分别位于农场的二维平面上不同的点 (X1,Y1)(XN,YN)。他可以选择其中三个点组成三角形牧场,只要三角形有一条边与 x 轴平行,且有另一条边与 y 轴平行。
FJ 可以组成的所有可能的牧场的面积之和等于多少?

输入
第一行包含 N。
以下 N 行每行包含两个整数 Xi 和 Yi,均在范围 −10^410^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

方法:

  1. 对于 20 20 20分的做法:直接枚举。时间复杂度为 O ( n 3 ) O(n^3) O(n3)
  2. 对于满分的做法:用数学方法统计并计算。时间复杂度为 O ( 4 n ) O(4n) O(4n)

第三题:Clock Tree
题目:

题目描述
Farmer John 的新牛棚的设计十分奇怪:它由编号为 1…N 的 N 间房间(2≤N≤2500),以及 N−1 条走廊组成。每条走廊连接两间房间,使得每间房间都可以沿着一些走廊到达任意其他房间。
牛棚里的每间房间都装有一个在表盘上印有标准的整数 112 的圆形时钟。然而,这些时钟只有一根指针,并且总是直接指向表盘上的某个数字(它从不指向两个数字之间)。
奶牛 Bessie 想要同步牛棚中的所有时钟,使它们都指向整数 12。然而,她头脑稍有些简单,当她在牛棚里行走的时候,每次她进入一间房间,她将房间里的时钟的指针向后拨动一个位置。例如,如果原来时钟指向 5,现在它会指向 6,如果原来时钟指向 12,现在它会指向 1。如果 Bessie 进入同一间房间多次,她每次进入都会拨动这间房间的时钟。
请求出 Bessie 可能的出发房间数量,使得她可以在牛棚中走动并使所有时钟指向 12。注意 Bessie 并不拨动她出发房间的时钟,但任意时刻她再次进入的时候会拨动它。时钟不会自己走动;时钟只会在 Bessie 进入时被拨动。此外,Bessie 一旦进入了一条走廊,她必须到达走廊的另一端(不允许走到一半折回原来的房间)。

输入
输入的第一行包含 N。下一行包含 N 个整数,均在范围 112 之内,表示每间房间初始时的时钟设置。以下 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(比如,移动到房间 1232,最后到 4)。

方法:

  1. 方法 1 1 1:动态规划。时间复杂度为 O ( n 2 ) O(n^2) O(n2)
  2. 方法 2 2 2:数学方法:看一下每个结点的深度是奇数还是偶数,然后判断。时间复杂度为 O ( n ) O(n) O(n)

总结:这是我遇到的最难的第一题。下一次我一定会更好!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值