随笔分类 - DFS
摘要:链接Miku 数位dp,定义$dp_{i,j,k}$为到了第i位有j个零并且有k个前导零的方案数 #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #include<iostream> using names
阅读全文
摘要:题目链接Miku dfs每个点找环,但是要有一些特殊改造 标记每一个点需要在找完了之后标记 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<stack> using namespac
阅读全文
摘要:Miku 这道题样例错了!!! 正确解决方法 ⇒ 写一个搜索 ⇒ TLE ⇒进行记忆化改造 ⇒ Ac #include<iostream> #include<cstring> #include<algorithm> using namespace std; const int maxn =15; c
阅读全文
摘要:Miku 这个题目还是挺水得 正确解决方法 \(\Rightarrow\) 写一个搜索 \(\Rightarrow\) TLE $\Rightarrow$进行记忆化改造 \(\Rightarrow\) Ac 记忆化搜索和dp个人感觉有个区别就是记忆化是从下往上,dp是从上往下 #include<io
阅读全文
摘要:这就是一个博弈论 题目:Miku 这道题我们既可以找规律:如果N是三的倍数,C就赢了,并且我们也可以用SG函数 好,那么怎么用SG函数实现呢,首先确定边界。 如果当前人面前有0个石子,那么显然他输了对吧(最后一个一定被上个人拿走了) 那么SG[0]=0;(我用0表示当前人必败,1必胜0) 那么其他情
阅读全文
摘要:链接:Miku 位运算的好题 (对于位运算本蒟蒻来说太毒瘤了) 对于这题的数据范围,把八皇后的代码改一改是不够的,必须要用位运算 先上代码 #include<cstdio> #include<iostream> #include<cstdio> using namespace std; int n,
阅读全文
摘要:链接:Miku 这一个问题考虑为两种问题 1:剩下的砝码有什么情况? 2:能拼出多少种? 对于1:没有办法,只能爆搜所有情况 对于2:用一个改良的01背包就可以解决 #include<iostream> #include<cstdio> #include<cstring> using namespa
阅读全文
摘要:链接:Miku 这一道题只需要在倍增lca的板子上改一改就可以了。 宽度和深度可以在倍增lca的dfs预处理的时候判断一下就可以,至于最后问的两点之间的距离 首先需要求出两点公共祖先的位置,然后计算他们深度的差,并且按照题目要求分别处理即可 #include<iostream> #include<c
阅读全文
摘要:链接:Miku 一道很贴切的题目 这道题可以用各种修改后的图论算法等,不过单单是二分答案也是可以解决的。 检查一下对于每一个最大值,不走所有比此值大的路,看一下能不能走到终点即可 #include<iostream> #include<cstdio> #include<cstring> using
阅读全文
摘要:链接:Miku 一道很好的bfs,dfs混合练手题 这一道题看第一眼:愚蠢的bfs求最短路,有什么难的! 然后看见了一堆附加条件: 1 路径上的所有点的出边所指向的点都直接或间接与终点连通。 2 在满足条件11的情况下使路径最短 Ac 等等,与终点联通?难道我们要把每一个点dfs能不能行吗? 然而你
阅读全文
摘要:长时间不写代码了,从学校中抽身出来真的不容易啊 链接:Miku 这道题的思路就在于建反图,如果每一头牛都能到达的话,那么在反图上,这个点也一定能到达每一头牛。 那么我们的目的就明确了,找到所有能在反图上找到每一头牛的点。 #include<iostream> #include<cstdio> #in
阅读全文
摘要:不会dp的蒟蒻写dfs了 Miku 这道题完全可以用dfs做啊 不剪枝60,剪枝100 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int c[1001]; 6 int an
阅读全文
摘要:链接:P2919 一道非常暴力的搜索题 注意的是,我们要从高出往低处搜,所以要sort一边 然后没有什么值得成为绿题的部分了 绝对是恶评 题面有歧义,我们在搜索的时侯扩展的条件是<=,不是等于 #include <iostream> #include<cstdio> #include<algorit
阅读全文
摘要:链接:P1910 一看题目,这是道二维背包 然而暴力出奇迹啊 我就写了个dfs 然后TLE,吸了氧也TlE, 怎么办呢,剪枝!!1 思路:搜索,(我写的奇奇怪怪,题解都是搜索请不请第i个人,我写的是当还剩下 多少能力和钱(雾)) 这种写法实在太奇怪了,以至于还要剪枝,还有一个奇葩边界条件qwq。 就
阅读全文
摘要:链接:P1433 一道很水的搜索题,唯一的难点就是预处理,不过公式都写出来了也没什么难的 坑点还是有的,比如说有一个(两个点)的坐标都是一堆小数,就会wa掉 再也没什么难的了 #include<iostream> #include<cmath> #include<cstdio> #include<w
阅读全文
摘要:这是一道搜索水题 (都橙题了能不水吗) 链接:P1913 这道题只要搜索就行了。 边界条件?不用考虑的。 因为这是字符串,我们在搜索时要考虑风向(字母) 然而在边界上是个空字符,也不用搜。 至于vis,如果你是倒着搜索的,就是从无风点开始,也不用考虑(因为风向) 1 #include <iostre
阅读全文
摘要:链接:P1894 我觉得这道题如果去掉题面,就是一道蓝题了。 这道题还是裸的二分图匹配,用匈牙利算法就可以AC掉。 什么是匈牙利算法?匈牙利 代码几乎差不多,也不需要优化,读入比模板题还复杂点,(他们应该换一下颜色) 1 #include<iostream> 2 #include<cstring>
阅读全文
摘要:链接:P5017 看见了动态规划不会怎么办? 搜索,剪枝,记忆化! (cz就是巨啊) 记忆化搜索,搜索第i个人上车后的下一班车的出发时间 数组的二维是第i个人的等待时间。 Orzcz 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring
阅读全文
摘要:链接:P5018 这道题可以写暴力 暴力搜索,首先统计下每一个点的下属节点数,用来统计答案。 然后直接对称搜索就行 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 5 using namespace std; 6 int
阅读全文
摘要:链接:P3386 这道题要用到一个名为匈牙利算法的东西 匈牙利算法就是对于每一个点,(例如A)我们先从开始找一个点(例如B),如果他们相连,并且没有被拜访过(一个点一次只能被拜访一次),就让他们配对。然而,如果B已经和C配对了,就把C赶走,看看能不能找到一个D和C配对,如果有,就让C和D配对。让A和
阅读全文

浙公网安备 33010602011771号