题解(但好像不完全是)
早上还在讨论板子内容,结果上课讲的全都没考。所以这里发一下自己几个题的思路,有问题欢迎指正。
写的比较简短。因为好像没什么好写的。
T1 排队做核酸
近期,多地推出常态化核酸检测政策,要求市民每隔一段时间都要完成一次核酸检测,反复循环。如果没有,在进入相关场所时,扫场所码会有弹窗提醒,将无法乘坐公共交通工具、无法进入公共场所。
为了响应国家号召,为防疫做贡献,每隔几天排队做一次核酸已经成为市民小王的日常。但并不是每次去他都能顺利检测,因为有时排队人很多,有时又因为有急事要离开,所以每个人因各种原因都有自己的排队忍耐度,假如小王的排队忍耐度为5,说明他最多允许自己前面排5个人,否则他就会离开。
假如你是核酸检测人员,已知现在有n人排队,和n个人的排队忍耐度,按照他们的排队顺序请你计算出今天会检测几个人。
第一行输入一个整数 n(n<=1000) 。
第二行输入n个人的排队忍耐度,数据之间用单个空格隔开 (忍耐度<=1000) 。
思路
输入的时候就可以直接判断,如果答案比这个人的忍耐度低就将答案增加。
T2 人工降雨
每个位置都有一个建筑,每个位置占据的宽度都是一样,可能有不同的高度,现在需要挑选一个位置的上方开始人工降雨,问你最多能淋到雨的位置有几个。如果一个位置能被雨淋到,而且紧挨着的旁边的建筑不高于他,那么旁边的建筑也能被雨淋到。
第一行输入一个整数 n
第二行输入 n 个数,表示 n 个建筑的高度。
1<=n<=1000 ,建筑的高度都 <=1000
思路
懒得思考看到数据范围写了个BFS,如果有一个数比两边都大那么考虑搜索更新答案。
T3 致幻度测试
楠枫误食了毒蘑菇,主治医生在给他挂上点滴后,开始对他进行致幻度检查。医生采取的检查方法是,给楠枫一个单词,让他照着誊抄一遍。但是由于楠枫被幻觉影响,并不能很好的完成这个测试。比如他也许会把 “anagram” 抄成 “nagaram”,也可能把 “rat” 抄成 “car”。
对于字符串 S 和 T,若 S 和 T 中的每个字符出现的次数都相同,则称 S 和 T 互为字母异位词。主治医生给出了 n 个单词来测试楠枫,如果这 n 个单词测试的结果有 80% 及以上是字母异位词而非错误单词,才会认为楠枫的幻觉有所减轻。现在给出 n 个单词(都由英文字母构成),以及楠枫的誊抄结果,需要你帮忙判断一下楠枫的致幻情况是否减轻。
第一行一个整数 n (1≤n≤1000) ,代表 n 个测试。
接下来 2 行,第一行是 n 个待测试单词,第二行是 n 个被誊抄的单词,单词的长度为 [1,1000] 。
思路
暴力统计一下出现次数即可。
T4 公寓分配
有 n 个申请人和 m 个空闲的公寓。你的任务是分配公寓,以便尽可能多的申请人能够得到一个公寓。每个申请人都有一个期望的公寓大小,他们会接受任何大小与期望大小接近的公寓。
第一行输入三个整数 n,m 和 k:申请人的数量,公寓的数量和最大允许差异。接下来一行包含 n 个整数 a1, a2, …, an:每个申请人的期望公寓大小。如果申请人的期望大小为 x,他或她将接受任何大小在 x-k 和 x+k 之间的公寓。最后一行包含 m 个整数 b1, b2, …, bm:每个公寓的大小。
输出一个整数:能够得到公寓的申请人的数量。
思路
贪心。申请人可以接受大小在 x-k 到 x+k 的公寓,尝试反向考虑将每个公寓处理为 a_i-k 到 a_i+k 的区间,给公寓分配申请人。将公寓和申请人分别排序,如果多个申请人可以分配到同一个公寓取最前者。
T5 塔
你有n个立方体,要用它们建造塔。每当两个立方体叠在一起时,上面的立方体必须比下面的立方体小。你必须按照给定的顺序处理立方体。你可以将立方体放在现有的塔上,也可以开始新的塔。请问最少需要多少个塔?
思路
贪心。加二分查找就不会超时了。
T6 移除比赛
有一个包含n个数字的列表和两个玩家交替移动。每一步,玩家可以从列表的开头或末尾移除一个数字,他们的得分会增加这个数字。两个玩家都试图最大化他们的得分。当两个玩家都采取最优策略时,第一个玩家的最大可能得分是多少?
思路
记忆化搜索。每次搜玩家1在 [l,r] 时玩家为 p 的最大得分。若当前轮到玩家1则取头或取尾加上分数再取最大值,若当前轮到玩家2则取玩家2取头或取尾的最小值。
区间DP也可以。
大致如上。总体来讲是比较简单的。