自定义博客皮肤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] = -1 next[1] = -1 next[2] = 0 next[3] = 1 next[4] = 2 next[5] = -1 模式串下标标号从0开始 当在下标i时发生不匹配,模式串下标回溯为next[i-1] + 1; 被匹配串下标不发生变化 需要注意的是,当寻找最长公共子串的下标范围为[0,i]时, 最长公共子串的前一串必须从0开始,后一串必须从i开始 代码如下,理解和解释附在注释里 next[0] = -1;//第一个字符不匹配

2021-03-19 20:12:25 177

原创 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 90

转载 poj1328Radar Installation

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

2021-01-30 22:57:57 106

原创 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 84

原创 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 58

原创 hdu3826 Squarefree number

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

2021-01-27 14:36:21 116

原创 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 276 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 132

原创 poj1020Anniversary Cake

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

2021-01-12 16:20:10 96

转载 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 99

原创 poj3279Fliptile

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

2021-01-05 15:59:03 164

原创 关于深搜广搜的理解

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

2021-01-04 22:12:52 542

原创 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 97

原创 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 149

原创 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关注的人

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