2022蓝桥杯省赛 a组

Posted on 2022-04-11 14:24  Capterlliar  阅读(984)  评论(0编辑  收藏  举报

以下解法是听了wls讲解后写的,先膜为敬%%%

b站链接

D 选数异或

题意:给出一个数组a和一个数x,有m个询问,询问在区间[l,r]内是否存在两个数异或结果为x。

正解:找出每个数与x异或后与它相等的左边(右边)第一个数的位置。左右无所谓,异或是相对的,如果靠近当前数a最近的是在它右边的b,那对b来说它肯定能找到a。然后线段树求区间内每个数左侧离它最近的最小值,判断是否在区间内。

(wls:我不明白为什么第四题要考这么难的题

E 爬树的甲壳虫

题意:有个甲壳虫,每次花1s往上爬一格,有Pi的几率掉回树根,求爬到n的期望。

正解:En为从这一点走到n的期望。En=0,求En-1。 有Pn-1的概率掉下去,则En-1=Pn-1*E0+(1-Pn-1)*En+1.依次代入,求出E0。但E0现在不知道,相当于每个式子都有未知数。E0=P0*E0+(1-P0)*E1+1,E0=E1+1/(1-P0),常数项最后为1/(1-Pi)+1/(1-Pi)(1-Pi-1)+...+1/(1-Pi)...(1-P0)的形式。En=0,所有最后答案就是那一串。算概率是从起点往终点算的,算期望是从终点往起点算的。

F 青蛙过河

题意:小青蛙要上x次学,每往返一次就要过2次河,总共过2x次河。河里有n块石头,每块石头有一个高度,每用一次,高度减一,高度为0的石头不能用。现在求小青蛙的最小跳跃距离,使得它能上完这x次学。

正解:每次贪心地跳,能跳多远跳多远,这是只跳一次的策略。要跳2x次,让这2x次一起跳,显然最远的距离有可能容纳不下这2x次,那就找之前的节点一起分担。这就导致了最后落脚点不同。然后针对不同的落脚点,再往后推f格,最后统计这些所有的落脚点推出去的格数能否容纳完这新的2x次。用并查集记录左边第一个非0点的位置可以把复杂度降到O(n)。但还是很难写的样子。

G 最长不下降子序列

题意:给出一个序列,现在你可以把其中长为k的连续一段换为任意一个数,求操作一次后的最长不下降子序列长度。

正解:前一段固定,中间一段为a[i-1],最后一段固定,只要看最后一段作了多少贡献。也就是将a[i+k]改成a[i],再求之后的最长不下降子序列。用权值线段树统计i+k+1后区间内大于a[i]的数个数最大值。

H 扫描游戏

题意:二维平面上有n个点和一根棒,棒长L。现在这根棒从y轴正向顺时针扫过去,没碰到一个点,棒长相应增加一段。求一路扫过去扫到的点的顺序。

正解:用叉积极角排序。令所有比当前高的线段为0,线段树找下一个非0的位置在哪里,然后再把比它矮的加入线段。好难写(

I 数的拆分

题意:给出一个数a,求问这个数能否拆成x1y1x2y2的形式,其中x1x2为正整数,y1y2为大于等于2的正整数。

正解:先是一个我等蒟蒻想不到的结论:如果能拆至少是一个x2y3的形式。算一下1018的1/5次方,大概是4000,也就是x和y里小的那个数不超过4000。算一下4000里的数的平方和3次方,看看余下的数是否是平方或三次方,这样复杂度还是会超。再进一步先算出里面的质数,然后分一分。如果有一个素因子只出现1次则不行,否则都可以塞到2和3里面去。判平方和三次方可以sqrt什么的一下,然后看最近的两个数能不能拼出来。

(wls:本场比赛最难的题来了。至少是个金牌题吧,银牌题也没长成这样的。

J 推导部分和

题意:给出若干组形如sum[l...r]=x的数据,求sum[l...r]的值,如果不能求出输出unknown。

正解:给出的相当于Si-Sj-1,连边加权值,令一个位置为0,bfs一次。如果两个数不在一个连通块里,那么无解。