专栏文章

MX Day4

生活·游记参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@minpa4it
此快照首次捕获于
2025/12/02 06:07
3 个月前
此快照最后确认于
2025/12/02 06:07
3 个月前
查看原文

T1:

1759569904399.png
做法:
1、我们可以先用单调栈找出每个数的最大值覆盖范围;
2、之后我们可以通过枚举每一个点,以这个点为最大值,枚举l和r,然后对这两个位置的s数组进行异或;
3、用桶数组记录每一种异或结果出现次数
4、最后别忘了要做前缀和,因为我们的序列要求是异或值小于等于x,不是等于x。
关键点:
1、我们要做前缀和,方便O(1)查询区间异或值;
2、我们要保证从当前数到它的l处的距离小于等于后面的剩下段长度,这样我们可以保证枚举长度尽量少。

T2:

1759577727875.png
做法:
1、首先,我们可以考虑链表的做法,给每一个值挂一个链表,表示这个值在哪里出现过;
2、之后,我们直接操作;
3、如果余数是1,我们就直接用ans对mn异或,得到的结果到时候直接输出;
4、如果余数为2,则进行加数操作;我们首先可以不断遍历表头找出最小的数,之后,我们将这个数和此时随机化得到的结果对比,如果比随机化的结果大,则直接赋值;否则加入链表;
5、如果执行操作三,现将将表头删除,之后就是判断此时的最小数,改变最小数就OK了。

评论

0 条评论,欢迎与作者交流。

正在加载评论...