2020.04.29【NOIP普及组】模拟赛C组30 总结

2020.04.29 2020.04.29 2020.04.29 N O I P NOIP NOIP普及组】模拟赛 C C C 30 30 30 总结

这次比赛我考了 241.7 241.7 241.7分, 12 12 12名,很差。
在这里插入图片描述
第二道题我犯了一个错误,就是没有去验证结果。

第一题: T h e The The G r e a t Great Great R e v e g e t a t i o n Revegetation Revegetation

题目

题目描述
长时间的干旱使得Farmer John的N块草地上牧草匮乏。随着雨季即将到来,现在应当是重新种植的时候了。
在Farmer John的储物棚里有四个桶,每个桶里装着一种不同的草种。他想要在每块草地上播种其中一种草。作为一名奶农,Farmer John想要确保他的每头奶牛都能得到丰富的食谱。他的M头奶牛每一头都有两块喜爱的草地,他想要确保这两块草地种植不同种类的草,从而每头奶牛都可以有两种草可供选择。Farmer John知道没有一块草地受到多于3头奶牛的喜爱。
请帮助Farmer John选择每块草地所种的草的种类,使得所有奶牛的营养需求都得到满足。

输入
输入的第一行包含N(2≤N≤100)和M(1≤M≤150)。以下M行,每行包含两个范围为1…N的整数,为Farmer John的一头奶牛喜欢的两块草地。

输出
输出一个N位数,每一位均为14之一,表示每一块草地上所种的草的种类。第一位对应草地1的草的种类,第二位对应草地2,以此类推。如果有多种可行的解,只需输出所有解中最小的N位数。

样例输入
5 6
4 1
4 2
4 3
2 5
1 2
1 5

样例输出
12133

数据范围限制

解题方法

这道题的方法是直接暴力贪心枚举每一个的情况。
我们设 c i c_i ci表示第 i i i块草地的种类。
那只要枚举判断一下 1 1 1 4 4 4之间是否合法就行了。

得分情况

比赛时满分。

第二题: M e a s u r i n g Measuring Measuring T r a f f i c Traffic Traffic

题目

题目描述
Farmer John的农场边上的高速公路最近出现了引人注目的流量上升,或者至少Farmer John看起来是这样的。为了证实这件事,他打算用一组传感器测量公路上的车流量,每个传感器被用来测量一小段路面上的车流量的数值。
不幸的是,某一天经过牛棚的时候,Farmer John被绊倒了,装有传感器的盒子掉进了一个巨大的奶缸,之后它们就不能正常工作了。比起之前可以产生一个精确的车流量读数,现在每个传感器只能输出一个可能结果的范围。例如,一个传感器可能会给出范围[7,13],表示在这段路面上的车流量不小于7,并且不大于13。
高速公路经过农场的这一段长N英里,车辆仅从一个方向通过公路,从第1英里驶向第N英里。Farmer John想要安装N个传感器——每一个监测高速公路上1英里长的路段。在其中某些路段上,有能够使得车辆进入高速公路的上匝道;在所有这样的路段上,Farmer John会将传感器装在上匝道上,测量流入的(近似)车流量。在某些路段上有能够使得车辆离开高速公路的下匝道;在所有这样的路段上,Farmer John会将传感器装在下匝道上。每一个路段包含至多一个匝道。如果在公路的一个路段上没有上匝道或下匝道,Farmer John就将传感器装在高速公路的主路上。
给定Farmer John的N个传感器的读数,请求出在高速公路第1英里之前和第N英里之后车流量的最为准确的可能范围。这些范围应当与所有N个传感器的读数相一致。

输入
输入的第一行包含N(1≤N≤100)。余下N行每行按从第1英里至第N英里的顺序描述一段1英里长的路段。每行包含一个字符串,为"on"(如果这段路上有一个上匝道),"off"(如果这段路上有一个下匝道),或者是"none"(如果这段路上没有匝道),然后是两个范围为01000的整数,表示这段路上的传感器的读数所给出的下界、上界。如果这段路上包含匝道,传感器读数来自于匝道,否则来自于主路。至少一个高速公路路段的描述会是"none"。

输出
输出的第一行包含两个整数,为第1英里之前的车流量的最准确的可能范围。第二行包含两个整数,为第N英里之后的车流量的最准确的可能范围。输入保证存在符合要求的解。

样例输入
4
on 1 1
none 10 14
none 11 15
off 2 3

样例输出
10 13
8 12

数据范围限制

提示
在这个例子中,路段2和路段3的读数组合在一起告诉我们通过这两个路段的车流量为范围[11,14]之间的某个值,因为只有这个范围与两个读数[10,14][11,15]均一致。在第1英里,恰有1单位的车辆通过上匝道进入,所以在第1英里之前,车流量一定在范围[10,13]之内。在第4英里,2单位到3单位之间的车辆通过下匝道离开,所以这段路之后可能的车流量范围为[8,12]

解题方法

这道题的方法是之间用两个变量维护左端点和右端点。

  • 首先我们看第一个答案:
    直接逆推——把上匝道的车给减回去,把下匝道的车给加上去。
  • 第二个答案:
    跟上面差不多,但是直接顺推即可。

得分情况

我太难了。
本来是满分。
冒死把输出改成 c o u t cout cout后,忘了空格。。。
比赛时 0 0 0分。
改题后 100 100 100分。

第三题: M o o B u z z MooBuzz MooBuzz

题目

题目描述
Farmer John 的奶牛们最近成为了一个简单的数字游戏“FizzBuzz”的狂热玩家。这个游戏的规则很简单:奶牛们站成一圈,依次从一开始报数,每头奶牛在轮到她的时候报一个数。如果一头奶牛将要报的数字是 3 的倍数,她应当报“Fizz”来代替这个数。如果一头奶牛将要报的数字是 5 的倍数,她应当报“Buzz”来代替这个数。如果一头奶牛将要报的数字是 15 的倍数,她应当报“FizzBuzz”来代替这个数。于是这个游戏的开始部分的记录为:
1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, 16
由于词汇的匮乏,奶牛们玩的 FizzBuzz 中用“Moo”代替了 Fizz、Buzz、FizzBuzz。于是奶牛版的游戏的开始部分的记录为:
1, 2, Moo, 4, Moo, Moo, 7, 8, Moo, Moo, 11, Moo, 13, 14, Moo, 16
给定 N(1≤N≤10^9),请求出这个游戏中第 N 个被报的数。

输入
输入包含一个整数 N。

输出
输出游戏中被报出的第 N 个数。

样例输入
4

样例输出
7

数据范围限制
测试点 2-5 满足 N≤10^6。
全部测试点满足 N≤10^9。

提示
第 4 个被报的数是 7。前 4 个被报的数是 1247,因为我们在奶牛说“Moo”时就会跳过数字。

解题方法

这道题我们找规律。
首先把所有报的数列出来,每行 8 8 8个。
如下:
在这里插入图片描述
可以发现 a i , j = a i − 1 , j + 15 a_{i,j}=a_{i-1,j}+15 ai,j=ai1,j+15
设第 n n n个数的行在 b b b,列在 c c c,那么 a b , c = a 1 , c + 15 × ( b − 1 ) a_{b,c}=a_{1,c}+15\times(b-1) ab,c=a1,c+15×(b1)
那么我们直接预处理 1 − 15 1-15 115中符合要求的数,然后直接做就行了。

得分情况

比赛时满分。

第四题: M i l k Milk Milk V i s i t s Visits Visits

题目

题目描述
Farmer John 计划建造 N(1≤N≤10^5)个农场,用 N−1 条道路连接,构成一棵树(也就是说,所有农场之间都互相可以到达,并且没有环)。每个农场有一头奶牛,品种为更赛牛或荷斯坦牛之一。
Farmer John 的 M 个朋友(1≤M≤10^5)经常前来拜访他。在朋友 i 拜访之时,Farmer John 会与他的朋友沿着从农场 Ai 到农场 Bi 之间的唯一路径行走(可能有 Ai=Bi)。除此之外,他们还可以品尝他们经过的路径上任意一头奶牛的牛奶。由于 Farmer John 的朋友们大多数也是农场主,他们对牛奶有着极强的偏好。他的有些朋友只喝更赛牛的牛奶,其余的只喝荷斯坦牛的牛奶。任何 Farmer John 的朋友只有在他们访问时能喝到他们偏好的牛奶才会高兴。
请求出每个朋友在拜访过后是否会高兴。

输入
输入的第一行包含两个整数 N 和 M。
第二行包含一个长为 N 的字符串。如果第 i 个农场中的奶牛是更赛牛,则字符串中第 i 个字符为 'G',如果第 i 个农场中的奶牛是荷斯坦牛则为 'H'。
接下来下 N−1 行,每行包含两个不同的整数 X 和 Y(1≤X,Y≤N),表示农场 X 与 Y 之间有一条道路。
接下来下 M 行,每行包含整数 Ai,Bi,以及一个字符 Ci。Ai 和 Bi 表示朋友 i 拜访时行走的路径的端点,Ci 是 'G''H' 之一,表示第 i 个朋友喜欢更赛牛的牛奶或是荷斯坦牛的牛奶。

输出
输出一个长为 M 的二进制字符串。如果第 i 个朋友会感到高兴,则字符串的第 i 个字符为 '1',否则为 '0'。

样例输入
5 5
HHGHG
1 2
2 3
2 4
1 5
1 4 H
1 4 G
1 3 G
1 3 H
5 5 H

样例输出
10110

数据范围限制
测试点 2-5 满足 N≤10^3,M≤210^3。
全部测试点满足 N≤10^5,M≤10^5。

提示
在这里,从农场 1 到农场 4 的路径包括农场 124。所有这些农场里都是荷斯坦牛,所以第一个朋友会感到满意,而第二个朋友不会。

解题方法

对于 41.7 41.7 41.7分的方法

直接暴力每次以 a i a_i ai为根做一次 d f s dfs dfs,然后直接用 w h i l e while while直接从 b i b_i bi跳到 a i a_i ai
时间复杂度为 O ( n 2 ) O(n^2) O(n2)

对于满分的方法
  • 第一种方法:并查集
    直接并查集处理就行了。
  • 第二种方法:树形 d p dp dp L C A LCA LCA
    首先设根节点为 1 1 1
    然后我们设 d p i dp_i dpi表示从根节点到 i i i号结点颜色为 H H H的结点数量。
    那么转移
    d p i = { d p j + 1 ( a i = H ) d p j ( a i = G ) dp_i=\begin{cases} dp_j+1&(a_i=H)\\ dp_j&(a_i=G) \end{cases} dpi={dpj+1dpj(ai=H)(ai=G)
    那么我们就可以求出 d p dp dp数组。
    接着我们发现结点 u u u到结点 v v v路径如下:
    在这里插入图片描述
    注: u u u结点在绿色, v v v结点在红色,蓝色是路径,黄色是经过的点。
    其实可以发现每一条路径都是从 u u u走到 l c a ( u , v ) lca(u,v) lca(u,v)再走到 u u u(除了一种情况——就是一个结点是另一个结点的祖先)。
    如果不理解 l c a lca lca,可以去百度一下。
    其实 l c a lca lca就是两个点的最近公共祖先,方法是倍增。
    那么答案就是这条路径上 H H H颜色有 d p u + d p v − 2 × d p l c a ( u , v ) + t dp_u+dp_v-2\times dp_{lca(u,v)}+t dpu+dpv2×dplca(u,v)+t
    注:如果 l c a ( u , v ) lca(u,v) lca(u,v)也是颜色 H H H,那么 t = 1 t=1 t=1,否则 t = 0 t=0 t=0
    我们只要判断一下这种颜色的数量是否大于 0 0 0就行了。
    这就是方法。

得分情况

比赛时 41.7 41.7 41.7分。
改题后满分。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值