XMOJ 题目笔记

☆ 符号代表该比赛的订正已完成。

5 月 Div.2 ☆

场切:ABCDE

F 想出正解了,但是没写对拍 100->72,痛失 AK。

5 月 Div.1

场切:A(状压 DP)

B

TODO:

C

TODO:

D

XMOJ8516

简要题意:给定 \(n\)。你需要找一个数 \(w\),以 \(w\) 为参数画格子:在前 \(\lfloor \frac n w \rfloor\) 行每行画 \(w\) 个格子;紧接下来的一行画 \(n \bmod w\) 个格子紧贴左侧;以从上往下为第一关键字,从左往右为第二关键字,依次在格子中写上 \(1 \sim n\) 的数字。(下方有图解释)从 \(1\) 开始走,可以走到相邻(四连通)格子,不能走到质数格,目标为走到 \(n\)。找一个最小的 \(w\),使得目标被满足。保证 \(n\) 不为质数。可以证明答案必然存在。\(n \le 10^{24}\)

原 OJ 上的图片

先写 BFS 暴力,观察可得,数据较小时无规律,数据较大时答案好像只有 \(8\)\(14\)

接下来不难了啊,我怎么就把这题给弃了呢!但凡仔细分析一下可知,\(n\) 足够大时,\(n \bmod 8 = 1\)\(n-8\) 为质数时答案为 \(14\),否则答案为 \(8\)

MR 判质数即可。(根据 OEIS A014233\(10^{24}\) 范围内确定性判素可以用前 \(13\) 个质数)

6 月 Div.1

场切:A(环上 DP)

B

没想出正解,但是骗分骗到 48,非常好。

TODO:

C 跳房子游戏

XMOJ8506

想出正解了,但是 100->10。

简要题意:求 \(x\) 是数列 A010062(递推式:\(a_1 = 1, a_i = a_{i-1} + \text{popcount}(a_{i-1})\))的第几项(或报告 \(x\) 不在该数列中)。\(x \le 10^{12}\)

TODO:

D 背景墙

XMOJ8627

简要题意:已知 \(n,m,k\),求用 \(k\) 种不同颜色给 \(n \times m\) 的方格染色本质不同的方案数(\(\bmod 10^9 + 7\))。两种方案本质不同,当且仅当两种方案不能通过上下左右的循环移位得到。\(n,m,k \le 10^9\)

前置知识:Burnside 引理。

\((a,b)\) 表示向右移 \(a\) 位,向下移 \(b\) 位的置换。

根据 Burnside 引理,可知答案为 \(\frac 1 {nm} \sum\limits_{(a,b)} \left( (a,b) \text{下的置换不变元个数} \right)\)

\((a,b)\) 作用下的轨道长均相同,为 \(L = \text{lcm}(\frac n {\gcd(a,n)}, \frac m {\gcd(b,m)})\)。轨道个数为 \(\frac {nm} L\)

对于置换不变元,同一根轨道上必须染同样颜色,每根轨道的染色方案互相独立,置换不变元个数为 \(k^{\frac {nm} L}\)

指数太抽象,所以幂运算用 \(\text{pow}\) 代替。

\[\begin{aligned} & \frac 1 {nm} \sum\limits_{a=1}^n \sum\limits_{b=1}^m \text{pow}(k, \frac {nm} {\text{lcm}(\frac n {\gcd(a,n)}, \frac m {\gcd(b,m)})}) \\ =& \frac 1 {nm} \sum\limits_{d_1 | n} \sum\limits_{d_2 | m} \text{pow}(k, \frac {nm} {\text{lcm}(\frac n {d_1}, \frac m {d_2})}) \left( \sum\limits_{a=1}^n [d_1 | a] [\frac a {d_1} \perp \frac n {d_1}]\right) \left( \sum\limits_{b=1}^m [d_2 | b] [\frac b {d_2} \perp \frac m {d_2}]\right) \\ =& \frac 1 {nm} \sum\limits_{d_1 | n} \sum\limits_{d_2 | m} \text{pow}(k, \frac {nm} {\text{lcm}(\frac n {d_1}, \frac m {d_2})}) \varphi(\frac n {d_1}) \varphi(\frac m {d_2}) \\ =& \frac 1 {nm} \sum\limits_{D_1 | n} \sum\limits_{D_2 | m} \text{pow}(k, \frac {nm} {\text{lcm}(D_1, D_2)}) \varphi(D_1) \varphi(D_2) \\ \end{aligned}\]

实现精细一点,分解质因数顺便把 \(\varphi\) 处理好,复杂度 \(O(d(n)d(m)(\log n + \log m))\)

7 月 TG Day 1 图论 ☆

切 BCDEF。

A 最短路

XMOJ3353 是 BZOJ 原题。

简要题意:给定图,求 \(1 \to n\) 最短路。\(n \le 10^6, m \le 10^7\)。每个数据中有部分为随机生成。空间 256MB。

vector 存图会爆空间,需要用链式前向星。

直接二叉堆优化 Dijkstra 可过(\(O(m \log m)\) 为什么能过啊喂)。用 pbds 配对堆会 MLE。

卡常数:dis[n] 被求出之后直接退出 Dijkstra。

7 月 TG Day 2 膜你赛

一道都没场切。A 其实是会的,但是懒得写高精度。

A 是 NOIP 2006 原题,直接贴洛谷链接:P1066 [NOIP2006 提高组] 2^k进制数。场上懒得写高精度,用 int128 得 80pts。这样的策略事后证明是对的,我赛后高精度调了半天。

B

是 USACO 原题,直接贴洛谷链接:P3047 [USACO12FEB] Nearby Cows G

TODO:

C

TODO:

D

是 USACO 原题,直接贴洛谷链接:P1848 [USACO12OPEN] Bookshelf G

TODO:

7 月 TG Day 3 数据结构

切 ABCE。

TODO:

7 月 TG Day 4 膜你赛 ☆

个人评价:T1 绿、T2 绿、T3 黄、T4 黄。

场切:A(种类并查集)

C(二分)6e5 2log 被卡常 100->80,非常生气。

D(树状数组)场上写对忘交了 100->15,很傻逼。

B 幸福的道路

XMOJ6076

简要题意:给定一棵 \(n\) 个节点的树,边权非负。完成两个任务:(1)对于每个点 \(i\),求出以 \(i\) 为端点的最长树链长 \(D_i\)。(2)求出 \(D\) 中最大值减最小值 \(\le m\) 的最长区间,输出这个最长区间的长度。\(n \le 10^6\)

任务(1)的做法:两次 DFS 找到任意一条直径 \(AB\),可以证明 \(D_i = \max(\text{dis}(A,i), \text{dis}(B,i))\)。时间复杂度 \(\Theta(n)\)

任务(2)的做法:显然可以双指针,为了在双指针的同时维护区间内的最值,用两个单调队列。时间复杂度 \(\Theta(n)\)

7 月 TG Day 5 树上问题

个人评价:T1 蓝 / 紫、T2 绿、T3 蓝 / 紫、T4 黄。

切 BD。

A 异象石

几乎是 SDOI 原题(只是答案要除以 \(2\)),直接贴洛谷链接:P3320 [SDOI2015] 寻宝游戏 & CF176E Archaeology

观察到,设当前点集按 DFS 序排序后为 \(\{P_1, P_2, \cdots, P_m\}\),则当前的答案为 \(\frac 1 2 \sum\limits_{i=1}^m \text{dis}(P_i, P_{i \bmod m + 1})\)。加入和删除用平衡树维护即可。

B 逃学的小孩(这题切了)

场上猜结论猜对了(喜)。

是 NOI 2003 原题,直接贴洛谷链接:P4408 [NOI2003] 逃学的小孩

TODO:

C 树网的核

场上猜结论猜到只要任选一条直径了(喜)。

是 NOIP 2007 原题,直接贴洛谷链接:P1099 [NOIP2007 提高组] 树网的核

TODO:

*E 货车运输

是 NOIP 2013 原题,直接贴洛谷链接:P1967 [NOIP2013 提高组] 货车运输

TODO:

7 月 TG Day 6 膜你赛 ☆

个人评价:T1 橙 / 黄、T2 绿、T3 蓝、T4 绿。

场切 ACD。

B 数组开小了 1,改完就过了,编辑距离为 2,非常生气。

7 月 TG Day 7 DP

个人评价:T1 黄、T2 橙、T3 橙、T4 绿、T5 黄、T6 绿、T7 紫。

切 ABCEF。

D 决斗

XMOJ1551

简要题意:TODO:。\(n \le 300\)

环上 DP,断环成链,把链延长成原来的两倍。

\(f_{l,r}\)\(l,r\) 两人是否能够把中间所有人干掉(为 \(0\)\(1\))。可以 \(O(n^3)\) 分类讨论转移。

\(i\) 能存活到最后,当且仅当 \(f_{i,i+n} = 1\)

*G 邮局

是 IOI 2000 原题,直接贴洛谷链接:P4767 [IOI2000] 邮局 加强版

TODO:

7 月 TG Day 8 膜你赛

个人评价:T1 绿、T2 绿、T3 绿、T4 绿 / 蓝。

场切 AD。

A(这题切了)

XMOJ4641

简要题意:给定 \(n,m\)\(n \le 10^7, m \le 10^{14}\)),求:

\[\sum\limits_{i=1}^n (-1)^{\sum\limits_{j=1}^m d(i \times j)} \]

\(n \le 10^7\),所以可以枚举 \(i\)。问题变为求 \(\left(\sum\limits_{j=1}^m d(i \times j)\right) \bmod 2\)。注意到 \(d(x) \bmod 2 = 1\) 当且仅当 \(x\) 为完全平方数,设 \(i\) 可表示为 \(f_i \times a^2\) 其中 \(f_i\) 不含平方因子,有:

\[\begin{aligned} & \left(\sum\limits_{j=1}^m d(i \times j)\right) \bmod 2 \\ &= \left\lfloor \sqrt {\frac m {f_i}} \right\rfloor \bmod 2 \end{aligned}\]

\(f_i\) 可线性筛预处理。时间复杂度 \(\Theta(n)\)

B

TODO:

C

KE 哥哥评价为唐题。

TODO:

7 月 TG Day 9 强连通分量

切 AB。

C 中队长

唐。

*D 最大半连通子图

7 月 TG Day 10 膜你赛

个人评价:T1 绿、T2 绿、T3 蓝、T4 绿。

场切 AB。

A 鼎纹(这题切了)

是原题,直接贴洛谷链接:P3585 [POI2015] PIE

简要题意:给定一个 \(n \times m\) 的图案 \(A\)(为一个 \(01\) 矩阵,\(1\) 表示黑块,\(0\) 表示透明)和一个 \(a \times b\) 的图案 \(B\)(同上),求:是否能用若干个图案 \(B\) 叠在一起(不允许旋转和翻面;不允许有格子叠了多个黑块,即所有的图案 \(B\) 的黑块不能重叠)。\(n,m,a,b \le 10^3\)

好题

TODO:

B 千帆渡(这题切了)

XMOJ4645

TODO:

C 旷野大计算

XMOJ4646

TODO:

D 线性规划问题

XMOJ4718

TODO:

7 月 TG Day 11 割点割边 ☆

切 ABCDE。

懒得评,题目不好。

7 月 TG Day 12 膜你赛

场切 ABC。

TODO:

A

B

7 月 TG Day 13 哈希/ST表

个人评价:T1 黄 / 绿、T2 绿、T3 蓝 / 紫、T4 紫。

切 AB。

B 是原题,直接贴洛谷链接:P3501 [POI2010] ANT-Antisymmetry & SP15569 STC02 - Antisymmetry

C 好点对

TODO:

\(f_i\)\(i\) 为左端点的方案数,\(g_i\)\(i\) 为右端点的方案数,用单调栈可以 \(O(n)\) 求。

对于每个询问,ST 表求出最大值的下标 \(p\)\(\sum\limits_{i=L}^{p-1} f_i + \sum\limits_{i=p+1}^{R} g_i\) 即为答案。

D 超级钢琴

是 NOI 2010 原题,直接贴洛谷链接:P2048 [NOI2010] 超级钢琴

TODO:

7 月 TG Day 14 膜你赛

个人评价:T1 绿、T2 绿、T3 蓝 / 紫、T4 蓝。

场切 D。

A 最长公共子序列

XMOJ4710

简要题意:给定一个长为 \(n\) 的数组 \(a\) 和一个长为 \(m\) 的数组 \(b\)保证 \(a\) 中元素互不相同,\(b\) 中元素互不相同,但是 \(a\)\(b\) 的元素可能有重复。求 \(a\)\(b\) 的最长公共子序列(即 LCS)大小。\(n,m \le 3 \times 10^5\),值域 \(10^9\)

朴素 DP 是没有前途的!因为朴素 DP 无法考虑到互不相同的特殊性质,即问题变为了朴素 LCS,据说可以归约到 OV 所以复杂度不可能再往下降了。可以优化到 \(O(\frac {nm} w)\),有模板题 LibreOJ6564,然而不足以通过本题。

不妨设 \(a\)\(b\)\(t\) 个公共元素,那么问题变为了两个长度为 \(t\) 的排列的 LCS。抄洛谷模板 P1439 【模板】最长公共子序列 即可。时间复杂度 \(O(n \log n)\)

【重要部分】对拍

在场上做这题时,我的对拍犯了一个严重的错误,这是我的数据生成器:

mt19937 Rand(time(0));

void RandA(int n) {
    uset<int> A;
    uniform_int_distribution<int> dist(1, 1e9);
    rep(i, 1, n) {
        int a = dist(Rand);
        while (A.find(a) != A.end())
            a = dist(Rand);
        A.insert(a);
        cout << a << " \n"[i == n];
    }
}

int main() { ios::sync_with_stdio(0); cin.tie(0);
    int n = RandLR(1, 3000), m = RandLR(1, 3000);
    cout << n << " " << m << endl;
    RandA(n), RandA(m);
    return 0;
}

这样随出来的 \(a\)\(b\) 的 LCS 几乎永远是 \(0\),对拍永远能过,因此我在场上没有发现自己代码的问题,100->30。

B 训练

XMOJ4713

简要题意:你希望在 \(m\) 单位时间(即 \([0, m-1]\) 的区间)里获得尽量多的经验值。有 \(n\) 个物品,在第 \(x\) 单位时间使用第 \(i\) 个物品会消耗 \(c_i\) 单位时间(即时间变为 \(x+c_i\))获得 \(a_i - b_i (x + c_i)\) 的经验值。每个物品只能最多使用一次。\(n \le 10^3\)\(m \le 3 \times 10^3\)\(a_i \le 10^6\)。保证 \(a_i - b_i (x + c_i)\) 在任何时刻都不为负数。多测,\(5\) 组数据。

邻项交换贪心。

\(i\) 在前 \(j\) 在后,则贡献为 \(a_i - b_i (x_0 + c_i) + a_j - b_j (x_0 + c_i + c_j)\)

\(j\) 在前 \(i\) 在后,则贡献为 \(a_j - b_j (x_0 + c_j) + a_i - b_i (x_0 + c_j + c_i)\)

不妨设 \(i\) 在前 \(j\) 在后,相减得 \(- b_j c_i > - b_i c_j\),即 \(\frac {b_i} {c_i} > \frac {b_j} {c_j}\)

排序后类似 01 背包 DP 即可。\(O(nm)\)

C 鱼

XMOJ4714 懒得写简要题意。

TODO:

D 计树(这题切了)

是 HNOI 2004 原题,直接贴洛谷链接:P2290 [HNOI2004] 树的计数

简要题意:一棵 \(n\) 个节点的树,已知第 \(i\) 个节点的度数为 \(d_i\),求总共有几棵满足要求的树。保证答案不超过 \(10^{17}\)\(n \le 150\)

根据 Prufer 序列可得答案为 \(\frac {(n-2)!} {\prod\limits_{i=1}^n (d_i - 1)!}\)

  • 法 1:高精度计算即可。
  • 法 2:计算分子分母中每个质因子出现次数。
  • 法 3:把答案对一个大于 \(10^{17}\) 次方的质数取模,除法可以使用逆元。需要用 __int128
  • 法 4:根据多重组合数公式推导过程,答案可写为 \(\prod\limits_{i=1}^n \binom {\sum\limits_{j=1}^i (d_j - 1)} {d_i - 1}\),使用杨辉三角预处理组合数即可。

7 月 TG Day 15 真题

洛谷评价:T1 蓝、T2 绿、T3 蓝、T4 蓝。

A 以前做过,直接抄了。

B 时间复杂度错误的做法洛谷上过去了,XMOJ 机子太慢没卡过去。。。

A

是 CSP-S 2021 原题,直接贴洛谷链接:P7914 [CSP-S 2021] 括号序列

TODO:

B

是 CSP-S 2019 原题,直接贴洛谷链接:P5658 [CSP-S2019] 括号树

TODO:

C

是 CSP-S 2019 原题,直接贴洛谷链接:P5664 [CSP-S2019] Emiya 家今天的饭

TODO:

D

是 NOIP 2018 原题,直接贴洛谷链接:P5021 [NOIP2018 提高组] 赛道修建

TODO:

posted @ 2024-07-04 20:35  August_Light  阅读(197)  评论(0)    收藏  举报