自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 KMP算法(next代码的理解)的理解

假设有模式串 b c b c b e a相对应有next[0] = -1next[1] = -1next[2] = 0next[3] = 1next[4] = 2next[5] = -1模式串下标标号从0开始当在下标i时发生不匹配,模式串下标回溯为next[i-1] + 1;被匹配串下标不发生变化需要注意的是,当寻找最长公共子串的下标范围为[0,i]时, 最长公共子串的前一串必须从0开始,后一串必须从i开始代码如下,理解和解释附在注释里next[0] = -1;//第一个字符不匹配

2021-03-19 20:12:25 170

原创 hdu2089不要62

hdu2089不要62中文题就不写题意了,也不是很难理解。主要用到的数位dp的方法,一种记忆化搜索的dp方法刚刚开始学还不是很熟悉这个模板,所以代码不是自己写的,等等我会再去写几遍,给了很多注释来帮助理解,希望能对你有帮助。# include <iostream># include <stdio.h># include <cstring># include <string>using namespace std;typedef long l

2021-02-09 22:07:06 87

转载 poj1328Radar Installation

poj1328Radar Installation原博文地址:https://blog.csdn.net/deepmindman/article/details/52278572思路一:1)将小岛从左到右编号1~n。2)访问第一个小岛,根据小岛坐标计算出雷达在海岸线上的坐标范围,取该区间的最右侧建立雷达。3) 继续访问下一座小岛,如果该小岛处于已经建立的雷达范围内,跳过。如果不在范围内,同2)建立新的雷达站。4)访问所有的小岛,结束。可以用以下测试样例判断:2 21 12 20 0C

2021-01-30 22:57:57 102

原创 hdu1018Big Number

hdu1018Big Number题意求某个数的阶乘是几位数。1.直接用1og10的积化和差公式,向下取整+1即可,不过会超时# include <stdio.h># include <math.h>int main() { int T; scanf("%d",&T); int num; while(T--) { scanf("%d",&num); float sum = 0;

2021-01-28 23:28:50 81

原创 poj1061Jungle Roads

poj1061Jungle Roads题意:就是求最小生成树所有边之和。是到最小生成树的水题,就是存图委实有点恶心。1.Kruskal Algorithm把所有边从小到大排序,在加入边的过程中,1.判断是否所有点已经进入树中,如果是,则停止。2.判断对应的点是否已经加入集合,如果是则不加入该点。最后计算边之和。# include <stdio.h># include <string.h># include <stdlib.h>const int maxn

2021-01-28 23:19:56 56

原创 hdu3826 Squarefree number

题目大意:给出一个2到10^6范围内的数,问它是否存在能开完全平方的因子。注释里思路已经给的很清楚了,就不再写了。题目里我用的质数筛法比较简单,看网上的题解大部分用的欧拉筛,我用的筛法的效率是没有欧拉筛高的,那是真正线性筛法。AC代码# include <stdio.h># include <string.h># include <math.h># define LL long longbool isPrime[1000000];/* 直接

2021-01-27 14:36:21 111

原创 bailianoj 4124海贼王之伟大航路

bailianoj 4124海贼王之伟大航路题目大意以第一个岛为起点,最后一个岛为终点。问从第一个岛到最后一个岛所需要的的最短时间是多少。其中岛i到岛i所需花费的时间为0,岛i岛到j的时间和岛j到岛i的时间不等。理解及做法总的思路还是搜索,因为题目N的取值最大为16,暴力做法需要14!,必定超时,所以需要用到记忆化搜索和状态压缩。也没啥好讲的了,具体见代码。AC代码# include <stdio.h># include <string.h># define MIN

2021-01-17 16:49:42 254 1

原创 LeetCode 1202交换字符串中的元素

1202交换字符串中的元素题目给你一个字符串 s,以及该字符串中的一些「索引对」数组 pairs,其中 pairs[i] = [a, b] 表示字符串中的两个索引(编号从 0 开始)。你可以 任意多次交换 在 pairs 中任意一对索引处的字符。返回在经过若干次交换后,s 可以变成的按字典序最小的字符串。示例 1:输入:s = “dcab”, pairs = [[0,3],[1,2]]输出:“bacd”解释:交换 s[0] 和 s[3], s = “bcad”交换 s[1] 和 s[2]

2021-01-14 19:29:28 129

原创 poj1020Anniversary Cake

POJ1020Anniversary Cake题意:给出一个方形蛋糕,预计将蛋糕分成若干个方形,问是否能保证正好分玩,且能够分出要求的完全蛋糕。能输出KHOOOOB! 不能则输出HUTUTU!理解及做法:因为不能保证随意分能得到完整的蛋糕,所以需要遍历所有可能的分法,就需要用到dfs(深搜),来寻找是否有解决方案。1、先分大的后分小的,提前分掉大部分面积,减少分法灵活性,提高效率。2、不用每个1×1的格子都标记,太慢了,这里把每行用了多少格子记录下来即可。3、每次搜索都优先寻找格子的多的行开始

2021-01-12 16:20:10 95

转载 poj1426Find The Multiple

poj1426Find The Multiple[本文转载自:](http://exp-blog.com)问题描述给出一个整数n (1 <= n <= 200)。求出任意一个它的倍数m,要求m必须只由十进制的 0 或 1 组成。解题思路首先暴力枚举肯定是不可能的 1000ms 想不超时都难,而且枚举还要解决大数问题。解题方法: BFS+同余模定理首先说说朴素的不剪枝搜索方法:我以 n=6 为例首先十进制数,开头第一个数字(最高位)一定不能为0,即最高位必为 1设6的 “0

2021-01-05 17:18:23 96

原创 poj3279Fliptile

poj3279Fliptile题目大意及理解大意就是心情愉悦能让奶牛产更多的奶,所以农民搞了个游戏给奶牛玩,奶牛需要把所有黑色朝上的格子变成白色(1代表黑色,0代表白色),因为奶牛的力气比较大,所以在翻动某一个格子时会同时翻转这个格子的邻接格子(上,下左, 右)问怎样翻动可以使奶牛所需翻动次数最少,把每个格子的翻动次数以矩阵的形式输出(只输出最少的)。如果全白时做不到的,输出IMPOSSIBLEM-行数,N-列数因为当第一行的翻动次数确定了,第一行的颜色也就确定了,所以第二行只需要翻动本

2021-01-05 15:59:03 159

原创 关于深搜广搜的理解

假设我们从S开始搜索,需要搜索到E.. 表示可通行#表示不可通行什么是深搜深搜一般用于整个图的遍历,它一般用于求多个解的情况,其过程简要来说是对每一个 可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次如上图所示,深搜会得到两条路径分别为向右向下和向下向右在向下。因为需要遍历得到所有解,深搜往往会比广搜需要花费更多的时间什么是广搜广搜一般是用于求图的最短路径,比如迷宫中走到某一点的最短距离,或者某个字符串交换达到目标字符串的最少次数,解的个数一般是为单一的,可以把搜.

2021-01-04 22:12:52 522

原创 poj3278Catch That Cow

poj3278Catch That Cow题目大意及理解农夫和奶牛在同一条坐标轴上,问农夫最少走几步可以到达奶牛所在的点(抓到奶牛)农夫每步有3种走法:1.往前走一步 2,往后退一步 3.当前坐标乘以2 ps:这题感觉不太能马上认出来是到广搜题目,然后在做的时候居然同时忘记设置搜索边界和存储是否搜索结果,导致卡了好久。。还有一个注意点:C++里面的this是指针需要用this->成员来调用成员,而Java直接代表类,只需要用this.成员 就可以。AC代码# include &l

2021-01-04 21:41:36 96

原创 poj2251Dungeon Master

poj2251Dungeon Master这是一道模板广搜题。题目大意 && 解题思路给出一个最大为30×30×30的迷宫,出发点为S,终点为E,问从S到E最快需要几步(几分钟)。因为题目问的是“最快”,所以用广搜的方法更符合题(最先找到时间最少的答案),考虑到30×30×30的格子比较少。我也试着写了深搜,不出所料超时了。下面附上代码(里面也有一些注释帮助理解~)AC代码# include <stdio.h># include <string.h>#

2021-01-04 11:11:13 141

原创 LeetCode-46 全排列

LeetCode-46 全排列原题目给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]题目大意如题。。题目分析这道题目可以用标准的深搜回溯来做。思路1.标准深搜回溯2.交换数值代码1.第一种方法。void backtrace(int *nums,int numsSize,int *returnSize,int **return

2020-07-04 22:43:37 91

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除