HDU题解
ZigZagK
一个蒟蒻。
展开
-
【浅谈康托展开】HDU1043[Eight]题解
【浅谈康托展开】HDU1043题解。原创 2017-05-24 21:37:46 · 862 阅读 · 8 评论 -
【gcd分块+离线+树状数组】HDU5869[Different GCD Subarray Query]题解
题目概述给出序列 {An}\{A_n\} 和 mm 个询问 (L,R)(L,R) ,定义 GCD(i,j)=gcd(ai,ai+1,⋯,aj)GCD(i,j)=gcd(a_i,a_{i+1},\cdots,a_j) ,每个询问求 [L,R][L,R] 范围内所有子序列 GCD(i,j)GCD(i,j) 不相同的个数。解题报告gcd和and,or一样有分块性质,由于gcd每次至少 ÷2\div 2 ,原创 2017-09-21 20:01:59 · 307 阅读 · 0 评论 -
【数位DP】HDU4507[吉哥系列故事——恨7不成妻]题解
题目概述求 [L,R][L,R] 中同时满足[1.不存在 77 。2.不是 77 的倍数。3.每位加起来不是 77 的倍数。]的数的平方和。解题报告恩……又是数位DP水……水个头啊,平方和是什么鬼???这道题要用平方和公式 (a+b)2=a2+2ab+b2(a+b)^2=a^2+2ab+b^2 来统计答案,对于每个状态,记录三个量: numnum 表示该状态的方案数, sumsum 表示该状态所有方原创 2017-10-11 21:22:30 · 400 阅读 · 1 评论 -
【桥】HDU4738[Caocao's Bridges]题
题目概述给出 nn 个点, mm 条边的无向图。求边权最小的桥。ps:这题有毒,当边权为 00 的时候要输出 11 ,图不连通时输出 00 。解题报告桥连接着两个边双联通分量,删去桥时整个图的连通块数会增加。求桥有两种方法:1.求出边双,不在边双中的就是桥。2.一条边 (x,y)(x,y) 是桥当且仅当 dfn[x]<low[y]dfn[x]<low[y] 。只求桥的时候采用后者较为方便。示例程序因原创 2017-11-10 16:43:12 · 367 阅读 · 0 评论 -
【数位DP】HDU3652[B-number]题解
题目概述求 [1,n][1,n] 中含有 1313 且是 1313 的倍数的数的个数。解题报告因为在复习,所以水博客就做了一下。常用套路,定义 f[i][j][k]f[i][j][k] 表示放了 ii 位余数( mod 13mod\ 13 )为 jj 状态为 kk 的方案数( 00 :没有 1313 ; 11 :没有 1313 ,目前高位是 11 ; 22 :有 1313 ),然后直接记忆化DFS就原创 2017-11-03 20:33:15 · 390 阅读 · 0 评论 -
【数位DP】HDU3943[K-th Nya Number]题解
题目概述Nya数有 XX 个 44 和 YY 个 77 ( X,YX,Y 给出),求 (l,r](l,r] 中第 kk 小的Nya数。解题报告对于我这种英语盲……英文题面容易漏条件……题目要求 (l,r](l,r] 但是我看成 [l,r][l,r] ……定义 f[i][x][y]f[i][x][y] 表示选了 ii 位有 xx 个 44 , yy 个 77 的方案数。然后二分一下就行了。好像有非二分原创 2017-11-03 21:24:43 · 299 阅读 · 0 评论 -
【狄利克雷卷积+快速幂】HDU5628[Clarke and math]题解
题目概述给出数论函数 f(n)f(n) 和 kk ,求函数 gg ,其中 g(i)=∑i1|i∑i2|i1⋯∑ik|ik−1f(ik)g(i)=\sum_{i_1|i}\sum_{i_2|i_1}\cdots\sum_{i_k|i_{k-1}}f(i_k) 。解题报告很容易发现是狄利克雷卷积的形式,我们令 Fk(ik−1)=∑ik|ik−1f(ik)F_k(i_{k-1})=\sum_{i_k|i_原创 2017-12-09 14:25:35 · 408 阅读 · 0 评论 -
【SG函数】HDU1847[Good Luck in CET-4 Everybody!]题解
题目概述有 nn 张牌,每次可以拿走 2i2^i 张牌,拿走最后一张牌的人获胜,求先手是否必胜。解题报告先求出 [1,maxn][1,maxn] 的SG函数,然后判断SG(n)是不是 00 就可以了。这个数据范围是给 O(n2)O(n^2) 的吧……实际上 O(nlog2n)O(nlog_2n) 就行了。示例程序#include<cstdio>using namespace std;const原创 2017-11-23 20:20:19 · 236 阅读 · 0 评论 -
【巴什博弈】HDU2147[kiki's game]题解
题目概述一个棋盘,刚开始在 (1,m)(1,m) ,每次可以往左或下或左下走一步,问先手是否必胜。解题报告直接求 SGSG 函数就行了。但是如果把 SGSG 函数打表出来,会发现只要 nn 是偶数或者 mm 是偶数就能必胜,这好像就是巴什博弈???示例程序#include<cstdio>using namespace std;const int maxn=2000;int n,m;bool f[原创 2017-11-26 21:22:25 · 352 阅读 · 0 评论 -
【二进制分组+AC自动机】HDU4787[GRE Words Revenge]题解
题目概述给出 nn 个操作,操作有两种:1.加入一个 0101 串。2.询问一个 0101 串中子串是学过单词的个数。强制在线。解题报告如果是插入完再询问,就是AC自动机裸题。如果不强制在线,可以按照时间分治。然而都不满足啊,只能另想办法了。又一个神奇的暴力,二进制分组就派上用场了。每次插入都必须重建AC自动机,但是这是无法承受的。我们将插入分组,如果这一组与上一组的个数相同,那么就将两者合并,并重原创 2017-12-23 16:22:13 · 461 阅读 · 0 评论 -
【树形DP+FWT】HDU5909[Tree Cutting]题解
题目概述定义一棵树 {vn}\{v_n\} 的权值为 v1 xor v2 xor v3 xor⋯vnv_1\ xor\ v_2\ xor\ v_3\ xor\cdots v_n 。给出一棵树,统计权值 [0,m)[0,m) 在这棵树子图(子图显然也是树)中的出现情况。解题报告定义 f[i][j]f[i][j] 表示以 ii 为根异或权值为 jj 的方案数,对于 ii 的儿子 son原创 2018-01-15 13:25:27 · 621 阅读 · 0 评论 -
【普通型母函数】HDU1085[Holding Bin-Laden Captive!]题解
题目概述有 num1num_1 个 11 元硬币,num2num_2 个 22 元硬币,num3num_3 个 55 元硬币,求不能组成的最小价值。解题报告显然是二进制拆分做01背包,然而数据范围比较大,所以效率不是很好。其实这道题可以用母函数轻松解决:(摘自维基和这里) 在数学中,某个序列的母函数是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。原创 2018-01-09 07:39:29 · 287 阅读 · 0 评论 -
【指数型母函数】HDU1521[排列组合]题解
题目概述有 nn 个物品,第 ii 个物品有 numinum_i 个,求选出 mm 个物品组成排列的方案数。解题报告如果不是组成排列,就是经典的普通型母函数。我们发现无法用普通型母函数表示出“组成排列”这个条件,实际上这是经典的指数型母函数(摘自这里)。 口袋中有白球 22 个,红球 33 个,黄球 11 个,任取 33 个作为一个排列,总共有多少种排列? 类似地用指数型母函数解决:用原创 2018-01-09 08:55:24 · 351 阅读 · 0 评论 -
【数位DP】HDU3555[Bomb]题解
题目概述求 [1,n][1,n] 中不存在一个子段是 4949 的数的个数。解题报告定义 f[i][j][0/1]f[i][j][0/1] 表示前 ii 位第 ii 位为 jj 是否出现 4949 的方案数。然后直接做就行了……不过由于只需要管 4949 所以并不需要存 jj ,可以直接定义 f[i][0/1/2]f[i][0/1/2] 表示出现 4949 /没出现 4949 末尾是 44 /没出现原创 2017-10-07 19:04:33 · 329 阅读 · 0 评论 -
【数位DP】HDU2089[不要62]题解
题目概述求 [L,R][L,R] 中子串不含有 6262 和 44 的数的个数。解题报告感觉重学了一遍数位DP……定义 f[i][0/1]f[i][0/1] 表示合法且末尾不为 22 /合法且末尾为 22 的方案数。之前写数位DP我都是枚举贴着 nn 的位数,然后每次都刷DP,不仅慢而且有毒……于是借鉴了一下网上dalao们的写法:先预处理出 f[i][0/1]f[i][0/1] 前 ii 位的所有原创 2017-10-07 21:33:00 · 391 阅读 · 0 评论 -
【2-SAT字典序最小解】HDU1814[Peaceful Commission]题解
题目概述有n个组,每个组有2个领导人(i组两人的标号为2*i-1和2*i),每个组只能选一个领导人参加会议。再给出m条关系x,y,表示x与y不和,不能同时参加会议,求字典序最小解。解题报告这道题就是经典的2-SAT字典序最小解啊,用暴力解法就可以水过去。 虽然看起来时间复杂度十分不正常,但要相信2-SAT暴力的玄学……WTF?这道题多组数据?题目里根本就没有说??示例程序#include<cstd原创 2017-07-15 22:30:04 · 879 阅读 · 0 评论 -
【二分图染色判奇环+DFS树判偶环】HDU5215[Cycle]题解
题目概述给出一张 nn 个点, mm 条边的有向图,问是否存在奇环和偶环。解题报告通过二分图染色我们可以判断出奇环,同时可以判断部分偶环,但遗漏了两个奇环叠加起来变为一个偶环的情况。所以我们再给每个点 xx 记录 ti[x]ti[x] 表示 xx 被几个奇环覆盖。那么如果存在 ti[x]>1ti[x]>1 就说明存在偶环,用差分的思想就可以快速求出 ti[x]ti[x] 了。示例程序#include原创 2017-07-30 11:23:07 · 740 阅读 · 0 评论 -
【匈牙利】HDU5093[Battle ships]题解
HDU5093题解。原创 2017-06-10 11:10:55 · 640 阅读 · 0 评论 -
【后缀自动机】HDU4622[Reincarnation]题解
HDU4622题解。原创 2017-07-06 08:31:48 · 825 阅读 · 1 评论 -
【Hash求LCP】HDU4080[Stammering Aliens]题解
HDU4080题解。原创 2017-04-05 20:31:15 · 1000 阅读 · 0 评论 -
【LCA】HDU2586[How far away?]题解
题目概述给出一棵n个节点的树和m个询问,每个询问形如x,y表示求x,y的距离。解题报告题目很裸,这篇文章的意义就是水博客放一下LCA模板啦。示例程序ST算法。#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=40000,Log=15;int te,n,Q,dep[max原创 2017-07-23 13:02:08 · 417 阅读 · 0 评论 -
【组合数学】HDU5698[瞬间移动]题解
题目概述刚开始你在 (1,1)(1,1) ,每次能够瞬间移动到右下任意一个格子(如下图),求到 (n,m)(n,m) 的方案数。解题报告组合数很多性质我不知道啊QAQ,做到题目慢慢补吧。 ∑i=0nCinCim=Cnn+m(n≤m)\sum_{i=0}^{n}C_{n}^{i}C_{m}^{i}=C_{n+m}^{n}(n\le m) 证明:二项式定理: (a+b)n(a+b)^n原创 2017-08-24 21:04:58 · 616 阅读 · 0 评论 -
【数位DP】HDU6148[Valley Number]题解
题目概述一个正整数是 Valley NumberValley\ Number 需要满足没有任何一段数字出现先递增后递减(这里的递增和递减都不是严格的)的情况。求 ≤n\le n 的 Valley NumberValley\ Number 的数量。解题报告显然是数位DP,但是我刚开始想了一个很有病的定义,样例都没调出来TAT。定义 f[i][j][t]f[i][j][t] 表示前 ii 个数中第 ii原创 2017-08-26 22:13:45 · 349 阅读 · 0 评论 -
【模拟】HDU6147[Pokémon GO II]题解
题目概述刚开始你在某个位置并朝着某个方向,有 nn 个操作,每个操作为向前走 xx 然后右转。问最早哪个操作之后走到了之前走过的地方。解题报告找找规律会我们发现只需要存最近 55 次行走形成的线段,然后每次行走之后判断下是否和之前的线段重合即可。判断线段重合有一个比较容易的方法:将线段(这里的所指的线段有长度,长度为 11 ),投影到 xx 轴和 yy 轴上,然后判断投影是否重合,这就变成了一维的问原创 2017-08-27 16:46:43 · 439 阅读 · 0 评论 -
【复杂度分析】HDU5762[Teacher Bo]题解
题目概述给出 nn 个整点 (xi,yi)(x_i,y_i) 其中 0≤xi≤m,0≤yi≤m,m≤1050\le x_i\le m,0\le y_i\le m,m\le 10^5 ,问是否存在 1≤i<j<k<t≤n1\le i<j<k<t\le n ,使得 ii 和 jj 的曼哈顿距离 == kk 和 tt 的曼哈顿距离。解题报告疯狂水博客,哇,根本不会啊,来,让我们记录个 vis[i]vis[原创 2017-09-26 20:09:01 · 296 阅读 · 0 评论 -
【平衡树->线段树】HDU4942[Game on S♂play]题解
题目概述给出一棵 nn 个节点的splay和 mm 个操作,操作有:1.左旋 xx 。2.右旋 xx 。3.询问 xx 子树中所有节点的愉快值的乘积,愉快值定义为子树所有节点的总和。解题报告一道假装是平衡树的线段树题……我们知道splay怎么旋转中序遍历不会发生改变,所以可以维护 Lt[i]Lt[i] 表示 ii 控制的区域的左端点, Rt[i]Rt[i] 表示 ii 控制的区域的右端点(yy一下就原创 2017-09-26 21:51:20 · 349 阅读 · 1 评论 -
【线段树套线段树】HDU4819[Mosaic]题解
HDU4819题解。原创 2017-04-17 21:00:36 · 1149 阅读 · 0 评论 -
【线性基】HDU3949[XOR]题解
题目概述给出 n" role="presentation">nnn 个数,求选出的非空集合中异或和第 k" role="presentation">kkk 小的异或和(异或和相同算一次),没有 k" role="presentation">kkk 个输出 −1" role="presentation">−1−1-1 。解题报告如果构造线性基时将矩阵消成对角矩阵,得到的线性原创 2018-01-25 20:28:27 · 977 阅读 · 2 评论