NEFU大一省赛训练1(全题解)
OP
一个半小时七道题,两个小时一道题555;
G题鲨我;
A 哪些数不在
差分
思路
即在区间左端点标记+1,右端点标记-1;
遍历所有可行范围,遇到+1即计数值+1,-1亦然;
处理好开闭问题后,计数值为0的位置即没有被线段覆盖;
代码
1 |
|
B 闹钟
gcd
思路
要求从第一个工作开始时间开始,所有工作开始时间均响铃,即求所有工作开始时间与第一次工作开始时间的差的最大公倍数;
再遍历所有可行响铃间隔,找出第一个满足条件的即可;
代码
1 |
|
C 减法
思路
对于这个数据量,模拟的话大概会爆TLE,于是我打算记录累计减去的值;
在代码中,这个值即为del;
原题中所求的最小非零值即为最小的大于del的值;
再累加减去的值即可(注意每次减去的值不是找到的数本身,而是找到的数减去该次del值);
代码
1 |
|
D 隧道
bfs
思路
大致估计了一下,对于目标块每一个点进行遍历时间复杂度也遭得住,也没想到比较好的办法进一步降低时间复杂度,于是做得比较暴力;
对于起始点进行正常的bfs形成起始块,如果目标点已达,则输出0;
否则对目标点bfs,再对连通块中的每一个点算出距离起始块对应最近点的距离;
os:竟然在字符串处理上栽了一发;
代码
1 |
|
E 尖括号
思路
对于一个尖括号串,最左侧的>
右面的所有符号均可以被其消去,操作后此符号在最右端,最右侧的<
同理;
接下来为了仅剩一个符号,我们需要统计要使 以上符号出现在在对应的端点 所需要删除的符号数并取最小值;
(即对于<<<<>>><><<>
,若使最左侧的>
出现在左端,则需要删去左侧的四个<
,若使最右侧的<
出现在最右端,需要删去右侧的一个>
,故最小删去数为1)
代码
1 |
|
F 恐龙的故事
素数筛,模拟
思路
模拟即可
代码
1 |
|
G 序列和
思路
这个题的描述有一些些些些问题,实际上需要输出的的是以x+y为第一排序依据升序排序,以x为第二排序依据降序排序之后的第一个;
为方便描述我们将删除序列中一个元素后的序列和称为缺刻和;
对于所有的缺刻和,我们只需要记录能满足该缺刻和的所有序列中,序列号最小的两个序列号;
在对所有缺刻和寻找符合要求的x+y即可;
注:这道题个人既被卡过空间,又被卡过时间,经测试,unordered_map所用空间比map少1/10左右;
用时:1077ms/2000ms,空间占用:60236k/65535k
代码
1 |
|
H 巧克力
模拟
思路
按要求模拟即可
代码
1 |
|
ED
\