搜索
SC.ldxcaicai
我很菜=_=
展开
-
2018.09.11 bzoj3629: [JLOI2014]聪明的燕姿(搜索)
传送门 一道神奇的搜索。 直接枚举每个质因数的次数,然后搜索就行了。 显然质因数k次数不超过logknlogknlog_kn,因此搜索很快。 注意,如果最后剩下的乘积-1是一个质数,那么这是一个可行解。 另外对于这道题,我们只需要筛出1e5的素数就够了,太大的直接枚举自己打的素数表判就行了。 代码:#include<bits/stdc++.h>#define N ...原创 2018-09-11 19:23:06 · 146 阅读 · 0 评论 -
2018.11.01 NOIP训练 递增数列(迭代加深)
传送门直接迭代加深搜索。发现每次最多增加一倍,最少增加一,于是果断上下界剪枝。代码原创 2018-11-01 11:49:25 · 153 阅读 · 0 评论 -
2018.11.01 NOIP训练 木棒分组(搜索+剪枝)
传送门测试搜索的时候状态定义错了233。我们把木棒从大到小排序。然后保证每一组搜到的木棒出现的长度是从大到小递减的。直接定义现在搜的木棒从什么位置开始,当前这一组的总长度,之前几组的总长度。然后多剪剪枝就可以了。代码...原创 2018-11-01 11:52:43 · 251 阅读 · 0 评论 -
2018.11.01 bzoj4325: NOIP2015 斗地主(贪心+搜索)
传送门原来一直以为是一道大模拟。没想到是一道搜索+最优性剪枝如何搜最优呢?我们考虑怎么最快出完。大概是应该尽量出当前能出出去最多的吧。于是我们选择优先出顺子。这样做有什么好处呢?我们会发现除了顺子以外的牌都能够直接算最少需要出几轮。因此把顺子出完之后更新答案就行了。于是出牌优先级:顺子>四带二>四带一>三带二>三带一>对子>单牌代码:#i...原创 2018-11-01 21:29:49 · 199 阅读 · 0 评论 -
2018.11.04 NOIP训练 小水塘(并查集)
传送门这是复习普及组的时候做过的题了。之前一直觉得很难码没有去做。现在发现可以用并查集直接水过去。其实就是把题目中说的连通的部分的面积用带权并查集维护一下就行了。代码:#include<bits/stdc++.h>using namespace std;inline int read(){ int ans=0; char ch=getchar(); while(!...原创 2018-11-04 15:43:20 · 134 阅读 · 0 评论 -
2018.11.02 洛谷P2661 信息传递(拓扑排序+搜索)
传送门按照题意模拟就行了。先拓扑排序去掉不在环上面的点。剩下的都是简单环了。于是都dfsdfsdfs一遍求出最短的环就行。代码:#include<bits/stdc++.h>using namespace std;const int N=2e5+5;int n,du[N],nxt[N],ans=0x3f3f3f3f;bool vis[N];inline int d...原创 2018-11-02 23:29:23 · 148 阅读 · 0 评论 -
bzoj3027: [Ceoi2004]Sweet(生成函数+搜索)
传送门生成函数好题。题意简述:给出n个盒子,第iii个盒子里有mim_imi颗相同的糖(但不同盒子中的糖不相同),问有多少种选法可以从各盒子中选出数量在[a,b][a,b][a,b]之间的糖果。思路:先对每个盒子构造出生成函数:1+x2+...+xmi=1−xmi+11−x1+x^2+...+x^{m_i}=\frac{1-x^{m_i+1}}{1-x}1+x2+...+xmi=1−x...原创 2018-12-30 20:44:09 · 254 阅读 · 0 评论 -
bzoj1853: [Scoi2010]幸运数字(容斥+dfs)
传送门搜索菜题,然而第一次没有注意然后爆longlonglong longlonglong了。题意:称所有数位由6,86,86,8组成的数为幸运数字,问一个一个区间[l,r][l,r][l,r]中所有幸运数字及其倍数的个数。思路:先把所有的幸运数字找出来并筛去那些会算重的,剩下一共不超过100010001000个数。即如果满足numi∣numjnum_i|num_jnumi∣numj...原创 2019-01-17 11:05:10 · 241 阅读 · 0 评论 -
SCU4444 Travel(最短路+bfs)
传送门题意简述:给出一张nnn个点的完全图,有mmm条边边权为aaa其余点边权为bbb,问从111到nnn的最短路。思路:分类讨论一波即可。(1,n)(1,n)(1,n)的边权为aaa,那么只用求从111到nnn不经过给出边的最短路,这个用set+bfsset+bfsset+bfs解决。(1,n)(1,n)(1,n)的边权为bbb,那么只用求从111到nnn经过给出边的最短路,上spf...原创 2019-01-22 18:59:44 · 312 阅读 · 0 评论 -
bzoj2061: Country(hash+记忆化搜索)
传送门题意:有n个字符串变量(n<=26),它们可以包含其他的字符串变量,也可以包含小写字母。(这些变量用大写字母表示)。举个栗子:A=greatglorycorrect B=xx C=leadusgo D=ABC E=DDDDdjh F=EEEEEgoodbye数据保证定义是无环的。给定一个小写字母组成的模式串,求某一个变量所代表的字符串里这个模式串出现了几次。模式串长度,每条...原创 2019-07-13 22:50:33 · 346 阅读 · 0 评论 -
2018.11.01 NOIP训练 某种密码(折半搜索)
传送门直接折半搜索,把所有和装到unorderedmapunordered_mapunorderedmap里面最后统计答案就行了。然后考试的时候读优并没有处理有负数的情况于是爆零了代码...原创 2018-11-01 11:47:21 · 149 阅读 · 0 评论 -
2018.11.01 NOIP训练 cost数(搜索+容斥原理)
传送门唉考试的时候忘记剪倍数的枝了666666分滚粗。其实就是一直取lcmlcmlcm搜索,然后容斥原理统计就行了。代码原创 2018-11-01 11:44:58 · 175 阅读 · 0 评论 -
2018.09.09 cogs693. Antiprime数(搜索)
传送门 看完题发现很sb。 前10个质数乘起来已经超出题目范围了。 因此只用搜索前几个质数每个的次数比较谁的因数的就行了。 代码:#include<iostream>#define ll long longusing namespace std;int pri[10]={2,3,5,7,11,13,17,19,23,29};ll n,maxcnt,ans;in...原创 2018-09-09 21:35:22 · 106 阅读 · 0 评论 -
2018.09.18 atcoder Many Formulas(搜索)
传送门感觉自己搜索能力退化了,这种弱智搜索写了整整5min,这样下去比赛会凉的。看来得多练练题了。代码:#include<bits/stdc++.h>#define ll long longusing namespace std;ll x,ans=0;int n,num[15];inline void dfs(int pos,ll sum){ if(pos==n+1...原创 2018-09-18 23:06:25 · 205 阅读 · 0 评论 -
2018.09.24 塔(搜索)
描述小A想搭一个体积不超过m的塔,他有各种大小的立方积木,比如边长为a的积木,体积为a^3,现在小A需要你给一个X,每次小A会用一个体积不超过X的最大积木,依次到搭好为止,现在他想最大化积木的个数,同时在积木个数最大的情况下使X最大输入一行一个数m输出一行两个数,最多积木数以及x样例输入48样例输出942提示【样例解释】X=23或42都是9次,42 = 3^3 + 2^3...原创 2018-09-24 09:42:21 · 241 阅读 · 0 评论 -
2018.09.24 bzoj1016: [JSOI2008]最小生成树计数(并查集+搜索)
传送门正解是并查集+矩阵树定理。但由于数据范围小搜索也可以过。我们需要知道最小生成树的两个性质:不同的最小生成树中,每种权值的边出现的个数是确定的不同的生成树中,某一种权值的边连接完成后,形成的连通块状态是一样的那么可以根据乘法原理按权值分步,将每一步得到的结果相乘。每次分步的计算可以用搜索/矩阵树定理来实现。代码:#include<bits/stdc++.h>...原创 2018-09-24 23:40:11 · 149 阅读 · 0 评论 -
2018.10.03 迷宫游戏(状压+bfs)
描述Pluto 已经很久没有玩游戏了,今天 Pluto 难得能够歇一天。于是,Pluto 决定要玩一个非常好玩的迷宫游戏。这个迷宫游戏在一个 n 行 m 列的矩阵上进行,游戏中的任意时刻不能走出这个矩阵。在这个矩阵中,有下列几种元素:. :表示一块平地。X :表示一堵墙,不能经过。S :表示游戏的起点,有且仅有一个。T :表示游戏的终点,有且仅有一个。A~H :表示一种类型的门,每种类...原创 2018-10-03 23:22:19 · 359 阅读 · 0 评论 -
2018.10.05 bzoj2393: Cirno的完美算数教室(容斥原理+搜索)
传送门经典题目。显然满足题意的数最多不超过1024个。然后对于两个数a,ba,ba,b,如果aaa是bbb的倍数,那么就不必计算aaa的贡献。处理出来之后容斥原理+爆搜剪枝就能过了。代码:#include<bits/stdc++.h>#define ll long longusing namespace std;ll L,R,divv[1050],Div[1050],...原创 2018-10-05 20:37:29 · 236 阅读 · 0 评论 -
2018.10.09 NOIP模拟 好数(双向搜索)
传送门直接双向搜索出两边可行解,然后把两边的可行解合并起来得出答案就行了。注意合并的时候可以利用排序和单调性优化时间复杂度。直接枚举合并是O(siza∗sizb)O(siza*sizb)O(siza∗sizb)的。但排序之后随着aaa集合中的乘积的增大,bbb集合中的可行个数显然是单调递减的。这样就可以方便的统计答案了。代码:#include&amp;amp;lt;bits/stdc++.h&amp;amp;gt;...原创 2018-10-11 23:49:58 · 216 阅读 · 0 评论 -
2018.10.21 codeforces1071B. Minimum path(dp+贪心+bfs)
传送门唉考试的时候写错了两个细节调了一个多小时根本没调出来。下来又调了半个小时才过。其实很简单。我们先dpdpdp出最开始最多多少个连续的aaa.然后对于没法继续连续下去的用贪心+bfsbfsbfs来弄就行了。技不如人,告辞。代码:#include&lt;bits/stdc++.h&gt;using namespace std;int n,k,mx[2005][2005],ma...原创 2018-10-21 23:46:21 · 340 阅读 · 0 评论 -
2018.10.26 NOIP模拟 性感手枪(搜索)
传送门vis[x][y]vis[x][y]vis[x][y]记录这个点是否在之前被搜过,且被搜过的坐标是什么。然后搜索的时候记录一个循环的下标和不循环的下标就行了。代码...原创 2018-10-26 15:55:55 · 282 阅读 · 0 评论 -
LOJ#6397. 「THUPC2018」蛋糕 / Cake(暴力dfs)
传送门思路跟这题一样的。但不能直接用组合数算因为边长不一样。。。于是可以dfsdfsdfs,复杂度O(T∗2n),n≤4O(T*2^n),n\le4O(T∗2n),n≤4,注意要特判边长等于一的情况。代码:#include<bits/stdc++.h>#define ri register intusing namespace std;const int rlen=1&...原创 2019-08-02 09:10:12 · 430 阅读 · 0 评论