
--------------搜索--------------
Lynstery
一只蒟蒻
展开
-
[dfs] BZOJ1053: [HAOI2007]反素数ant
题意 对于任何正整数x,其约数的个数记作g(x)。例如g(1)=1,g(6)=4。 如果某个正整数x满足:g(x)>g(i) (0 < i < x)则称x为反质数。 现在给定一个数N,求不超过N的最大的反质数。 (N<=2000000000)题解先要观察出一些结论。 实际上我们并不用真正验证某数是否是反素数,考虑题目要求的是1~n中最大的反素数,显然答案的约数个数一定是1~原创 2017-03-18 08:08:23 · 605 阅读 · 0 评论 -
[A*] 1975: [Sdoi2010]魔法猪学院
题意给出n个点的有向带边权的图。求最多有几条不同的从1到n的路径,使这些路径长度加和小于等于给定的一个值allw。 题解显然选的路径是前k短路。 对于前k短路的问题,我们可以用A∗A^*来优化暴力搜索。 我们知道,当A∗A^*的估价函数h(x)=实际需要的代价时,每一步都是最优的。这里实际上我们是可以做到这一点的,用反向建图的技巧即可求出每个点到终点n的实际距离,并把它作为n。显然如果不干掉访问原创 2017-04-22 19:38:41 · 560 阅读 · 0 评论 -
[IDA*] BZOJ1085: [SCOI2005]骑士精神
题意给定一个初始状态,用最少步数变成如下图案,如果超过15步输出-1。 题解IDA*经典题。 显然是个搜索题,看到”超过15步输出-1”,就能想到迭代加深搞,IDA*特别适合这题。 估价函数很简单,统计一下几个位置上不是正确的颜色即可。 如果把中间是否是空白也加入统计的话,要注意估价结果可能会大于实际代价(最后一步之前h=2>1),所以需要减一。#include<cstdio>#incl原创 2017-05-21 19:08:25 · 502 阅读 · 0 评论 -
[枚举] BZOJ1041: [HAOI2008]圆上的整点
题意求一个给定的圆(x^2+y^2=R^2),在圆周上有多少个点的坐标是整数 (R<=1e+9)题解就是把式子处理一下然后枚举。 显然我们只需计算出正整数解的个数ans,答案即是ans*4+4。 现在考虑求ans: x2+y2=R2x^2+y^2=R^2 x2=R2−y2x^2=R^2-y^2 x2=(R+y)∗(R−y)x^2=(R+y)*(R-y) 注意到左边是平方数,右边两数的乘原创 2017-03-13 20:56:57 · 572 阅读 · 0 评论 -
[搜索 meet in the middle+哈希] ProjectEuler 598. Split Divisibilities
搜索题。直接暴力枚举每个质数取几个。我们要判断一些数乘除最后是否等于1,这个不太好直接做。所以就给每个质数哈希一个值,把乘除变成加减,就好搞了。 需要 meet in middle ,开个hashmap记一下。 还是不够快。注意到后面有较多的指数只有1的质数。他只会对分子或分母贡献2,可以组合数算。 这样 n=100n=100 就可以 5s+ 左右跑出来了。#include<cstdio>#原创 2017-10-10 14:46:54 · 398 阅读 · 0 评论