搜索
文章平均质量分 61
Clove_unique
All that you have lost can be won back bit by bit as long as you wish for it.
展开
-
CF#403(Div.2) 解题报告
A题意简述有2n双袜子,编号为1..n。 按顺序从包中拿出,如果这只袜子的另一只还没有拿出,就放在桌子上,否则将桌子上的另一只拿走。 求桌子上最多有多少只袜子。数据范围1≤n≤1051\le n\le 10^5题解模拟。。代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdlib>#include<cs原创 2017-03-06 11:19:08 · 1271 阅读 · 4 评论 -
[BZOJ4581][Usaco2016 Open]Field Reduction(dfs)
题目描述传送门题解之前做过一个叫做覆盖问题的大暴搜,这道题和那个有点相似吧。。但是明显要简单很多啊。。 可以发现一坨散列的点一定有上下左右边界,每次要删的话只有把某一个边界上的点全删了才是有意义的。那么每一次暴力枚举当前删哪个边界上的点,又因为只需要删掉3个点,dfs的话层数最多是3,所以时间复杂度≈O(10∗43∗n)≈0.32s\approx O(10*4^3*n)\approx 0.32s,原创 2016-11-16 14:36:23 · 721 阅读 · 0 评论 -
[BZOJ2936][POI1999] 降水(堆+bfs:floodfill)
题目描述传送门题解传说这种积水问题有个学名叫floodfill?首先可以发现最外围的一坨块上是不可能积水的。而这些块里面积水的高度取决于高度最小的那个块——木桶效应! 由此可以猜测:块的高度,也可以说是已经确定了能积多少水的积水高度,就是整个算法的关键。 设a(i,j)表示每一个块的原始高度,h(i,j)表示这个块最多积水后的高度。 我们首先在已经确定h(i,j)的块(也就是最外围的块)中选出原创 2016-10-26 21:58:55 · 1173 阅读 · 0 评论 -
[BZOJ1102][POI2007]山峰和山谷Grz(bfs:floodfill)
题目描述传送门题解首先%一下hxy神犇。 她的不靠谱的比别人多挂一个log的代码成功跑进了倒数前三…正常的思路: 每一次搜高度相同的一坨点。如果这一坨点周围有比它高/矮的再判断它是不是山峰/山谷。 每个点只会被遍历一遍,时间复杂度O(n2)O(n^2)。hxy大爷的思路: 用优先队列每次弹出最大/小的点,然后把和它相等或比它小/大的点都遍历一遍。 每个点都会被遍历+入堆出堆一次,时间复杂度原创 2016-10-30 20:59:49 · 887 阅读 · 2 评论 -
[luogu1710]地铁涨价(bfs)
题目描述传送门题解转化问题这里路线涨价明显等同于删边,所以我们可以把问题倒过来思考: 图上依次(倒序)加边,问每个点成为最终图最短路的时间分析记原图的点1到达点i的最短路为dis[i],当前状态下点1到达点i最短路为d[i]。下面称d[i]==dis[i]的点i为扩展点。 通过分析最短路性质发现,某个点v新成为扩展点情况有两个 加边(u,v)更新,且dis[u]==d[u]&&dis[原创 2016-10-30 16:33:02 · 911 阅读 · 0 评论 -
[BZOJ2541][Ctsc2000]冰原探险(bfs)
题目描述传送门题解乍一看这道题好像无从下手,实际上就是预处理之后bfs。 因为要冰块要撞上冰山了之后才能停下来,所以从一个地方向某一个方向推它停在哪里是一定的,并且从某一个冰山左右只能忘上下推,从一个冰山的上下只能往左右推。那这样的话,就可以把每一个冰山的四边编上号,然后每一次暴力查找往某个方向推会撞到哪里。将这两个部分连边。那这样的话就会出来一个有向图,用一遍bfs就可以求出最短路。代码#inc原创 2016-10-30 13:46:22 · 881 阅读 · 0 评论 -
[BZOJ4325][NOIP2015]斗地主(dfs)
题目描述传送门题解这题看上去很神的样子,其实就是一个暴搜。给2s1G,其实完全是浪费。。。 以步数为层数dfs,每一次只需要根据题目所说的打牌方式模拟然后回溯就可以了。不过细节比较多,需要细心一些。代码#include<iostream>#include<cstring>#include<cstdio>using namespace std;int T,n,x,y,ans;int a[20原创 2016-10-27 22:57:27 · 823 阅读 · 0 评论 -
[BZOJ1509][NOI2003]逃学的小孩(树形dp||dfs)
我们笑着说再见,却深知再见遥遥无期。原创 2016-09-27 20:40:18 · 811 阅读 · 0 评论 -
[BZOJ1052][HAOI2007]覆盖问题(二分+dfs)
题目描述传送门题解可以发现一个非常重要的性质:如果我们确定了在一定范围内有一些点,然后用边长为常数k(<边界范围)的三个正方形去覆盖它们的话,如果有合法的方案,那么一定存在至少一个正方形,它的两条边分别卡在两个边界上。 这个性质非常容易证明。因为如果确定是上下左右的边界,那么每一个边界上至少有一个点需要去覆盖。然而我们只有三个正方形,若想要覆盖这四个点,一定存在一个正方形覆盖了两个点,那么它就一定原创 2016-11-03 23:10:57 · 658 阅读 · 0 评论 -
[BZOJ1616][Usaco2008 Mar]Cow Travelling游荡的奶牛(dfs||dp)
题目描述传送门题解看题了之后算了算,步数只有15步,似乎加了这个剪枝之后状态很少啊= =于是直接开始码bfs。码出来了之后发现对拍大数据老是出错,而且把剪枝加的越少数越小!原来我忽略了一个非常重要的问题:队列空间!!!虽然是循环队列,但是由于同时入队的元素非常多,有可能把很多有用的状态覆盖掉! 那么bfs就没法写了,不过dfs是资瓷的,因为递归层数最多是15.不过这道题其实是一道非常简单的dp,设原创 2016-11-02 23:39:35 · 590 阅读 · 0 评论 -
[BZOJ1054][HAOI2008]移动玩具(bfs+hash)
题目描述传送门题解为何会跑这么慢。。。 暴力bfs,每一次将整个棋盘抽象成二进制数然后hash判重。代码#include<iostream>#include<cstring>#include<cstdio>#include<queue>using namespace std;int ed,ans;char s[10];struct hp{int a[10][10],step;}st;原创 2016-11-02 23:17:27 · 589 阅读 · 0 评论 -
[vijos1897]学姐吃牛排(dfs+heap+bst)
Sometimes, suddenly found a lot of people life indispensable, walked on the loose.原创 2016-09-22 20:29:01 · 842 阅读 · 0 评论 -
[noip模拟赛]Formula 1(bfs+并查集)
每个人都会累,没人能为你承担所有伤悲,人总有一段时间要学会自己长大。原创 2016-08-23 17:37:35 · 657 阅读 · 0 评论 -
[BZOJ1189][HNOI2007]紧急疏散evacuate(bfs+二分+最大流)
我快要死了,但是,还能成为你的眼睛继续看到未来。原创 2016-05-04 10:13:57 · 628 阅读 · 0 评论 -
[BZOJ1912][Apio2010]patrol 巡逻(dfs+并查集+树形dp)
痛苦的事是不用一直去想的,因为是想忘也忘不掉的。原创 2016-05-03 14:53:50 · 865 阅读 · 0 评论 -
[tyvj1520]树的直径(dfs||树形dp)
孩子们走在夏天的小路上 吹着微风 双脚赤裸的漫步着想起在那遥远的小时候 那一份从双手中飞翔而出的希望原创 2016-04-26 09:39:34 · 1105 阅读 · 0 评论 -
【校内互测】笨笨的雕塑安置(容斥原理)
【描述】Wcyz为了迎接百年校庆,美化校园,请了校友笨笨将n座雕塑,准备安置在校园内,整个校园可以抽象成一个nxn的大网格,每个lxl网格最多只能安置一座雕塑,但是某些lxl的网格上恰好是一个食堂或湖泊,这些网格是不能安置雕塑的,每个雕塑的造型相同,这样同一种安置方案中交换排列都算一种。任意雕塑在同一行或同一列是不合法的方案。 学校想知道有多少种安置方案,笨笨想从中选择最好的一种方案原创 2015-12-13 10:30:40 · 1641 阅读 · 0 评论 -
[BZOJbegin][NOIP十连测热身赛b]escape(二分+bfs)
题目描述传送门题解预处理每一个点到离它最近的敌人的距离。 二分答案,判定的时候也用bfs,只有不在距离范围内的点才能走。代码#include<iostream>#include<cstring>#include<cstdio>#include<queue>using namespace std;#define N 1005int sx[4]={0,0,1,-1}; int sy[4]={原创 2016-11-16 17:27:18 · 488 阅读 · 0 评论 -
[BZOJbegin][NOIP十连测第一场]Walk(bfs+乱搞)
题目描述 题解40’:按照题目所说建图,bfs求解。 70’: 考虑新增2152^15个点,这些点中i向它所有的子集连一条权值为0的有向边。对于原来的n个点,先把m条边连好,然后对于i号点,由它向新增的第valival_i个点连一条权值为1的有向边,再由新增的第valival_i个点向它连一条权值为0的有向边。 但是这个图里有0权也有1权,所以这里有一个小技巧:建两个图,一个都连0的边,一个原创 2016-11-16 19:25:42 · 800 阅读 · 3 评论 -
CF#410(Div.2) 解题报告
A题意简述给出一个字符串,问是否能改变且仅改变一个字符,使其变成回文串。数据范围|S|≤15|S|\le 15题解模拟。。 不过有一个需要注意的地方:因为不能不改或者改成一样的字符,所以长度为偶数且本身就是回文串的字符串是不合法的,但是长度为奇数的回文串是可以的,比如aaa改成aba代码#include<algorithm>#include<iostream>#include<cstring>原创 2017-04-23 18:47:28 · 723 阅读 · 0 评论 -
[HDU4085]Peach Blossom Spring(斯坦纳树+dfs)
题目描述传送门题目大意:给出一个n个点m条边的无向图,要求前k个点和后k个点两两配对(配对即要求连通)的最小权值子图。题解首先用斯坦纳树求出来f(i,s)表示和点i连通的关键点的状态为s的最小权值 但是接下来只需要两两配对就可以,不一定所有的关键点都连通 这一步我的做法比较蠢,就是直接爆搜。。暴力将k个点匹配+分组 实际上这一步还可以写一个dp,g(s)表示关键点状态为s的最小权值,同样是枚举原创 2017-04-16 15:53:20 · 631 阅读 · 0 评论 -
[POJ3710]Christmas Game(博弈树的删边游戏)
题目描述传送门 题意:有 N个局部联通的图。 Harry 和 Sally轮流从图中删边,删去一条边后,不与根节点相连的部分将被移走。Sally为先手。图是通过从基础树中加一些边得到的。所有形成的环保证不共用边,且只与基础树有一个公共点。 谁无法移动谁输。 题解博弈论中典型的树的删边游戏,以及对环的处理方法。代码#include<iostream>#include<cstring>#原创 2016-12-22 18:54:16 · 1483 阅读 · 0 评论 -
[HDU3639]Hawk-and-Chicken(tarjan+dfs)
题目描述传送门 题意:求有最多的能到达它的点的点集,第一行输出最多的能到达它的点,第二行输出所有满足最大值的点集。题解首先Tarjan缩点,之后反向建图,可以知道拥有最大值的点一定在入度为0的点里。 那么可以从每个入度为0的点出发dfs。 刚开始想的是正向建图然后递推到它的儿子,发现貌似有些混乱,于是改姿势了。 而且这题还卡格式。代码#include<iostream>#include<c原创 2016-11-01 16:22:05 · 723 阅读 · 5 评论 -
[BZOJ2115][Wc2011] Xor(dfs+高斯消元求线性基+贪心)
题目描述传送门题解挺好的一道思路题… 首先一条路径一定可以分解成一条简单路径和若干环的异或值 只需要dfs一遍所有能dfs到的环,剩余的环都可以通过其它的环组合(异或)得到 而简单路径可以是任意一条,因为环不一定和简单路径只有一个公共点(画图…不过据说可以证明?) 所以,dfs出任意一条简单路径,再dfs出所有环(每一个点只访问一遍),问题转化为将若干环组合与简单路径的异或最大 对于环求线原创 2017-01-13 21:48:35 · 577 阅读 · 0 评论 -
[BZOJ1488][HNOI2009]图的同构(dfs+置换群+数论+组合数学)
题目描述传送门题解在完全图中选出一个简单图 相当于是将所有的边染成两种颜色 其余的就和BZOJ1815一样了代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define Mod 997#define N 65int原创 2017-02-23 21:25:41 · 1001 阅读 · 0 评论 -
[BZOJ1815][Shoi2006]color 有色图(dfs+置换群+数论+组合数学)
题目描述传送门题解代码#include#include#include#include#includeusing namespace std;#define LL long long#define N 65int n,now;int a[N],b[N],t[N][N];LL m,Mod,ans,mul[N],inv[N],mi[1800],c[N][N];原创 2017-02-23 21:22:57 · 1550 阅读 · 0 评论 -
[POJ1681]Painter's Problem(高斯消元+dfs)
题目描述传送门 题意:同POJ1222,如果有多解,输出修改点数最少的,如果无解,输出inf题解和POJ1222很类似,只需要再判断多解和无解的情况 如果出现自由元的话,就看它后面消出来的如果和b相等,那么就是有多解,如果和b不相等就是无解 因为要输出点数最少的,所以需要将所有的自由元的取值指数级暴搜一下 bitset传参不知道为什么老是炸掉,所以干脆回溯了…代码#include<algor原创 2017-01-12 11:34:26 · 490 阅读 · 0 评论 -
[BZOJ2466][中山市选2009]树(高斯消元+dfs)
题目描述传送门题解开关灯问题。。。代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<bitset>#include<cmath>using namespace std;#define N 105int n,x,y,now,Min;int tot,point[N],nxt[N原创 2017-03-03 17:39:16 · 478 阅读 · 0 评论 -
[HDU1814]Peaceful Commission(2-SAT)
题目描述传送门题解经典的2-SAT问题,要求输出字典序最小的解 首先贪心地选最小的,每一次选择将其影响的点都修改,然后判断是否合法代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 40005int n,m原创 2017-01-25 15:43:51 · 531 阅读 · 0 评论 -
CF#398(Div.2) 解题报告
A题意简述有n个大小为1..n的物品,每一天会得到一个,物品必须由下而上按照从大到小的顺序摆放 每一天会将已有的物品尽量摆放,问这n天的摆放方案数据范围1≤n≤1000001\le n\le 100000题解只有一个物品只有当比它大的所有物品都得到时才能摆放 模拟即可代码#include<algorithm>#include<iostream>#include<cstring>#inclu原创 2017-02-18 23:29:41 · 582 阅读 · 0 评论 -
[NOIP2004][CODEVS1064]虫食算(搜索||高斯消元)
要想让自己无可替代,你必须总是与众不同。原创 2016-09-22 11:22:51 · 855 阅读 · 0 评论 -
[BZOJ3643]Phi的反函数(数学相关+搜索)
后来我们终于不再纠结一些事情,比如那个人到底有没有爱过自己,为什么相爱却没有在一起。曾经那些日思夜想无数次的暗下决心却无法解决的问题,可能在人生的某一刻却突然就能放手了,并且毫无留恋。这大概就是所谓的机缘已到吧,前情旧爱纵是当下心头好,却终究抵不过世事的冲刷,时间的洗礼。——扶南原创 2016-10-06 16:40:22 · 747 阅读 · 1 评论 -
[CODEVS1288]埃及分数(迭代加深搜索)
题目描述传送门题解迭代加深?好厉害的名字。 我之前一直以为迭代加深是用上一次搜索的有用的信息来更新下一次搜索的值。不过看起来不是这样的。 关键是题目中要求:加数少的比加数多的好。也就是说,我们应该优先考虑加数少的,先搜加数少的。如果要是普通的搜索的话,相当于是乱搜,并不能保证是最优解。 难道这就是迭代加深搜? 可以发现如果当前的分数是aba\over b,如果想要将其分成xx个分子为1的分数原创 2016-11-15 11:24:32 · 1210 阅读 · 0 评论 -
[BZOJ3872][Poi2014]Ant colony(dfs+二分)
题目描述传送门题解因为每走一个节点就有可能会减少一部分的蚂蚁,我们可以dfs统计一下从当前节点走到食蚁兽呆的那条边就损失多少倍蚂蚁,也就是经过的各个节点的度数-1的乘积。可以发现如果这个答案>109>10^9的话是没有意义的,可以直接舍掉。得出了减少多少倍x之后,将m排序,由于m/x的值一定单调,在m上二分找出mi/x=k的区间左端点l和右端点r,即从这个叶子节点出发会有k*(r-l+1)个蚂蚁被吃原创 2016-11-01 23:29:09 · 602 阅读 · 0 评论 -
【BZOJ1085】【SCOI2005】骑士精神(A*暴搜)
干净的痛苦一定会沉淀,沉淀成悠闲,悠闲是痛苦的补偿,痛苦是悠闲的衬垫。原创 2016-03-09 20:04:02 · 1136 阅读 · 0 评论 -
[BZOJ3049][Usaco2013 Jan]Island Travels(dfs+spfa+状压dp)
最不洁的目光,总在监察道德。原创 2016-03-31 23:39:22 · 994 阅读 · 0 评论 -
【openjudge】拯救行动
描述公主被恶人抓走,被关押在牢房的某个地方。牢房用N*M (N, M 英勇的骑士(r)决定孤身一人去拯救公主(a)。我们假设拯救成功的表示是“骑士到达了公主所在的位置”。由于在通往公主所在位置的道路中可能遇到守卫,骑士一旦遇到守卫,必须杀死守卫才能继续前进。 现假设骑士可以向上、下、左、右四个方向移动,每移动一个位置需要1个单位时间,杀死一个守卫需要花费额外的1个单位时间。同时假设原创 2015-12-14 19:01:14 · 1112 阅读 · 0 评论 -
漫游小镇 解题报告
漫游小镇 一个正方形的镇区分为 N2 个小方块(1写一个程序,对于给出的 N 值,计算贝茜从农场走到集市有多少种唯一的路径。PROGRAMNAME: betsyINPUTFORMAT行 1: 一个整数N (1 SAMPLEINPUT (file betsy.in)3OUTPUTFORMAT只有一行。输出一个整数表示唯一路径的数量。原创 2015-08-14 10:20:51 · 2516 阅读 · 0 评论 -
零点问题 解题报告
别管最上面那一堆东西。。【解题思路】这道题用搜索不难想到。每一次只需要扩展状态,枚举每一个空位是' ','+','-'中的哪一个就行了,为了方便刚开始可以用123来表示;这样我们每一次可以生成一个合格的表达式,,然后就把表达式求值就可以了,求值的过程有点繁琐,但是难度并不大。【数据分析】范围是3~9暴搜没有问题。【代码】#include#include#include原创 2015-08-14 08:42:13 · 586 阅读 · 0 评论 -
迷宫问题 解题报告
迷宫问题【问题描述】设有一个N*N方格的迷宫,入口和出口分别在左上角和右上角。迷宫格子中分别放有0和1,0表示可通,1表示不能,迷宫走的规则:即从某点开始,有八个方向可走,前进方格中数字为0时表示可通过,为1时表示不可通过,要另找路径。入口和出口处肯定是0;编程找出从入口(左上角)到出口(右上角)的路径(不能重复),输出路径总数。如果不能到达,则输出0;【输入样例】30 0原创 2015-08-13 09:38:09 · 3651 阅读 · 4 评论