搜索
Icefox_zhx
这个作者很懒,什么都没留下…
展开
-
bzoj2393 Cirno的完美算数教室(容斥原理+dfs)
和bzoj1853基本一模一样,因为是2和9还更少了些合法数字…#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 2100inline char gc(){ static char buf[1<<16],*S,*...原创 2018-06-22 16:25:00 · 327 阅读 · 0 评论 -
bzoj3027 [Ceoi2004]Sweet(生成函数+组合数学+爆搜)
首先我们可以写出每一种糖果的生成函数,然后写成闭形式,乘起来,就得到了 ∏i=1n(1−xmi+1)(1−x)n\frac{\prod\limits_{i=1}^n(1-x^{m_i+1})}{(1-x)^n} 答案就是xa...xbx^a...x^b的系数和。 上式的分子部分我们可以O(2n)O(2^n)爆搜,搜出每一项kxykx^y 考虑剩下的部分(11−x)n(\frac{1}{1-x原创 2018-04-11 09:50:37 · 334 阅读 · 0 评论 -
bzoj1054 [HAOI2008]移动玩具(状压+bfs)
一共就16个位置,不是1就是0,显然想到状压。 一共2162^{16}种状态,bfs即可。复杂度大概O(216∗16∗4)O(2^{16}*16*4)原创 2018-04-10 09:42:48 · 327 阅读 · 0 评论 -
bzoj1053 [HAOI2007]反素数ant(数论+搜索)
求一段区间内最大的反质数,其实就是求一段区间内约数个数最大的数,如果有多个取最小的。我们知道 x=∑i=1kpaiix=\sum\limits_{i=1}^kp_i^{a_i} 则约数个数为∏i=1k(ai+1)\prod\limits_{i=1}^k(a_i+1) 因此我们不难发现我们一定有a1>=a2>=...>=aka_1>=a_2>=...>=a_k 而且我们发现前10个质数的乘积就原创 2018-04-10 09:15:24 · 289 阅读 · 1 评论 -
bzoj5156 [Tjoi2014]拼图(状压+爆搜)
应该直接爆搜就可以了。我状压了一下每个位置目前是否被占据,跑得快了一些。不过这样输出路径时有点麻烦x 注意输出的,后面有空格。。。原创 2018-03-12 13:39:53 · 286 阅读 · 0 评论 -
bzoj1999 [Noip2007]Core树网的核(树的直径+单调队列+贪心)
加强版,n变成了500000.本来的瞎搞法就gg了 怎么办呢?我们需要更高明的瞎搞(逃 首先我们知道两条性质: (1)对于树中的任意一点,距离其最远的点一定是树的直径的某一端点。(2)所有的直径是等价的,即任意一条直径所能求出的最小偏心距相等。于是我们两遍dfs先求出任意一条直径,并记录下来。堵上直径上的所有点,从直径上的每一个点出发遍历他能到达的点,求出不经过直径距它最远的点的距离,记作mx原创 2018-02-25 14:36:38 · 383 阅读 · 0 评论 -
bzoj3629 [JLOI2014]聪明的燕姿(数论+dfs)
首先我们有约数和公式: 若x=∏i=1npqiix=\prod\limits_{i=1}^np_i^{q_i} 则x的约数和d(x)=∏i=1n∑j=0qipjid(x)=\prod\limits_{i=1}^n\sum\limits_{j=0}^{q_i}p_i^j 于是我们可以枚举质因子pi,爆搜答案。要注意优秀的剪枝技巧qaq原创 2018-03-17 18:12:31 · 372 阅读 · 0 评论 -
poj1419 Graph Coloring(一般图最大点独立集)
就是求一般图的最大点独立集,也就是求补图的最大团。 此题最大团直接爆搜求解即可。原创 2018-03-17 16:21:54 · 1165 阅读 · 1 评论 -
bzoj4325【2015提高】斗地主(爆搜+贪心)
超级大爆搜,先把顺子都搜索枚举了,然后剩下的牌贪心。 可能还是会被hack掉qaq原创 2018-02-24 22:26:24 · 284 阅读 · 0 评论 -
CF55D Beautiful numbers(dp+离散化+数论)
要求整除每一位上的数,就是要mod lcm(a1,a2,…an)余0 M=lcm(1,2,…,9)=2520 因为a%(nx)≡amodxa \%(nx)\equiv a \mod x 所以我们只关心x%2520的余数即可。 我们有dp[i][j][x]表示前面的数的各位的lcm为j,前面的数%2520余x,还剩的i位有多少种合法填法。 然后因为这样还是太慢,我们把j离散化掉,最多只有48原创 2018-03-10 13:11:29 · 276 阅读 · 0 评论 -
bzoj1495 [NOI2006]网络收费(状压/暴力+树形dp)
首先我们观察收费表格,对于非叶子节点,如果n0< n1,我们把这个节点的状态记作0,否则记作1.则不难发现,对于一个叶子节点x,如果和它的祖先i的状态一样,他就要付出在这个祖先处的所有费用。因此我们可以分开来计算每一个叶子节点的贡献。预处理出cost[x][i]数组,表示叶子节点x在祖先i处的所有花费。(cost[x][i]=∑[lca(x,y)==i]∗f[x][y]cost[x][i]=\sum原创 2018-02-22 14:06:57 · 378 阅读 · 0 评论 -
Codeforces Round#467
CF937A Olympiad(模拟)答案就是非0的数的种类数CF937B Vile Grasshoppers(数学+暴力)CF936A Save Energy!(模拟)CF936B Sleepy Game(图论+dfs)原创 2018-02-26 09:40:56 · 360 阅读 · 1 评论 -
bzoj1017 [JSOI2008]魔兽地图DotR(树形dp+背包dp+剪枝)
真神orz 给出的关系显然是一棵树,我们可以先处理出每个点的单价和最多购买数量。令f[x][i][j],表示在点x的子树中,恰花费i,上缴j个x的最大获利。考虑背包转移,令g[i][j]表示前几个子树的恰花费i,上缴j个的最大获利,现在做到儿子y,则f[x][i+ii][j]可以由g[i][j]+f[y][ii][j*need[y]]更新。然后考虑x自己少上缴点的转移,即f[x][j][i]可以用原创 2018-03-28 20:33:10 · 487 阅读 · 0 评论 -
bzoj1024 [SCOI2009]生日快乐(爆搜)
每次枚举这一刀切在哪里即可。原创 2018-03-29 13:12:29 · 236 阅读 · 0 评论 -
bzoj4756 [Usaco2017 Jan]Promotion Counting(dfs+BIT)
dfs+树状数组即可。子树内的贡献就是进子树前存一个,出子树存一个,差就是子树内的贡献。原创 2018-04-12 16:25:47 · 326 阅读 · 0 评论 -
bzoj1853 [Scoi2010]幸运数字(容斥原理+dfs)
我们发现纯幸运数字只有2046个,而去掉倍数之后只剩了943个。 我们直接容斥,暴力枚举就好了qaq 注意剪枝,从大到小枚举,求lcm避免爆ll等玄学技巧就好了qaq#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 2100in...原创 2018-06-22 16:21:25 · 313 阅读 · 0 评论 -
bzoj2574 [Poi1999]Store-Keeper(bfs+点双)
和bzoj5138基本一样qaq#include &lt;bits/stdc++.h&gt;using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 110inline int read(){ int x=0,f=1;char ch=getchar(); while(ch&lt;'0...原创 2018-05-31 22:26:32 · 678 阅读 · 0 评论 -
bzoj5138 [Usaco2017 Dec]Push a Box(bfs+点双)
推箱子owo 考虑bfs出所有可以到达的状态,O(1)回答询问。 用f[x][y][i]f[x][y][i]f[x][y][i]表示箱子在(x,y),人在箱子的i方向。(人不在箱子旁时没啥用,所以可以压缩状态) 两种决策: 1、推箱子,很好转移。 2、箱子不动,人换方向。需要判断两个点是否存在不经过箱子的路径。 可以提前求出所有的点双来快速判断。因为这两点一定至少连通,所以如果存在一个...原创 2018-05-31 22:16:49 · 452 阅读 · 0 评论 -
bzoj1327/poj2286 The Rotation Game(IDA*)
迭代加深A*搜索qaq 就是每次设一个目标深度,把当前局面在最理想状况下还需多少步当做估价函数。如果当前深度+估价函数&gt;目标深度则剪枝。#include &lt;bits/stdc++.h&gt;using namespace std;#define inf 0x3f3f3f3f#define ll long longinline char gc(){ static c...原创 2018-06-13 13:27:37 · 196 阅读 · 0 评论 -
bzoj4997 [Usaco2017 Feb]Why Did the Cow Cross the Road III(bfs)
枚举每一个起点,bfs能访问到几头牛即可。复杂度O(n3)O(n^3)原创 2018-04-24 11:33:13 · 192 阅读 · 0 评论 -
bzoj4945 [Noi2017]游戏(2-sat+枚举)
如果没有x那就是很标准的2-sat模型。 每个点两种选择,上第一种车或第二种,要求i,oi,j,oi就建边i,oi->j,oj,建边j,oj^!->i,oi^1那对于x怎么办呢?这是3-sat呀qaq还好x的很少,我们可以枚举他为不能上A或不能上B(可以发现,不用枚举不能上C,因为前面的两种情况已经枚举全了)。 复杂度O(2d(n+m))O(2^d(n+m))原创 2018-04-24 10:29:23 · 292 阅读 · 0 评论 -
bzoj1064 [Noi2008]假面舞会(图论+dfs)
图论神题orz如果这个图有环,那么最大的就是所有环长的gcd。这里有环不仅仅指有向图上的环,一些边反向后可以成环的也算(因为这种相当于两条收尾相同的链,它隐含着一个长度为两条链的长度的差的环)。为了方便,我们把有向边x->y,拆成正向边x->y,1和反向边y->x,-1。这样环长就直接是环长了。最小的就是>=3的最小的gcd的因数。如果没有环,我们考虑原图的一个连通块,他最多有最长链上的点数个颜色,原创 2018-04-19 11:05:52 · 254 阅读 · 0 评论 -
bzoj4032 [HEOI2015]最短不公共子串(SAM+序列自动机+bfs)
序列自动机就是可以识别所有子序列的自动机,点数O(n)O(n),边数O(26n)O(26n) 每个点的par就是这个点代表的字母上一次出现的位置,因此要记录last[i],表示字母i上一次出现在哪,然后每一个点的儿子i指向他后面出现的第一个字母i的位置。求A最短的子串/子序列不是B的子串/子序列,我们两个自动机一起跑,状态[x][y]表示一个字符串匹配到了A自动机的x节点,B自动机的y节点,因为是原创 2018-04-23 11:02:49 · 325 阅读 · 0 评论 -
bzoj1194 [HNOI2006]潘多拉的盒子(自动机+bfs+tarjan+拓扑序dp)
我们枚举每一对自动机A,B,看A能识别的所有串能否被B全都识别。如果能就建边A->B.那么我们tarjan缩点+拓扑序dp求最长链即可。 考虑如何判断能否全都识别:bfs,同时扩展两个自动机,如果某一个串在A自动机走到了结束节点而B自动机不是结束节点,那么就不能全部识别。以A,B自动机分别匹配到了哪个节点为状态,不重复搜,复杂度就是O(n2)O(n^2)的 因此总的复杂度就是O(S2n2)O(S原创 2018-04-23 09:50:12 · 221 阅读 · 0 评论 -
bzoj1086 [SCOI2005]王室联邦(树分块,dfs)
嗯,很好的向你证明了树上分块,每一块大小都可以控制在B~3B之间。原创 2018-04-06 21:38:47 · 153 阅读 · 0 评论 -
bzoj1085 [SCOI2005]骑士精神(A*搜索)
估值函数为:当前棋盘与目标棋盘不同的位置数量-1易知一个棋盘最少需要这么多的步数才能达成目标棋盘若当前步数+估值函数大于最大深度 则剪枝原创 2018-04-06 20:46:45 · 243 阅读 · 0 评论 -
bzoj1770 [Usaco2009 Nov]lights 燈(高斯消元解异或方程组+枚举自由元)
首先我们发现每个开关要不嗯1次,要不摁0次,没必要摁多次。于是对于每个点i,我们就得到了这样一个方程组: a[i][1]*x[1]^a[i][2]*x[2]^…^a[i][n]*x[n]=1. 其中a[i][j]表示i,j是否有边,如果有就是1,否则是0.x[i]表示是否嗯开关i。然后我们用高斯消元解这个方程组,可以用bitset优化。然后爆搜枚举自由元,取最优解。原创 2018-01-20 22:01:24 · 987 阅读 · 0 评论 -
bzoj1095 [ZJOI2007]Hide 捉迷藏(括号序列+线段树/动态点分治+堆)
括号序列做法真是神神神呀qaq直接去看岛娘的博客吧:传送门。 或者直接去看noi2008国家集训队论文《数据结构的提炼与压缩》 by cqx1.20upd:终于看懂了点分治+堆的方法…orz hzwer 准确理解每个堆的意义很关键… C[x] 维护的是x所控制的子树中每个点到x在重心树中的父亲的距离 B[x] 维护的是x所控制的子树中以x的每个儿子为根的子树到x的最大距离,即在重心树中x的每原创 2018-01-19 09:44:39 · 468 阅读 · 0 评论 -
bzoj1016 [JSOI2008]最小生成树计数(kruskal+dfs+乘法原理)
首先需要一个结论,对于一个图的不同最小生成树,每种方案所包含的每种权值的边的数量一定一致。换句话说,把每种方案包含的所有边的边权都写下来,写出来的序列一定都一样。关于这个结论的说明放在最后。 这样的话,可以先做一遍kruskal,记下每种边权的使用次数,然后对于每种边权进行dfs,判断有多少种合法的组合方式【一种方案合法意味着:1.加入每条边时,边的两端点一定属于不同的并查集,也就是仍然要符合k原创 2017-09-27 22:46:04 · 341 阅读 · 0 评论 -
hdu5877 Weak Pair(dfs+线段树+离散化)
给定一棵有根树(注意跟不一定是1.。。),求有序对(u,v)满足的个数: 1.u是v的祖先 2.a[u]*a[v]<=k。 我们在对树进行dfs时,做到v点,此时在我们的dfs栈中的点正是v的祖先,一个不多,一个不少,我们只需在这些点中找到小于等于k/a[v]的点。显然可以把权值离散化了,用线段树来维护原创 2017-09-25 20:35:25 · 303 阅读 · 0 评论 -
bzoj3391 [Usaco2004 Dec]Tree Cutting网络破坏(dfs)
这水题刷的。。。原创 2017-09-15 15:43:34 · 445 阅读 · 0 评论 -
bzoj1589 [Usaco2008 Dec]Trick or Treat on the Farm 采集糖果(tarjan缩点+记忆化搜索)
先tarjan缩点,然后记忆化搜索。。每个点就一个出度,重建图后一个强连通若是大于1则不可能有出度。原创 2017-09-15 11:38:56 · 358 阅读 · 0 评论 -
luogu1078【2012普及】文化之旅(dfs)
加点剪枝,然后倒着爆搜,就A了。。。说好的最短路呢???原创 2017-09-13 15:44:36 · 283 阅读 · 0 评论 -
NOIP模拟9.13
NOIP2011提高D1原创 2017-09-13 07:13:32 · 350 阅读 · 0 评论 -
luogu1218 [USACO1.5] Superprime Rib(搜索+素数判断)
#include <cstdio>#include <cstring>int n;bool isprime(int x){ if(x==1) return false; for(int i=2;i*i<=x;++i) if(x%i==0) return false; return true;}void dfs(int x,int cnt){原创 2017-08-26 17:44:07 · 283 阅读 · 0 评论 -
uoj265【2016提高】愤怒的小鸟(状压dp)
首先每两个点可以确定一条抛物线,一条抛物线可能打掉很多猪。所以我们先O(n2)O(n^2)预处理一下第i个点和第j个点所确定的抛物线(算个公式就好了),如果a<0才合法,(注意精度问题,还有特判横坐标相等的,小心除0)然后对于这条抛物线,如果合法的话,我们O(n)O(n)扫一遍,看有没有其他的点也在这条抛物线上。用b数组记录一下(n<=18,我们显然可以用二进制压缩状态,共2n2^n种,把这条抛物线原创 2017-08-14 22:50:19 · 324 阅读 · 0 评论 -
luogu2196 【1996提高】挖地雷(记忆化搜索/dp)
这道题以前写的时候想不明白为什么能dp,所以固执的写了记忆化搜索。。。现在一想其实很简单,这道题给的图其实是很特殊的,每个点只可能与在它后面的点有有向边。所以可以倒着dp,满足了无后效性和最优子结构。dfs+记忆化原创 2017-07-29 10:49:19 · 317 阅读 · 0 评论 -
hdu6113 2017"百度之星"初赛(A)1006度度熊的01世界(搜索)
考时sb,不知写了些什么。。加上评测机爆炸,15+分钟告我WA。。哎,还是自己弱,不说别的了。 在外面加一圈0,使得所有不被1完全包围的都在一个连通块里,然后搜索判断0和1个连通块个数。根据题意 tot1==1&&tot0==1是1 tot1==1&&tot0==2是0 else 是-1原创 2017-08-13 22:30:57 · 402 阅读 · 0 评论 -
Codeforces Round #428
CF839A Arya and Bran(模拟)CF839B Game of the Rows(贪心)CF839C Journey(树+概率)原创 2017-08-13 12:35:34 · 317 阅读 · 0 评论 -
luogu1019【2000提高】单词接龙(字符串+dfs)
没啥可说的。。。就去dfs就好了。。原创 2017-08-08 23:14:37 · 327 阅读 · 0 评论