
其它-搜索
Endless_Way
这个作者很懒,什么都没留下…
展开
-
BZOJ 4007 [JLOI2015]战争调度
树形DP+状压+搜索。刚开始想了一些奇怪的树形DP,都没法做,后来发现是自己对题目理解有误。如果枚举所有点的决策,那是O(22n)O(2^{2^n})。发现对于一个最底层节点,他的贡献只和一条链有关,于是可以考虑从这里下手。对于一个点i,如果他的所有上司的状态已经确定,那么他的左右子树的决策将互不影响,于是可以用DFS枚举一整条链的状态并进行DP。记f[i][j]表示i结点为根的子树中去j个参加战争原创 2016-08-17 15:57:21 · 701 阅读 · 0 评论 -
BZOJ 4345 [POI2016]Korale
模拟搜索+线段树我觉得这题挺妙的啊。注意到当n=1000000很大的时候会有2^1000000种取法,但题目只要求选到k=1000000个,也就是我们不能爆搜,但要保证每一次都能取到一个前k大的。也就是要进行一个优秀的搜索。考虑朴素的垃圾搜索,是每次枚举i选或者不选,然后搜索i+1。注意到搜索的下一层的和总大于上一层。因此把其中有用的节点拿出来,是一个树形结构,若当前在第i层,有两种决...原创 2018-07-18 23:27:17 · 311 阅读 · 0 评论 -
LOJ 6043 「雅礼集训 2017 Day7」蛐蛐国的修墙方案
搜索+贪心因为要有解,所以把给出的置换连边形成的图一定是若干简单偶环。然后想了半天贪心,发现什么策略都找不到……考虑爆搜,直接搜索是O(2n2n)O(2^{n\over2}n)的,注意到如果环大小为2则一定前一个是左括号,因此只要枚举长度至少4的环,这样O(2n4n)O(2^{n\over4}n),就能过了。#include<cstdio>#include<cstdlib>#define N 1原创 2017-06-24 21:50:47 · 720 阅读 · 0 评论 -
BZOJ 4207 Can
分治+爆搜仔细想想,如果给我一个很长的区间,问我这个区间是不是极好的,我好像都不太会。。。那就考虑乱搞吧如果数据随机的话,一个直观的感觉是合法长度很短。考虑爆搜,我们需要提高爆搜的速度,肯定是要让它较快找到最长的解。一个有效的方法是从中间向两边搜,因为如果答案很长则很容易找到最优解,然后最优性剪枝就可以飞起来。这样递归往两边分治,能够较快找到最长答案。相反,如果答案很短,那每一次爆搜的长度就很短。到原创 2017-03-11 23:14:34 · 449 阅读 · 0 评论 -
BZOJ 4238 电压
tarjan脑补一下会发现合法的边一定在所有的奇环上,却不在任何偶环上。tarjan弄出一棵生成树,考虑每一条非树边,如果加上之后形成奇环则这个环上的边必选,否则必不选。对于不只含一条非树边构成的环,它一定能够被分成若干这些只含一条非树边构成的环,易证用小环来处理的效果能等价于大环。一个树边合法,当且仅当它被包含在所有奇环,不包含于任何偶环。一个非树边合法,当且仅当只有一个奇环(画图或脑补)。#in原创 2017-01-30 17:02:52 · 388 阅读 · 0 评论 -
CF 241D Numbers
搜索奇技淫巧题我们无视排列中所有>25的元素。因为由1~25组成的异或和为0的方案有1048576个,已经远大于50000。在这么多种方案下,一个序列拼起来模p几乎可以看作是一个随机函数,异或和为0跟拼起来模p等于0之间几乎没有相关性。那也就是说我们在1~25之内找不到合法解的概率是 (4999950000)1048576≈7.8∗10−10(\frac{49999}{50000}) ^ {104原创 2017-01-27 15:43:01 · 457 阅读 · 0 评论 -
CF 238E Meeting Her
最短路+搜索本题考察搜索的奇技淫巧,让我口胡一下先floyd把最短路跑出来。维护an[i]表示在i处且不在任何车上,到b的最少次数,那么最终答案是an[a]。正推无法更新答案,因为可能出现循环更新,我们考虑从终点逆推更新答案。初始设an[b] = 0。然后我们O(n^2)地暴力枚举每一条车的线路+暴力枚举每一个站点,O(n)dfs来找出所有an[i] = 1的站点。然后继续暴力算出所有an[i] =原创 2017-01-26 22:36:57 · 391 阅读 · 0 评论 -
UOJ 147 & 151 [NOIP2015]斗地主
暴搜DFS当初在NOIP2015考场上的时候还是too young,这题只拿了15分,那时候什么都不懂……考虑到如果不出任何顺子,那么我们可以贪心地出牌,肯定能得到最优解。于是我们在DFS爆搜的时候只要考虑顺子就好了。这样确实可以A掉UOJ147(因为数据比较弱?)然而UOJ151是数据加强(果然好强…),交上去就跪了。原因是有一些点是类似于把两个炸弹拆成四带二来打之类的……加了好多特判才A……下面原创 2016-10-07 15:56:19 · 427 阅读 · 0 评论 -
UOJ 51 [UR #4]元旦三侠的游戏
博弈论+记忆化搜索这题没有什么好的构造方案,于是考虑直接从必胜态或必败态的关系入手f[a][b]=1或-1表示必胜或必败态,当且仅当f[a+1][b]=1&&f[a][b+1]=1,f[a][b]是必败态,然后就可以记忆化搜索啦。a,b很大怎么办?实际上如果a>sqrt(n),一定有b=1,直接就可以根据奇偶性出解了。。。#include<cstdio>#include<cmath>#defin原创 2016-10-15 21:59:16 · 465 阅读 · 0 评论 -
BZOJ 4602 [Sdoi2016]齿轮
爆搜+取对数优化很显然我们可以定一个点,然后DFS下去看有没有矛盾。但是这样会炸精度。于是考虑判断a*b==a*c可以转为判断log(a*b)==log(a*c)也就是log(a)+log(b)==log(a)+log(c)。这样精度就安全了。#include<cstdio>#include<cmath>#include<cstring>#define N 1005#define M 100原创 2016-09-29 11:52:37 · 573 阅读 · 0 评论 -
BZOJ 1053 [HAOI2007]反素数ant
质因数+搜索显然最终答案x的质因数一定是所有质数中最小前几项,否则一定可以把较大的质因数换成一个较小的没用过的质数,而答案更优。发现只要前十多个质数乘起来就可以超过2000000000,于是开始爆搜。#include<cstdio>#include<cmath>#include<algorithm>using namespace std;int cnt=11, prime[12]={1,2,原创 2016-09-14 10:23:12 · 331 阅读 · 0 评论 -
BZOJ 1024 [SCOI2009]生日快乐
DFS爆搜首先可以确定每个人分到的面积S,然后DFS枚举怎么切,估计复杂度应当是O(2n1∗2n2∗2n22∗⋯⋯)O(\frac{2n}{1}*\frac{2n}{2}*\frac{2n}{2^2}*⋯⋯),n很小,所以logn很小,可以随便玩#include<cstdio>#include<cmath>#include<algorithm>using namespace std;doub原创 2016-09-14 10:13:02 · 271 阅读 · 0 评论 -
BZOJ 1054 [HAOI2008]移动玩具
BFS爆搜+状压判重很少见到水题啦。这题n=4那肯定状压吧,分析一下时间复杂度。 最多状态217−1=1310712^17-1=131071 每一次搜索,极端情况42∗4=644^2*4=64 乘起来妥妥的, 自信满满写完就交上去。结果WA了一下,手残没办法#include<cstdio>#include<queue>using namespace std;int in(){原创 2016-08-21 16:59:43 · 1618 阅读 · 0 评论 -
POJ 1379 Run Away
模拟退火。随机出30个点,模拟退火,跳的步长随温度降低以保证稳定,每次挑30个点来跳,接下来就看RP了不知道有没有能证明正确性的正解,感觉模拟退火挺不靠谱的- -自己人品比较差,降温时间弄得比较长,果然AC了#include<ctime>#include<cmath>#include<cstdio>#include<cstdlib>#include<algorithm>#define NU原创 2016-08-17 17:30:30 · 371 阅读 · 0 评论 -
POJ 2024 Know When to Hold 'em
模拟刚开始题目看错了,原来后面两个 hole cards 是不能用的……英语不太好。然后我就没有在训练规定时间内干掉这个题了。做法就是暴力选牌,找到最大的手牌,如果有多种答案就枚举每一张牌,如果在每一种方案里它都出现那它就一定在答案里,否则把它的花色改成*就好了。#include<cstdio>#include<cstring>#include<alg...原创 2018-07-26 12:26:20 · 273 阅读 · 0 评论