算法学习
文章平均质量分 67
记录算法学习
绿毛水怪12138
这个作者很懒,什么都没留下…
展开
-
状态压缩+dfs+背包
状态压缩dp,dfs,0-1背包,完全背包原创 2022-05-02 23:23:58 · 341 阅读 · 0 评论 -
学习总结-12138
写在前这周是摆烂的一周。。。题目总结P1332 血色先锋队直接从瘟疫源头广搜,如果点没搜过就标记一下进队,如果搜过并且瘟疫到此点的时间大于这次到此点的时间进队。#include <bits/stdc++.h>#define eps 1e-15using namespace std;int a[505][505],visit[505][505],nx[4]={-1,1,0,0},ny[4]={0,0,-1,1};int main(){ int n,m,n1,n2,t1原创 2022-04-24 21:25:36 · 284 阅读 · 2 评论 -
深搜+回溯+广搜小结
深搜按照一定的顺序和规则,一直往深处走,直到走不通再返回,换一种路径重复上述步骤。深搜一般可以找到问题的所有答案,但问题规模较大时,会产生很多结果,时间复杂度就会较高。与广搜相比,深搜的空间复杂度会较低,因为深搜是深度优先,不需要像广搜那样存储大量状态。优化1、可行性剪枝和最优性剪枝2、记忆化搜索3、减少重复搜索问题练习P1451 求细胞数量深搜的入门题,求出连通块,把搜索过的地方做标记,记录连通块数量即可#include <bits/stdc++.h>#define ep原创 2022-04-19 10:47:03 · 1355 阅读 · 1 评论 -
二分答案算法
P1182 数列分段 Section II一开始想的是每次把最大的数列段分成两段,很遗憾思路不正确。然后看了题解,dalao们用的都是二分答案来写的。答案:即题目的答案的所有可能取值,对这个题来说答案最小值就是整个数列的最大值,答案的最大值就是整个数列二分:是一种减少时间复杂度的方法,每次舍弃一半不符合要求的答案。直接从答案最小值遍历到最大值也是可以的,只是会TLE~~。感觉这是一种很模板化的方法,只需要找出答案的可能的取值,判断即可。//注释的代码是最开始的想法#include <bit原创 2022-04-11 22:19:01 · 192 阅读 · 0 评论 -
贪心学习小结-12138
贪心贪心算法所做的选择可以依赖于之前所做的选择,但绝不依赖未来的选择。贪心必须对每个子问题的解都做当前最好的选择,而不关心未来的选择;动态规划则会根据之前的结果对当前进行选择。贪心是自顶向下的方式进行。贪心策略的确定:1、根据经验2、根据结果回推前几步,用数学归纳法找出贪心策略 添加链接描述题目小结混合牛奶就是一个贪心背包问题,先买奶便宜量大的,排序即可#include <bits/stdc++.h>#define eps 1e-15using namespace std;原创 2022-04-11 22:04:54 · 3303 阅读 · 0 评论 -
动态规划学习小结-12138
线性动态规划最长单调递增子序列题意:对于给定的一个序列(a1, a2, …, aN),我们可以得到一些上升的子序列(ai1, ai2, …, aiK),这里1 <= i1 < i2 < … < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是4,比如子序列(1, 3, 5, 8).#include <bits/stdc++.h>#define e原创 2022-04-02 22:20:54 · 279 阅读 · 0 评论 -
ZOJ1149 Dividing
Marsha and Bill own a collection of marbles. They want to split the collection among themselves so that both receive an equal share of the marbles. This would be easy if all the marbles had the same value, because then they could just split the collection原创 2022-04-02 21:33:34 · 508 阅读 · 0 评论 -
p2196 挖地雷
题目描述在一个地图上有NN个地窖(N \le 20)(N≤20),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径。当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,然后可以沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使某人能挖到最多的地雷。输入格式有若干行。第1行只有一个数字,表示地窖的个数N。第2行有N个数,分别表示每个地窖中的地雷个数。第3行至第N+1N+1行表示地窖之间的连接情况:第3行有n−1个数(0或1),表示第一个地原创 2022-04-02 21:13:05 · 146 阅读 · 0 评论 -
p1434 滑雪
题目描述Michael 喜欢滑雪。这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael 想知道在一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子:1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9一个人可以从某个点滑向上下左右相邻四个点之一,当且原创 2022-04-02 21:06:54 · 92 阅读 · 0 评论 -
P1020 导弹拦截
注:本题只写了o(n2)的时间复杂度题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是\le 50000≤50000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。输入格式1行,若干个原创 2022-04-02 20:58:02 · 92 阅读 · 0 评论