摘要: 题目 传送门 题解 对于 NO 和 CAN 的情况我们其实很好判断,只需要在正向、逆向跑一边 dijkstra 得到从 \(s,t\) 到某边两点的距离,然后进行判断即可。 最难的情况其实是 YES 的情况,我们想一想这种情况出现的情景——在所有的最短路中,这条边没有可以替代的边,即没有其他相同长度 阅读全文
posted @ 2020-08-21 16:09 Arextre 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 题目 传送门 题解 想了半天没想出来 首先需要注意题目中一个十分重要的条件,就是 \(a_{i,j}\ge 0\),这个条件是我们做出这道题的关键,而我们需要做的,是判断是否存在 \(k\) 使得 \(A^k\) 是一个严格正矩阵,即使其每一项都大于 $0$. 首先,利用 \(a_{i,j}\ge 阅读全文
posted @ 2020-08-21 11:37 Arextre 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 题目 传送门 题解 首先应分析在什么情况下,一条边才只会包含在一个简单环里面。 如果两个环有公共边,对于这两个环的边分情况讨论: 对于公共边,这条边被左、右俩环同时包含,显然不符题意; 对于非公共边,首先他们分别属于自己的环,其次,他们又在一个最外围的大环上; 也就是说,如果两个环有公共边,那么这俩 阅读全文
posted @ 2020-08-21 11:35 Arextre 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 题目 传送门 题解 巧妙地将$2-sat$ 与图的连通性结合起来的题。 考虑题目的特性: 对于一对组合(指一个人与一只猫),我们只能选择二者之一; 对于组 \(i\) 的人,如果他认识 \(j\) 组的猫,那么 \(i,j\) 两组只能同时选人(由于猫和人地位相同,其他情况也是一样的); 询问是否有 阅读全文
posted @ 2020-08-20 22:08 Arextre 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 题目 传送门 给定 \(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 阅读全文
posted @ 2020-08-12 21:20 Arextre 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 题目 传送门 题解 数位 \(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)\),由于前一 阅读全文
posted @ 2020-08-11 22:10 Arextre 阅读(149) 评论(0) 推荐(1) 编辑
摘要: 题目 传送门 题解 典型数位 \(DP\) 题。 记 \(f(x)\) 为 \([0,x]\) 中有多少满足条件的数,那么答案即为 \(f(r)-f(l-1)\),但是由于我们的 \(l\le 10^{1000}\),计算 \(l-1\) 是肯定不理想的。 所以我们可以模仿 这道题 的思路,先计算 阅读全文
posted @ 2020-08-11 21:54 Arextre 阅读(176) 评论(0) 推荐(2) 编辑
摘要: 题目 传送门 题解 由于题目要求的 \(n\) 十分巨大(\(n\le 10^{18}\)),并且要求恰好有 \(m\) 个数二进制下有 \(k\) 个 $1$,考虑二分~~(先猜后证~~ 但是如果要使用二分,需要证明单调性,我们记 \(f(x)\) 为 \(x+1\) 到 $2x$ 之间的数中,他 阅读全文
posted @ 2020-08-11 11:11 Arextre 阅读(117) 评论(0) 推荐(1) 编辑
摘要: 题目 传送门 人话表述: 给你一个 \(n\) 表示数列 \(a\) 有多少个数; 对于每个数,给出 \(l_i,r_i\) 表示数 \(a_i\in [l_i,r_i]\); 给出 \(k\),让你求数列 \(a\) 中有至少 \(\frac{n\times k}{100}\) 个数最高位为 $1 阅读全文
posted @ 2020-08-11 10:01 Arextre 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题目 传送门 题解 一道很水的状压题... 设 \(f[s]\) 为数字出现情况为 \(s\) 时的方案数,显然如果 \(\exist k[i],sum[s]=k[i]\) 那么 \(f[s]=0\),其中 \(sum[s]\) 为选择数字情况为 \(s\) 时的数字和,而转移也很好写了: \[ f 阅读全文
posted @ 2020-08-08 22:09 Arextre 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 题目 传送门 题解 可以想到一个十分简陋的状态:定义 \(f[i][s]\) 为选到第 \(i\) 个人,队伍的空缺情况为 \(s\) 时的力量最大值,但是这有个问题——那些会变成观众的人该如何决策选还是不选? 对于观众,我们可以有一个十分显然的贪心——在那些还未被选中是队员的人中选前 \(k\) 阅读全文
posted @ 2020-08-08 21:59 Arextre 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 题目 传送门 题解 一道 记忆化搜索 用状压配合数位 \(DP\) 的题。 首先将”求区间 \([l,r]\) 的和“转化为”求区间 \([1,i]\) 的和“,记 \([1,i]\) 的合法数字和为 \(f(i)\),那么答案就是 \(f(r)-f(l-1)\),这是数位 \(DP\) 的经典操作 阅读全文
posted @ 2020-08-08 21:36 Arextre 阅读(405) 评论(0) 推荐(0) 编辑
摘要: 题目 传送门 题解 因为所有数字的选择必须连续,也就是说,同一数字的选择越少,其要求越容易达成,并且题目要求任意两个数字的出现次数 \(c(i),c(j)\) 都必须保证 \(\mid c(i)-c(j)\mid \le 1\),我们不妨二分数字出现的最小次数 \(k\)(有少部分数字出现次数为 \ 阅读全文
posted @ 2020-08-05 21:20 Arextre 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 题目 传送门 题解 有个极为显然的想法:定义 \(f[i][j]\) 为最后一下划分到 \(i\) 之前的位置,前面的划分使得出现方案为 \(j\) 的合法方案数。 但是 \(j\) 应该开多大?我们可以计算一下:设 \(f(x)\) 为 \(x\) 的二进制长度,那么有 \[ \sum_{i=1} 阅读全文
posted @ 2020-08-05 21:05 Arextre 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 题目 传送门 题解 刚开始我以为这是个贪心,然后打了这样一个代码 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+ 阅读全文
posted @ 2020-08-05 20:47 Arextre 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 题目 传送门 题解 这个原子序数是真的狗 首先,看一下那可怜的数据范围:$1\le k\le n\le 17$,那么小?考虑直接暴力... 考虑定义暴力函数 dfs(const int now,const int s) 为我们已经处理到目标原子 \(now\),而剩下的元素情况为 \(s\) 的局面 阅读全文
posted @ 2020-08-05 20:24 Arextre 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 题目 传送门 题解 首先我们可以将题目转化:在一个 \(n\times m\) 的矩阵中,设立尽可能少的特殊点使得整个矩阵全部被覆盖,其中每个特殊点可以覆盖的区域为它自己以及上下左右的格子 意识到 \(n,m\) 互相交换,对于答案不影响,那么我们钦定 \(n\) 是较大的那个 由 $1\le m\ 阅读全文
posted @ 2020-08-05 19:58 Arextre 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题目 传送门 题解 一道只看代码很水实则很难的树形 DP 题,要做出这道题,需要巧妙地转换模型 一棵树去掉一些边,一定会构成许多连通块,我们首先需要意识到每个连通块的最大匹配都是相互独立,那么我们可以分块进行思考. 我们首先对这道题中这些出现唯一最大匹配的块的特点做一些分析. 首先一定有: 如果这个 阅读全文
posted @ 2020-07-31 09:48 Arextre 阅读(163) 评论(0) 推荐(1) 编辑
摘要: 题目 传送门 题解 DP 矮子又来学习 DP 了 代码短小精悍思路十分巧妙的树形 \(DP\). 在一般的树 \(DP\) 中,我们一般都会对子树树根进行一些限定,并使其有主导作用,这样才能避免重复,在这道题中,我们不妨假定我们的树根为 最大/最小 的(两种思路皆可),这里假定我们选定的某一个树根是 阅读全文
posted @ 2020-07-29 21:01 Arextre 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 题目 传送门 题解 对于这种求最小值的题,我们显然有一种二分的做法,先用 \(\log\) 的复杂度二分一个油箱的大小,再对其进行合法性检查,这样做时间复杂度 \(\mathcal O(nm\log 10^{18})\) 显然,这样做似乎要超时,虽然时间复杂度最差情况下就差一点就可以卡过去,但是这个 阅读全文
posted @ 2020-07-29 18:48 Arextre 阅读(94) 评论(0) 推荐(0) 编辑