
【算法】搜索与剪枝
文章平均质量分 74
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ1053】【HAOI2007】反素数ant
【题目链接】点击打开链接【思路要点】问题等价于求解\(N\)以内因数个数最多的数,如有多个,取较小者。约数个数定理:设\(N\)满足\(N=p_1^{k_1}p_2^{k_2}p_3^{k_3}...p_m^{k_m}\),其中\(p_1\)、\(p_2\)、\(p_3\)...\(p_m\)为质数。则\(N\)的约数个数\(S\)满足\(S=(k_1+1)(k_2+1)(k_3+1)...(k_...原创 2018-02-19 15:56:21 · 303 阅读 · 1 评论 -
【USACO】USACO 2019 US Open Contest, Platinum题解
【T1】 Tree Boxes【题目链接】点击打开链接【题解链接】点击打开链接【思路要点】考虑在 N×NN\times NN×N 的网格内构建一个 NNN 个点的树,使得任意一个节点 xxx 与其任意一个祖先 yyy 所在位置为两角的矩形恰好包含 xxx 到 yyy 路径上的所有点。以如下方式构造即可:(1)(1)(1) 、将根节点置于 (1,1)(1,1)(1...原创 2019-04-14 14:37:25 · 1628 阅读 · 0 评论 -
【LOJ3077】「2019 集训队互测 Day 4」绝目编诗
【题目链接】点击打开链接【思路要点】不难发现各个边双连通分量可以分开处理,桥边可以直接删除。可以证明,对于每一个边双连通分量,当 M−NM-NM−N 超过 O(N)O(\sqrt{N})O(N) 级别,答案一定为 YesYesYes 。那么,将剩余图中的度为 222 的点缩去,剩余的图是一张点数和边数均在 O(N)O(\sqrt{N})O(N) 级别的图。选择一个起始点...原创 2019-05-03 14:05:16 · 1102 阅读 · 0 评论 -
【校内训练2019-05-22】神秘代码
【思路要点】注意到若序列中 000 的限制不存在,我们便只需要将每一条链分成若干段,使得长度一定的段数量一定即可,可以设计一个简单的 dpdpdp 解决问题。考虑容斥原理,枚举将 000 的限制变为 111 的限制。注意到最长的链 1−2−4−8−16−321-2-4-8-16-321−2−4−8−16−32 长度为 666 ,因此我们只需要统计 666 种长度的段的数量,实际状态数 C...原创 2019-05-24 12:25:57 · 693 阅读 · 0 评论 -
【CodeForces】CodeForces Round #562 (Div. 1) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接【A】 Increasing by Modulo【思路要点】二分答案,贪心判断。时间复杂度 O(NLogM)O(NLogM)O(NLogM) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 3e5 + 5;t...原创 2019-05-28 15:13:38 · 452 阅读 · 0 评论 -
【校内训练2019-06-17】随机除法
【思路要点】记 N=p1k1p2k2…pnknN=p_1^{k_1}p_2^{k_2}\dots p_n^{k^n}N=p1k1p2k2…pnkn ,则答案显然只和 (k1,k2,…,kn)(k_1,k_2,\dots,k_n)(k1,k2,…,kn) 有关,并且排序后不同的数组在 N≤1024N\leq 10^{24}N≤1024 时约有 1.7×1051.7\times1...原创 2019-06-17 19:48:15 · 640 阅读 · 0 评论 -
【校内训练2019-07-09】生成树
【思路要点】依次向图中加入 1,2,…,N(N−1)21,2,\dots,\frac{N(N-1)}{2}1,2,…,2N(N−1) ,则我们需要将当前的各个连通块的大小的可重集计入状态。时间复杂度 O(N2×f(N))O(N^2\times f(N))O(N2×f(N)) ,其中 f(N)f(N)f(N) 表示 NNN 的拆分数,当 N=40N=40N=40 ,有 f(N)=37338...原创 2019-07-09 14:40:31 · 280 阅读 · 0 评论 -
【AtCoder】AtCoder Grand Contest 035 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】 XOR Circle【思路要点】题目给出的要求等价于相邻的三个数异或和为 000 。特判全部 aia_iai 均为 000 的情况,这种情况是有解的。否则,如果确定 1,21,21,2 号位置为 a,ba,ba,b ,则 333 号位置一定为 a⊕ba\oplus ba⊕b , 444 号位置一定为 aa...原创 2019-08-04 18:25:14 · 547 阅读 · 2 评论 -
【LOJ3042】「ZJOI2019」麻将
【题目链接】点击打开链接【思路要点】首先考虑如何判断一副牌是否胡牌。我们可以用动态规划来解决该问题,可以参考 【CodeForces】CodeForces Global Round 1 题解 一文中 DDD 题的解法,我们可以计算一副牌最多可以组成的面子数,再记一维状态表示是否组成过对子即可。回到原题,我们将上述 dpdpdp 的状态、数值全部压入状态,看做当前 dpdpdp...原创 2019-04-02 21:14:03 · 2139 阅读 · 2 评论 -
【CodeForces】CodeForces Round #549 (Div. 1) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接【A】 The Beatles【思路要点】任取一个合法的起始点,枚举所有可能的步长 lll ,计算步数 N×kgcd(Nk,l)\frac{N\times k}{gcd(Nk,l)}gcd(Nk,l)N×k ,取最优值即可。时间复杂度 O(NLogV)O(NLogV)O(NLogV) 。【代码】#incl...原创 2019-04-04 20:50:38 · 989 阅读 · 0 评论 -
【CodeForces】CodeForces Round #467 (Div. 1 + Div. 2) 题解
【比赛链接】Div.1Div.2【题解链接】点击打开链接【Div.2 A】Olympiad【思路要点】答案为原数集中除去所有0以外数的种类数,哈希计数即可。时间复杂度\(O(N+Max\{a_i\})\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 1005;template <typena...原创 2018-03-05 20:29:18 · 376 阅读 · 0 评论 -
【AtCoder】AtCoder Regular Contest 095 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【C】Many Medians【思路要点】找到原序列的两个中位数\(X\),\(Y\),不妨令\(X≤Y\)。若\(X_i≤X\),\(B_i=Y\),否则\(B_i=X\)。时间复杂度\(O(NLogN)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN ...原创 2018-06-11 20:43:34 · 388 阅读 · 0 评论 -
【LOJ2323】「清华集训 2017」小 Y 和地铁
【题目链接】点击打开链接【思路要点】很不错的脑洞题。附上官方题解。时间复杂度 O(T∗2N2)O(T*2^{\frac{N}{2}})O(T∗22N) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 105;const int INF = 1e9;typede...原创 2018-09-29 14:20:46 · 562 阅读 · 0 评论 -
【CodeChef】October Challenge 2018 (Div. 1 + Div. 2) 题解
【比赛链接】点击打开连接**【BBRICKS】**Beautiful Bricks【思路要点】上下两个砖块中,至多有一个黑色。连续的一段存在黑色的行共有两种放置的方案。枚举有几段连续的存在黑色的行,用组合数计算答案。单组数据时间复杂度 O(K)O(K)O(K) 。【代码】#include&amp;lt;bits/stdc++.h&amp;gt;using namespace ...原创 2018-10-21 10:46:08 · 535 阅读 · 0 评论 -
【CodeForces】CodeForces Round #517 (Div. 1 + Div. 2) 题解
【比赛链接】Div. 1Div. 2【题解链接】点击打开链接**【Div.2 A】**Golden Plate【思路要点】直接循环计算答案即可。时间复杂度 O(K)O(K)O(K) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 2e5 + 5;type...原创 2018-10-22 20:54:05 · 725 阅读 · 0 评论 -
【省内训练2018-10-26】网友数
【思路要点】首先,当 k≥9k≥9k≥9 ,任何 ≥28≥28≥28 的数 xxx 均为网友数。 (1)(1)(1)(1)(1)(1) 的证明:当 x≤1000x≤1000x≤1000 ,我们可以暴力验证命题的正确性。否则,考虑 xxx 的末位,我们可以用 999 个 444 或是 777 造出 000 至 999 以内的任何末位,这样,我们可以在 xxx 中将造出的数减去, xxx ...原创 2018-10-26 19:25:52 · 394 阅读 · 0 评论 -
【省内训练2018-10-28】网友串
【思路要点】首先,奇数和偶数可以分开处理,最后再将答案卷积得到最终答案。预处理每一对网友数是否能够构成混沌串。我们用三元组 (i,j,s)(i,j,s)(i,j,s) 来描述一个状态,表示处理了前 iii 个数,出现了 jjj 个混沌串,并且能与集合 sss 中的串组成混沌串的字符串出现过至少 111 次。一个直观的想法是动态规划,记 dpi,j,sdp_{i,j,s}dpi,j,s...原创 2018-10-31 20:04:01 · 330 阅读 · 0 评论 -
【省内训练2018-11-23】Palindrome
【思路要点】考虑从两端向中间 dpdpdp 。对于此类匹配问题,考虑建立 ACACAC 自动机来描述状态。对 SSS 集合建立 ACACAC 自动机 AAA ,对 SSS 集合中所有串的反串建立 ACACAC 自动机 BBB 。记 dpi,j,k,0/1dp_{i,j,k,0/1}dpi,j,k,0/1 表示决策了最终字符串开头和结尾的 iii 个字符,在 AAA 上的匹配到的节点为...原创 2018-11-24 17:00:04 · 342 阅读 · 0 评论 -
【省内训练2018-11-25】Factorization
【思路要点】用类似 Min25Min25Min25 筛 的过程进行搜索即可。具体来说,先用线性筛得出 N\sqrt{N}N 以内的质数,记 primeiprime_iprimei 表示第 iii 个质数。定义过程 work(x,y,z)work(x,y,z)work(x,y,z) 表示处理大于等于 primeyprime_yprimey 的质因子乘积不超过 xxx ,小于 prim...原创 2018-11-27 13:00:02 · 331 阅读 · 0 评论 -
【LOJ2954】「NOIP2018」填数游戏
【题目链接】点击打开链接【思路要点】题目中对矩阵的限制等价于如下两点:(1)(1)(1) 、同一条副对角线上的元素单调不增。(2)(2)(2) 、若同一条副对角线上相邻的两个位置相等,那么它们右下方的一个矩阵的每一条一条副对角线上的元素均相等。用搜索实现该算法,并利用上述两个性质剪枝。注意到搜索的每一个分支都至少有一个答案,因此其时间复杂度为 O(Ans(N,M))O(A...原创 2018-12-13 10:45:01 · 987 阅读 · 0 评论 -
【CodeChef】Xor Table
【题目链接】点击打开链接【思路要点】我们可以将 ci,jc_{i,j}ci,j 看做二分图的边集,找到图中每一个联通块,确定其中一个数便可以确定所有数,因此,问题等价于我们需要求解满足若干不等式 l≤x⊕val≤rl≤x\oplus val≤rl≤x⊕val≤r 的 xxx 的一组解或指出其无解。直接从高位向低位搜索即可,这部分的复杂度笔者尚不是很明确,可以肯定的是,它不会超...原创 2018-12-09 12:45:59 · 258 阅读 · 0 评论 -
【USACO】2019 February Contest, Platinum题解
**【T1】**Cow Dating【题目链接】点击打开链接【题解链接】点击打开链接【思路要点】考虑如何快速计算一个区间 [l,r][l,r][l,r] 的价值。定义二元组 (x,y)(x,y)(x,y) 来描述一个区间, xxx 表示区间中恰好有一个关键点的概率, yyy 表示区间中没有关键点的概率。显然,对于两个区间 (x1,y1),(x2,y2)(x_1,y...原创 2019-02-27 10:33:59 · 1335 阅读 · 1 评论 -
【AtCoder】AtCoder Grand Contest 020
比赛链接点击打开链接官方题解点击打开链接Problem A. Move and Win注意到棋盘是二分图,任意一方玩家移动时,对手棋子所在位置的颜色与己方棋子所在位置颜色是否相同是确定的。那么一定有一方在移动时,对手棋子所在位置的颜色与己方棋子所在位置颜色是相同的,从而该玩家不可能被对手阻挡。那么,该玩家只需每一步都向对手棋子的方向走就可以确保胜利。时间复杂度 O(1)O(1)O(...原创 2019-09-02 20:36:32 · 411 阅读 · 0 评论