清华集训 2014

https://www.cnblogs.com/mangoyang/p/11650708.html

玛里苟斯

菜。

\(k=1\) 时,考虑算每一位异或值为 \(1\) 的贡献,发现其为 \(2^{n-1}\)。证明考虑如果这一位有数,那么选择奇数个和选择偶数个的次数是相等的。所以只需输出所有数的按位或的值除以 \(2\) 就行了。

\(k=2\) 时,把平方拆开,分类讨论选的情况就行了。

\(k\ge 3\) 时,因为答案 \(< 2^{63}\),所以数列里的最大值 \(<2^{21}\)。然后我们可以证明一个集合的答案等于其线性基的答案。具体就是集合里一个数 \(x\) 异或集合里另一个数 \(y\) 之后答案不变。暴力枚举线性基里的选取情况求答案就行了。

https://yhx-12243.github.io/OI-transit/records/uoj36.html

https://uoj.ac/submission/624225

主旋律

好厉害。nb 容斥。

首先可以了解一下有向图 DAG 子图计数:https://www.cnblogs.com/Go7338395/p/14907440.html

然后 https://www.cnblogs.com/NeosKnight/p/10876846.html 写的很好。我就不写了。

数数好难。

https://yhx-12243.github.io/OI-transit/records/lydsy3812%3Buoj37.html

https://uoj.ac/submission/623900

奇数国

shaber 题。

线段树维护区间乘积以及每个质数是否出现。直接做就行了吧。

https://uoj.ac/submission/624181

卡常数

k-D Tree。

上下界剪枝就行。

出去散散心回来就过了。什么水平。

https://uoj.ac/submission/624899

矩阵变换

稳定婚姻问题模板。参考:https://www.cnblogs.com/Lrefrain/p/12373898.htmlhttps://yhx-12243.github.io/OI-transit/records/lydsy3816%3Buoj41.html

之前完全没学过这东西,鉴定为菜。

显然这是一个行匹配数的过程。不妨设 \(pos_{i,j}\) 表示第 \(i\) 行数 \(j\) 的位置。

那么不合法的条件就是:

  • \(x\) 行匹配数 \(i\)\(y\) 行匹配数 \(j\),则 \(pos_{y,i}<pos_{y,j}\)\(pos_{x,i}<pos_{y,i}\)

所以可以知道,对于每行,数字越靠左越优;对于每列,它在这一行的位置越靠右越优。

可以用队列模拟匹配的过程。

https://uoj.ac/submission/624166

虫逢

神秘随机。

https://www.cnblogs.com/windf/p/16771618.html

https://uoj.ac/submission/624558

玄学

强制在线上线段树转化成二进制分组。很厉害的思想。

建一棵线段树,下标为时间轴。对于每个线段树上的时间区间,维护每个连续段需要做的变换。显然这个变换是可以复合的。

由于 \(k\) 个操作最多将序列划分为 \(2k+1\) 个连续段,因此直接拿 vector 去存储是不会爆空间的。

pushup 就是类似归并排序的过程。注意只有一个区间的所有子区间全部填满了才需要 pushup,因为只有这种区间求答案才有可能用到。

求答案只需要找到对应的时间区间,然后找到 vector 里存储的第一个右端点 \(\ge\) 查询位置的变换并做这个变换。从左到右做是按照时间来的,因此没有问题。

https://uoj.ac/submission/624530

posted @ 2023-06-09 09:35  csxsi  阅读(8)  评论(0)    收藏  举报