上一页 1 2 3 4 5 6 7 8 9 ··· 41 下一页
摘要: 传送门 先通过dfs预处理出来所有只有2和9的数,也就大概2000多个。 想在[L,R]中找到是这些数的倍数的数,可以通过容斥原理 那么如果a % b == 0,那么便可以把 a 去掉,因为 b 的倍数肯定包括 a 的倍数,那么就会只剩500多个数 然后我们dfs枚举所有数的可能,并顺便求出他们之间 阅读全文
posted @ 2017-10-13 21:17 zht467 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 传送门 好神啊。。 需要用非负数个a1,a2,a3...an来凑出B 可以知道,如果一个数x能被凑出来,那么x+a1,x+a2.......x+an也都能被凑出来 那么我们只需要选择a1~an中任意一个的a,可以求出在%a下的每个数最小需要多少才能凑出来 这样我们选择一个最小的a,速度更快,令m=m 阅读全文
posted @ 2017-10-10 14:23 zht467 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 传送门 蒟蒻并不懂A*是什么,但是题解里有个Astar 可以看出,当前棋盘和最终的棋盘如果有k个不同的,那么至少需要k-1步来移动 所以如果 当前步数 + k - 1 > limit 就直接退出 然后当然就是用喜闻乐见的迭代加深搜索啦,广搜占空间那么大又难写 最后吐槽一句,为什么我加哈希判重反而比不 阅读全文
posted @ 2017-10-09 16:38 zht467 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 传送门 迭代加深搜索是必须的,先枚举加数个数 然后搜索分母 这里有一个强大的剪枝,就是确定分母的范围 阅读全文
posted @ 2017-10-09 15:25 zht467 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 传送门 这种鬼畜的状压DP。。。第一次见 看到 0 <= Bi <= 7 就应该想到状态压缩,然而此题实在太鬼畜,想到也没什么乱用 f[i][j][k]表示前i-1个人全部吃完,i~i+7的人的吃饭状态为j,最后一个吃饭的人和i距离为k 因为有可能第i个人及以后的人都好没有吃,最后一个吃饭的人是前i 阅读全文
posted @ 2017-09-29 15:29 zht467 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 传送门 注释写明了一切 阅读全文
posted @ 2017-09-29 11:21 zht467 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 传送门 t(i,j)表示下标从i到j的数 d[i]表示以i结尾的最小的数的下标 d[i]=max(j) (1<=j<=i && t(d[j-1],j-1)<t(j,i)) 这样从1到n一遍DP可以求出末尾最小的数 f[i]表示以i开头的最大的数的下标 f[i]=max(j) (i<=j<=n && 阅读全文
posted @ 2017-09-29 09:17 zht467 阅读(318) 评论(2) 推荐(1) 编辑
摘要: 传送门 orz不会做。。。 一个好理解的做法(n^3*k): 分n=1和n=2两种情况考虑。 n=1时,预处理出前缀和sum[]。 设f[i][j]为到达第i格,已经放了j个子矩阵的最大和, 那么每次先把f[i][j]的值设为f[i-1][j](第i个元素不属于第j个子矩阵) 剩下的情况就是第i个元 阅读全文
posted @ 2017-09-28 19:30 zht467 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 传送门 首先先从小到大排序,如果没有重复的元素,直接一个一个往上填即可,每一个数就等于当前行和列的最大值 + 1 如果某一行或列上有重复的元素,就用并查集把他们连起来,很(不)显然,处于同一行或列的相同元素始终应该保持一样的,然后再一个一个往上填 阅读全文
posted @ 2017-09-28 15:40 zht467 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 传送门 BZOJ没数据范围。。。 其实数据范围是这样的。。 前20%可以直接n^3暴力枚举每个区间 前40%可以考虑每一位,因为所有数每一位都是独立的,而和的期望=期望的和,那么可以枚举每一位,再枚举区间,最大 31*n*n 想到枚举每一位也就离正解不远了,可以dp, 对于xor有贡献的是区间xor 阅读全文
posted @ 2017-09-28 08:11 zht467 阅读(160) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 41 下一页