华师菜鸟杯2020

A

考场模拟一天结果一看题解被暴力卡过去了

把每个蚂蚁爬到原点的时间扔队列里排序,队首蚂蚁拿完后加上往返一次的时间扔到队尾模拟

B

分种类前缀和

C

打个表可以发现,数字递增规律约是等差数列递增,但是遇到平方数会停止增加

[x=lfloorsqrt{n} floor\ sum=(1+2+…+n)-(1^2+2^2+…+x^2)\ sum=frac{(1+n)n}{2}-frac{x(x+1)(2x+1)}{6}\ ans=sum*6 ]

D

(4)格等于跳两个(2)格,所以奇数都能跳到,偶数都跳不到

E

白给

F

假设全(0)往里填(1),首先不会连着放,不然没用,徒增字典序

所以除了题目给定的不能放(1)的位置,一个(1)的两侧也是不能放(1)的位置

除了边缘,每放一个(1)都会增加两点贡献

所以枚举最后一位放(1)或者不放(1),然后从右到左能放就放

G

一个炮塔两侧不满一整段的部分单独记录,只有(2*m)次操作

中间部分线段树记录

统计答案时找出数值最大的(k)段翻倍

H

反悔贪心,想到了没写出来

观察数据范围,(n*sum u_i)只有(1e6),可以对每颗草单独处理

开两个堆,一个存前面多出来的,另一个存前面空缺的

以当前位置需要放入为例(val_i=min(a*i,c*|j-i|-val_j))

其中(val_j)是曾经放入的多出的药草

这里关于(c*|j-i|)的处理,可以在堆中放入(-val_j-c*j),取出时加上(c_i)

I

不会,(lyh)聚聚出的数学题太毒了太难了

J

从前向后枚举

若是先见到大于当前位置的字符就直接挪过来,记录当前答案加之前挪动相等字符的答案

若是见到等于当前位置的字符就将字符挪过来,在后面继续寻找大于的字符

模拟题真是综合考研马力和清晰的思路

K

记录两个字符串相差多少个(H),再记录有多少位不同

每次改变可以减少(1)个不同,每次交换可以改变(2)个不同

先改变到(H)相等再交换

L

签到题,看清题目

原文地址:https://www.cnblogs.com/knife-rose/p/15371593.html