摘要:
题目链接 HDU4389 题意 给出T个区间[L, R],统计L到R中有多少个满足条件的数。 限制条件为该数能被这个数的各位数字之和整除。 数据范围$1 <= L <= R <= 10^{9}$ 考虑数位DP 注意到f(x)最大为81,所以对1-81每一个和做一遍数位DP即可。 f[pos][mod 阅读全文
摘要:
题目链接 Turning in Homework 考虑区间DP $f[i][j][0]$为只考虑区间$[i, j]$且最后在$a[i]$位置交作业的答案。 $f[i][j][1]$为只考虑区间$[i, j]$且最后在$a[j]$位置交作业的答案。 首先对$a[i]$升序排序(位置第一关键字,时间第二 阅读全文
摘要:
题目链接 Rooter's Song 题意 有n个舞者站在x轴上或y轴上,每个人有不同的出发时间。x轴上的舞者垂直x轴正方向移动,y轴上的舞者垂直y轴正方向移动。 当x轴的舞者和y轴的舞者相遇时,他们会互换运动轨迹。求每个舞者的最后位置。 把所有会发生碰撞的舞者塞到一起,按照坐标大小升序排序。 对于 阅读全文
摘要:
题目链接 Tell Your World 题意 给出N个点(i, xi),问是否存在两条平行的直线,使得每一个点恰好在两条直线的其中一条上。 每条直线必须穿过至少一个点。 考虑每个点和第1个点的斜率,相同的用并查集弄成一个连通块。 然后我们枚举每个连通块,判断不在连通块内的这些点是否在同一条直线上, 阅读全文
摘要:
题目链接 BZOJ4034 这道题树链剖分其实就可以了。 单点更新没问题。 相当于更新 [f[x], f[x]]这个区间。 f[x]表示树链剖分之后每个点的新的标号。 区间更新的话类似DFS序,求出所对应的区间。 也就是[f[x], f[x] + size[x] - 1]。 给这个区间加上a即可。 阅读全文
摘要:
题目链接 HDU5636 n个点,其中编号相邻的两个点之间都有一条长度为1的边,然后除此之外还有3条长度为1的边。 m个询问,每次询问求两个点之前的最短路。 我们把这三条边的6个点两两算最短路, 然后询问的时候用这6个点的距离来更新答案就可以了。 (不过听说好像有更好的方法,先占个坑) 时间复杂度$ 阅读全文
摘要:
题目链接 HH的项链 这道题可以直接上主席树的模板 当然用莫队算法也是可以做的 阅读全文
摘要:
题目链接 Problems HDOJ上的题目顺序可能和现场比赛的题目顺序不一样, 我这里的是按照HDOJ的题目顺序来写的。 Problem 1001 签到 Problem 1002 这道题的话,其实一个点上是可以有多种颜色的 因为最多只有51种颜色,所以我们维护51棵线段树即可。 我们对y坐标建立线 阅读全文
摘要:
Problem 1001 考虑到直接搜肯定TLE。 我们从起点开始搜10步,再从终点开始搜10步。 其中,从终点开始搜10步通过预处理完成,因为每一次的终点都是一样的。 存状态的时候我把0变成6(为了调试方便),把所有数字写在一行。 然后把这个大数看成一个7进制数,刚好在long long的范围内。 阅读全文
摘要:
Problem 1001 Problem 1002 考虑把每个询问拆分成2个单独的询问。 拆分后的询问为(s, t, x)。 也就是询问从s到t的最短路上所有权值小于等于x的点的权值总和。 我们把(s, t, a, b)拆成(s, t, a - 1) 和(s, t, b)。 那么第二个询问减去第一个 阅读全文