(指没进面试
day0
下午飞机延误,八九点才吃到饭
晚上爽快战斗
day1
上午试机,桌子贼tm高+巧克力键盘
试机T2写了60
下午day1,随机到了隔壁机房,普通键盘+正常桌子
然后点开没有计算器
T1 40min切了,感觉良好(flag
T3 德 州 扑 克,直接弃掉
下面是T2的作死秀:
4h:2h一题,这波稳了(,如果这个T2没有操作1那我将绝杀
3.5h:1操作直接暴力吧,看起来次数是线性的,部分分还不会(不想写),来个splay维护单调栈
3h:写了一大半了,这不直接200
2h:草这个次数怎么不是线性的,30000都跑不动
1h:赶紧把相邻大于等于改成大于,这样次数应该会少一些,把splay复制一遍
10min:终于能跑50000了,然而n<=300000(
TLE 7
出来后想了想,发现39分直接把[L,L+操作1]先求出,然后对[L,R+操作1]上线段树维护单调栈就没了
垂死病中惊坐起,小丑竟是我自己
最后100+7+0=107,被吊打了
晚上放弃治疗
day2
上午摸鱼参观,中午去金拱门
下午day2,回到了一开始的阴间机房
二 十 七 条 可 怜
T1 1h切了
T2看起来又是数据结构,我谢谢您啊
T3感觉可以搞,想了1h+发现不会,想起昨天的经历写了n<=3的10分+输出0的5分
还剩2h搞T2,想了想写了n^2贪心,最后0.5h又打表发现c=1等于找两个数-1,线段树解决
最后100+51+15=166,出来一问感觉还行
但是day1已经崩了,所以无所谓
day3
半路上发现面试没过,打道回府
飞机鸽了,但没完全鸽
day4
1:00到校
题目大意
day0(试机)
T1
给出一棵以1为根的树和一个数组a,Q次询问
每次给出若干区间,求把[al1,ar1],[al2,ar2]...[alk,ark]拼起来后的数组b,有多少个j满足任意i<=j都有bj是bi祖先
∑k,n,Q<=几十万
T2
给出数组a,Q次询问,每次交换ax,ay
求每次操作后的最长后缀,满足能用排序后的后缀得到原后缀,操作是选择ai<ai+1<ai+2,然后把ai+2已到ai前
60%:n,Q<=5000
按位确定,写出式子后发现前移奇偶不变,再发现和后面的小于他的数有关
100%:n,Q<=几十万
day1
T1
n*n的矩阵,求K次操作后的矩阵,一次操作a'[i,j]=a中第i行+a中第j列的和
n,K<=1000
一个数的贡献只与是否在终点同行/列有关,记0/1,0/1,写成矩阵转移
T2
给出数组a,Q次操作
操作1:顺序把[L,R]中ai变成max(ai,ai+1)
操作2:询问[L,R]中顺序过去的单调栈中元素和
7%:n,Q<=1000
暴力
39%:操作1=[1,n]
真实的ai=a[i,i+操作1],求出[L,L+操作1]然后线段树维护单调栈
100%:n,Q<=300000
维护a'[i]=a[i,b[i]],1操作等于把b前移,维护a[bi,bi+1]然后线段树求单调栈,再用splay维护每个差分元素的位置,查询先求a[L,L+bi],然后找位置线段树
实现感觉可以把删掉的当成0丢进去,splay找到R往前第一个非0的;或者直接指向每次的R,因为线段树上删掉的变为了0,所以splay上删掉的一定指向左右两端非0中间的,查询等价
也可以线段树?
T3
德州扑克
day2
T1
给出一棵树,求删掉K条边再接上一条边变成树的所有方案中的相邻两点dis和
K<=1,n,Q<=100000
写出式子,发现之和断掉一条边后两边内部dis和与到断点dis和有关,换根dp
T2
n道菜,第i道菜价值ai,消费a元可获得floor(a/c)张代金券,一张抵1元
用了b张的实际花费为a-b元,获得floor((a-b)/c)张代金券
安排代金券的使用,使顺序吃菜的总花费最小,Q次修改把ax变为y,求每次的答案
40%:n,Q<=5000
贪心,先顺序把a变为kc,然后反着解决剩下的,用栈维护每个位置剩余张数
问题是当a减少时可能a产生的张数也变少,有可能花费+1,发现由于此时a-1了所以可以看做不变,即ai有bi次抵挡(在j*c时),bi是i用了的张数
11%:c=1
发现用i消j时二者张数-1,即每次找两个数-1,判max和sum即可
15%:c=2
11%:a随机[1,1e12]
29%:n,Q<=100000
T3
在[0,m]中随机撒n个点ai,满足用[ai,ai+K]覆盖后没有一个位置覆盖次数>2
求概率
10%:n<=3
容斥,讨论min(a)
(5%:输出0
100%:n<=50,K<=m<=150