
搜索
AndrewMe8211
no more threads
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
noip2017 Day2 T1——cheese
说一道题水,要么是它真的水,要么是你还没有用代码实现过它----Jerry 题目: 分析: 把其抽象为一个图,则这个图起点应该是那个可能存在的与h=0平面有交点的点,终点应该就是那个可能存在的和奶酪上表面有相交的那个点。于是,方式一的思路就是,建图+染色爆搜 但其实我们发现,如果我们知道所有与上表面相交的圆的标号和与下表面相交的圆的标号,那么我们只需要判断这两种圆是否存在相连关系即可。涉及...原创 2019-01-22 16:05:31 · 281 阅读 · 2 评论 -
【noip 2015 Day1 T3】luogu P2668 斗地主
分析 深搜即可,只是注意几个坑点: 四带二可以带两张单牌也可以带两对牌 顺子都不包括大小王和2 X带Y可以带大小王和二(由于是任意牌嘛) 输入大小王时是:0 1或0 2(中间有空格!不知道某谷的数据为什么还不改) 反正我没有用贪心的策略,直接枚举的每种情况,最后加个最优性剪枝就过了 (构码半小时,调试一下午 lmao) code #include<bits/stdc++.h> u...原创 2019-02-22 08:57:36 · 192 阅读 · 0 评论 -
luogu P1144 最短路计数
分析 在无权图中,bfs便可以代替spfa 从1开始bfs,第一次访问到某个节点时走的路径便是1到此节点的最短路,此时累加方案数 第n(n>1)次访问到某个节点且此时走的是最短路时,累加方案即可 code #include<bits/stdc++.h> using namespace std; #define loop(i,start,end) for(register int...原创 2019-02-17 16:18:15 · 161 阅读 · 0 评论 -
luogu P3956 棋盘
analysis dfs,记得剪枝,记忆化 code #include<bits/stdc++.h> using namespace std; #define loop(i,start,end) for(register int i=start;i<=end;++i) #define clean(arry,num) memset(arry,num,sizeof(arry)) #...原创 2019-05-11 15:53:03 · 126 阅读 · 0 评论 -
luogu P1118 [USACO06FEB]数字三角形`Backward Digit Su`…
analysis 开始用了一个全排列的算法,n=12算下来会爆炸,于是就用了一个函数来求中间的数列的值来可行性剪枝,函数n^2,结果剪了枝还是没什么用 后面推了下公式,发现对于4个数a,b,c,d来说,最后的N=a+3b+3c+d,对于5个数a,b,c,d,e来说,最后的N=a+4b+6c+4d+e,这个时候隐隐约约觉得数的位置和其系数之间有关系,若可以通过位数来确定其系数的话就不用N^2求和了...原创 2019-05-11 18:04:27 · 266 阅读 · 0 评论 -
luogu P1074 靶形数独
analysis 搜索,思路很好想,只是要考虑如何优化:从0个数少的行开始搜索(但我没有这样搞,所以吸了点氧) 蒟蒻现在遇到的各种搜索优化大概可以分为一下几类: 一般的优化: 记忆化 剪枝(最优化剪枝,可行性剪枝) 比较不一般的优化 搜索次序上优化,降低dfs树的高度 某些难以名状的优化 code // luogu-judger-enable-o2 #include<bit...原创 2019-06-02 16:16:15 · 189 阅读 · 0 评论 -
luogu P4011 孤岛营救问题 #10073. 「一本通 3.2 例 2」拯救大兵瑞恩
analysis 分层图最短路+01BFS 这里不需要建图,图在心中 code #include<bits/stdc++.h> using namespace std; #define loop(i,start,end) for(register int i=start;i<=end;++i) #define clean(arry,num) memset(arry,num,si...原创 2019-08-23 18:02:33 · 398 阅读 · 0 评论 -
luogu P1120 小木棍 [数据加强版]
analysis 想到搜索,搜索每一根木棒被哪些木棍填满,可以枚举答案然后dfs 于是可以列举出问题状态空间的维度: 当前已经填满的木棒数 正在填的木棒已经填到了的长度 考虑剪枝(不剪的话复杂度最坏O(n∗50∗k),k∈(?,n!]O(n*50*k),k\in(?,n!]O(n∗50∗k),k∈(?,n!]) 优化搜索顺序 本题枚举木棍的时候可以从大到小枚举 排除等效冗余 限...原创 2019-08-21 19:28:09 · 446 阅读 · 0 评论 -
luogu P1731 [NOI1999]生日蛋糕
analysis 搜索 基本框架 显然搜索每一层的h和r即可 关于hi和ri的范围,有如下推导: 根据圆柱体积公式: Vnow=πr2hV_{now}=\pi r^2hVnow=πr2h 极端情况下,高为1 于是Vnow=πr2V_{now}=\pi r^2Vnow=πr2 按照题意约掉π\piπ得到r=Vnow=N−vnowr=\sqrt{V_{now}}=\sqrt{N-v_{now}}...原创 2019-08-21 20:11:10 · 211 阅读 · 0 评论 -
【dfs】Luogu P1092 虫食算
题面 分析 这道题自从学习到搜索之日以来一直是我心中的一颗毒瘤 什么高斯消元,蒟蒻不会,免谈。。。 搜索嘛,枚举对象无非就是每个字母代表的数字 而枚举的顺序有大概两种:1.按照算式从右上向左下枚举 2.按照字母在字母表中顺序依次枚举 蒟蒻表示驾驭不了第一种,情况比较多,但是打出来后比较好剪枝 第二种其实类似于全排列,只是每次生成的序列需要用题中所给算式来验证是否合法罢了,所以比较好打,但剪枝有点...原创 2019-02-04 13:52:57 · 253 阅读 · 0 评论 -
【BFS】Luogu P1141 01迷宫
题面原创 2019-02-02 10:09:39 · 207 阅读 · 0 评论 -
mzoj P1344 工作依赖
题面 题目描述(Description): 2008年,奥运会将在中国举行。众所周知举办奥运会是一个庞大的工程,有许多准备工作要做,而这些工作也是要分先后、存在依赖关系的。比如我们说工作2依赖于工作1,意思是说在工作2开始做之前要必须结束工作1。我们假设,在一个时刻只有一个工作在进行,而且每样工作所依赖的其它工作不会超过10个。 输入文件(job.in): 第一行有两个整数N(0&amp;amp;lt;=N...原创 2019-01-24 18:30:51 · 225 阅读 · 0 评论 -
【宽搜】mzoj 1345 英雄 hero
题面 题目描述(Description): 城堡迷宫由N×M个格子组成,英雄Mario玛丽奥要在城堡迷宫中从起始点移动到目标点去拯救被怪物掳去的公主,他每一步只能从当前所在的格子移动到相邻的4个格子之一,而且不能移出城堡的范围,走一步需要1秒的时间。 城堡中某些格子里面有弹簧,每个弹簧具有特定的能量K,不同弹簧的K值不一定相同。如果Mario跳到一个有弹簧的格子,他就会继续向前跳K个格子或者被墙所...原创 2019-01-24 20:19:18 · 364 阅读 · 0 评论 -
noip 2000 Day2 T6 方格取数
题面 分析 学过网络流的同志都不难看出,本题可以用网络流,将有数的方格看作点,根据位置关系(只能往右下走)来建图,然后跑两遍最大流,每跑一次就更新权值即可 (代码?太懒难得写) 当然本题还可以用搜索,从起点开始dfs,遇到点就更新权值且累加ans,回溯时就把权值放回去就好,每次到终点时维护一下maxx和maxxx(第一大和第二大) (还没写过这种,只是有个思路) 我其实做这道题是想练一下动归(蒟蒻...原创 2019-01-24 21:51:54 · 258 阅读 · 0 评论 -
【广搜】[USACO08FEB]流星雨Meteor Shower
题面 传送门 分析 水题 搜索的水题 可以深搜也可以宽搜 但无论你怎么搜,都要先预处理一下图,将流星砸下的时间放在图上,然后拓展状态的时候判断即可 code #include<bits/stdc++.h> using namespace std; #define loop(i,start,end) for(int i=start;i<=end;i++) #define clea...原创 2019-01-25 08:55:50 · 281 阅读 · 1 评论 -
【迭代加深】vijos P1159 打水
题面 好吧我承认与原题有点不一样,但不影响理解 分析 不能用全排列 本题用迭代加深 迭代dep,即选择桶的种类个数 每规定一个dep,跑一边dfs,当dfs中找到一个解时,用完全背包来判断解是否合法 而第一个合法的解一定满足字典序最小 code #include&amp;lt;bits/stdc++.h&amp;gt; using namespace std; #define loop(i,start,end)...原创 2019-01-25 11:52:20 · 280 阅读 · 0 评论 -
Luogu P1189 `SEARCH`
题面 几组 data 1.in 4 5 ..... .X... ...*X X.X.. 3 NORTH WEST SOUTH 1.out ..... *X*.. *.*.X X.X.. 2.in 5 5 ..... ..... ..... ..... ....* 3 2.out 5 5 ****. ****. ****. ..... ..... 3 3.in 5 4...原创 2019-01-25 17:29:52 · 416 阅读 · 1 评论 -
noip 2002 普及组 T4 过河卒
题面 分析 乍一看,水题!深搜秒掉!好的,最多最多60pts lol 为什么呢?说明中说:结果可能很大! dfs只有走向爆栈 正解是DP 由于兵只可以向上或右走,于是设f[x][y]是位置为(x,y)的点到点(n,m)的所有路径,据加法原理有 f[x][y]=f[x−1][y]+f[x][y−1]f[x][y]=f[x-1][y]+f[x][y-1]f[x][y]=f[x−1][y]+f[x][...原创 2019-01-25 20:09:06 · 446 阅读 · 0 评论 -
[SCOI2007]排列 luogu P4163
题面 分析 蒟蒻真的真的不会搞如此高级的状压啊啊啊啊啊啊啊 于是一发爆搜打了50分 如果要打爆搜的话,要注意判重的问题 若是 000 的话,它的全排列(不管第一个1和第二个1是一样的)有6种,但实际这些都是重复的 于是我开了一个一亿的vis数组,(没怎么考虑空间开销),幸好没爆 但判重其实可以用一个比较巧妙的数学方法(正解也是这样),一开始统计每一个数出现的次数cnt[i],然后把结果依次除掉...原创 2019-01-26 12:03:08 · 297 阅读 · 0 评论 -
POJ2676/3074 Sudoku
analysis 题目意思就是以各种方式给你一个9x9的数独让你填 然后数据是各种鬼畜 这个时候考虑一个很简单的搜索框架:就是找一个位置的可能数,然后暴力的dfs 然后考虑剪枝和优化: 想要优化这个算法,想了一个策略:找可选的数最少的一个 但是如何统计可选的数呢,用数组?统计一次就O(n)未必太慢了,用状态压缩的方法就可以,因为这里的数据范围是这样的小 我们可以用状态压缩表示每行每列每个九宫格的...原创 2019-08-22 11:01:04 · 200 阅读 · 0 评论