Solution 这是一道好题. 考虑球体的体积是怎么计算的: 我们令\(f_k(r)\)表示\(x\)维单位球的体积, 则 \[ f_k(1) = \int_{-1}^1 f_{k - 1}(\sqrt{1 - r^2}) dr \] 然而\(f_{k - 1}(\sqrt{1 - x^2})\)并不容易处理, 我们又注意到\(k\)维球体的体积可以表示为\(a \pi r^k\), 因此\(f_k(\sqrt{1 - r^2}) = f_k(1) \times (1 - r)^{\frac…
Solution 这题实际上并不是构造题, 而是一道网络流. 我们考虑题目要求的一条路径应该是什么样子的: 它是一个环, 并且满足每个点有且仅有一条出边, 一条入边, 同时这两条边的权值还必须不一样. 考虑如何建图: 我们对每个景点分别建一个点, 源点连向左岸的景点, 右岸的景点连向汇点, 边的容量都是2, 这限制了一个点最多只能连两条边; 我们再将一个点拆成\(k\)个, 每个代表一个连入的边的权值, 也就是说对于连入一个点的所有边, 都连在代表该边的权值的点上; 一个景点与其拆成的\(k\)…
Solution 这道题告诉我们, 不能看着数据范围来推测正解的时间复杂度. 事实证明, 只要常数足够小, \(5 \times 10^6\)也是可以跑\(O(n \log n)\)算法的!!! 这道题有两种思路. 比较容易想到的(也是我考场上想的)一种是: 把所有任务按照权值从大到小排序, 从权值大的开始安排, 将其安排在尽可能靠后的位置; 假如位置不够, 安排不下, 则可停止. 但这样非常难统计答案, 我想到的做法是用线段树的分裂与合并来维护整个区间. 但考虑到时间复杂度以及常数大小, 还是…
Description  Special Judge Hint 注意是全程不能经过两个相同的景点,并且一天的开始和结束不能用同样的交通方式. 题解 题目大意:给定两组点,每组有$n$个点,有若干条跨组的有色无向边.求一种方案,包括若干个不相交的连通块,覆盖全部点,每个连通块满足能一笔画(不经过重复的点)并且相邻两次经过的边颜色不相同(开头和结尾经过的边也不能相同). 是不是有点类似二分图匹配的问题呢?我们还是考虑用最大流来建图. 一笔画的时候,每一个经过的点有且只有一条入边,有且只有一条出边,即…
Solution 傻X题 我的方法是建立后缀后缀树, 然后在DFS序列上直接二分即可. 关键在于如何得到后缀树上每个字符对应的字节点: 我们要在后缀自动机上记录每个点在后缀树上对应的字母. 考虑如何实现, 我们在后缀自动机上的每个状态上, 记录其所对应的在字符串中的位置, 减去其父亲节点的长度即可得到每个节点对应的后缀树上的字符. #include <cstdio> #include <cstring> #include <algorithm> using namesp…
Solution 这到题目有意思. 首先题目描述给我们提供了一种非常管用的模型. 按照题目的方法, 我们可以轻松用暴力解决20+的问题; 关键在于如何构造更大的情况: 我们发现 \[ [(n + n) / n] \times [(n + n) / n] \times [(n + n + n) / n] + (n - n) \times (n + n + n + ... + n) = 24 \] 因此只要有\(n \ge 15\), 就一定有解, 并且可以按照上述方法凑出来. 至于\(n \le…
Solution 分数规划经典题. 话说我怎么老是忘记分数规划怎么做呀... 所以这里就大概写一下分数规划咯: 分数规划解决的是这样一类问题: 有\(a_1, a_2 ... a_n\)和\(b_1, b_2 ... b_n\)这样一些值(其中\(b\)严格大于零), 其中\(a\)和\(b\)之间存在某种联系; 要你决策出每个\(a_k\), 使得 \[ ans = \frac{\sum_{x = 1}^n a_x}{\sum_{x = 1}^n b_x} \] 取得最大值或最小值. 考虑怎样…
Solution 我们把遇到一个旗子或者是遇到一个敌人称为一个事件. 这一题思路的巧妙之处在于我们要用\(f[i]\)表示从\(i\)这个事件一直走到终点这段路程中, \(i\)到\(i + 1\)这段路只被经过一次的概率. 分类讨论: \(i + 1\)是一个敌人, 则\(f[i] = f[i + 1] \times p[i + 1]\) \(i + 1\)是一个旗子, 则 \[f[i] = f[i + 1] \\ + f[i + 1] \times (1 - f[i + 1]) \times…
 日期: 七月最后一天  总分: 300分  难度: 提高 ~ 省选  得分: 30分(少的可怜) 我太弱了:(题目目录) T1:Mushroom追妹纸 T2:抵制克苏恩 T3:美味 失分分析:(QAQ) 开始全部题目看了一遍,第二题期望dp,果断放弃…… 看到T3,感觉像是线性基,但是要修改,似乎不可做……(QAQ) 只剩下T1,想到正解——后缀数组+KMP,结果忘记怎么打,耗了整个比赛…… 最后T1打炸了,成功炸成屎…… 剩下的二十分钟,赶紧打一个T3线性基暴力,但样例竟然过不了…… 定睛一…
Solution 首先审清题意, 这里要求的是子串而不是子序列... 我们考虑用1表示p, -1表示j. 用sum[i]表示字符串前\(i\)的前缀和. 则我们考虑一个字符串\([L, R]\)有什么要求: \(\forall x \in [L, R]\)满足\(sum[x] \ge sum[L - 1]\). 我们分别从前往后和从后往前求出以每个位置为开头的最长合法子串, 然后扔进树状数组里面查询即可. 至于怎么求以每个位置为开头最长合法子串, 我们考虑用一个单调栈来维护: 从前往后扫每个位置…