08 2020 档案
摘要:题目 传送门 补充一个数据范围: 对于 $30%$ 的数据,保证 \(n\le 10^3\); 对于 $50%$ 的数据,保证 \(n\le 10^4\); 对于 $70%$ 的数据,保证 \(n\le 10^5,1\le d,x,a \le 10^6\); 对于所有数据,保证 \(n\le 10^
阅读全文
摘要:题目 传送门 题解 这道题对选手对于树的性质的掌握要求较高。 首先,有一种暴力思路,对于每一次加进俩点之后,跑一次 \(bfs\) 或者是树 \(DP\) 求直径,这样时间复杂度是 \(\mathcal O(qn)\) 的,显然有问题。 考虑换一种思路,有一种贪心地求树直径的方法: 从树上任意一点
阅读全文
摘要:题目 传送门 题解 思维好题. 必须明白,一个数 \(x(x\le 10^{18})\) 在反复执行除以某个数下取整,即反复 \(x=\lfloor \frac{x}{t} \rfloor(t\ge 2)\) 超过 $60$ 次之后必定为 $0$,因为 \(\log _210^{18}<60\),所
阅读全文
摘要:题目 传送门 题解 我们应该明白的第一件事——所有的花费只会全部花在一条边上,这是这道题的基础 虽然我知道也没第一时间做出来 下文称这条边为“\(JZM\)”. 然后,随便找一个 \(MST\),然后我们对于这条 \(JZM\) 应该会出现在哪里分类讨论: 出现在树边上,显然 \(JZM\) 应该是
阅读全文
摘要:题目 传送门 题解 这类题目,不多说可以直接上树剖板子,时间复杂度 \(\mathcal O(n\log ^2n)\),此处不作过多赘述,毕竟重点不是这个方法。 实际上我们有比树剖的俩 \(\log\) 更优的解法,但是还是利用线段树。 分析这道题实际要我们干的事是什么: 能够任意改边的颜色; 询问
阅读全文
摘要:题目 传送门 题解 对于 NO 和 CAN 的情况我们其实很好判断,只需要在正向、逆向跑一边 dijkstra 得到从 \(s,t\) 到某边两点的距离,然后进行判断即可。 最难的情况其实是 YES 的情况,我们想一想这种情况出现的情景——在所有的最短路中,这条边没有可以替代的边,即没有其他相同长度
阅读全文
摘要:题目 传送门 题解 想了半天没想出来 首先需要注意题目中一个十分重要的条件,就是 \(a_{i,j}\ge 0\),这个条件是我们做出这道题的关键,而我们需要做的,是判断是否存在 \(k\) 使得 \(A^k\) 是一个严格正矩阵,即使其每一项都大于 $0$. 首先,利用 \(a_{i,j}\ge
阅读全文
摘要:题目 传送门 题解 首先应分析在什么情况下,一条边才只会包含在一个简单环里面。 如果两个环有公共边,对于这两个环的边分情况讨论: 对于公共边,这条边被左、右俩环同时包含,显然不符题意; 对于非公共边,首先他们分别属于自己的环,其次,他们又在一个最外围的大环上; 也就是说,如果两个环有公共边,那么这俩
阅读全文
摘要:题目 传送门 题解 巧妙地将$2-sat$ 与图的连通性结合起来的题。 考虑题目的特性: 对于一对组合(指一个人与一只猫),我们只能选择二者之一; 对于组 \(i\) 的人,如果他认识 \(j\) 组的猫,那么 \(i,j\) 两组只能同时选人(由于猫和人地位相同,其他情况也是一样的); 询问是否有
阅读全文
摘要:题目 传送门 给定 \(n,a\) 以及有 \(n\) 个元素的一个数列 \(c\) 和一个单调不降数列 \(d\),求 \[ \max\{(r-l+1)\times a-\sum_{i=l}^r c_i-\text{gap}(l,r)\} \] 其中 \(l\in [1,n],l\le r\le
阅读全文
摘要:题目 传送门 题解 数位 \(DP\) 的典型题,记 \[ f(x,y)=\sum_{i=0}^x\sum_{j=0}^y[i+j=i\oplus j] \] 显然有 \(f(x,y)=f(y,x)\),答案为 \(f(r,r)-f(l-1,r)-f(r,l-1)+f(l-1,l-1)\),由于前一
阅读全文
摘要:题目 传送门 题解 典型数位 \(DP\) 题。 记 \(f(x)\) 为 \([0,x]\) 中有多少满足条件的数,那么答案即为 \(f(r)-f(l-1)\),但是由于我们的 \(l\le 10^{1000}\),计算 \(l-1\) 是肯定不理想的。 所以我们可以模仿 这道题 的思路,先计算
阅读全文
摘要:题目 传送门 题解 由于题目要求的 \(n\) 十分巨大(\(n\le 10^{18}\)),并且要求恰好有 \(m\) 个数二进制下有 \(k\) 个 $1$,考虑二分~~(先猜后证~~ 但是如果要使用二分,需要证明单调性,我们记 \(f(x)\) 为 \(x+1\) 到 $2x$ 之间的数中,他
阅读全文
摘要:题目 传送门 人话表述: 给你一个 \(n\) 表示数列 \(a\) 有多少个数; 对于每个数,给出 \(l_i,r_i\) 表示数 \(a_i\in [l_i,r_i]\); 给出 \(k\),让你求数列 \(a\) 中有至少 \(\frac{n\times k}{100}\) 个数最高位为 $1
阅读全文
摘要:题目 传送门 题解 一道很水的状压题... 设 \(f[s]\) 为数字出现情况为 \(s\) 时的方案数,显然如果 \(\exist k[i],sum[s]=k[i]\) 那么 \(f[s]=0\),其中 \(sum[s]\) 为选择数字情况为 \(s\) 时的数字和,而转移也很好写了: \[ f
阅读全文
摘要:题目 传送门 题解 可以想到一个十分简陋的状态:定义 \(f[i][s]\) 为选到第 \(i\) 个人,队伍的空缺情况为 \(s\) 时的力量最大值,但是这有个问题——那些会变成观众的人该如何决策选还是不选? 对于观众,我们可以有一个十分显然的贪心——在那些还未被选中是队员的人中选前 \(k\)
阅读全文
摘要:题目 传送门 题解 一道 记忆化搜索 用状压配合数位 \(DP\) 的题。 首先将”求区间 \([l,r]\) 的和“转化为”求区间 \([1,i]\) 的和“,记 \([1,i]\) 的合法数字和为 \(f(i)\),那么答案就是 \(f(r)-f(l-1)\),这是数位 \(DP\) 的经典操作
阅读全文
摘要:题目 传送门 题解 因为所有数字的选择必须连续,也就是说,同一数字的选择越少,其要求越容易达成,并且题目要求任意两个数字的出现次数 \(c(i),c(j)\) 都必须保证 \(\mid c(i)-c(j)\mid \le 1\),我们不妨二分数字出现的最小次数 \(k\)(有少部分数字出现次数为 \
阅读全文
摘要:题目 传送门 题解 有个极为显然的想法:定义 \(f[i][j]\) 为最后一下划分到 \(i\) 之前的位置,前面的划分使得出现方案为 \(j\) 的合法方案数。 但是 \(j\) 应该开多大?我们可以计算一下:设 \(f(x)\) 为 \(x\) 的二进制长度,那么有 \[ \sum_{i=1}
阅读全文
摘要:题目 传送门 题解 刚开始我以为这是个贪心,然后打了这样一个代码 inline void Solve(){ int pts=1,ans=0; char opt[5];int team; while(m--){ scanf("%s %d",opt,&team); if(opt[0]=='p')ans+
阅读全文
摘要:题目 传送门 题解 这个原子序数是真的狗 首先,看一下那可怜的数据范围:$1\le k\le n\le 17$,那么小?考虑直接暴力... 考虑定义暴力函数 dfs(const int now,const int s) 为我们已经处理到目标原子 \(now\),而剩下的元素情况为 \(s\) 的局面
阅读全文
摘要:题目 传送门 题解 首先我们可以将题目转化:在一个 \(n\times m\) 的矩阵中,设立尽可能少的特殊点使得整个矩阵全部被覆盖,其中每个特殊点可以覆盖的区域为它自己以及上下左右的格子 意识到 \(n,m\) 互相交换,对于答案不影响,那么我们钦定 \(n\) 是较大的那个 由 $1\le m\
阅读全文