自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

thoughtspark的博客

重在思考!

  • 博客(212)
  • 收藏
  • 关注

原创 扩展kmp入门---扩展kmp

最头痛这个算法了 加上kmp 都学习了接近一个星期都不会 现在勉勉强强可以将模板打出来  辛苦辛苦,虽然菜,但还是要学会的。过程:http://blog.csdn.net/Littlewhite520/article/details/77427017图片参考博客 :https://www.61mon.com/index.php/archives/186/这个是求解next数

2017-08-27 13:38:02 325

转载 ACM 进阶

ACM进阶计划 ACM队不是为了一场比赛而存在的,为的是队员的整体提高。 大学期间,ACM队队员必须要学好的课程有: lC/C++两种语言 l高等数学 l线性代数 l数据结构 l离散数学 l数据库原理 l操作系统原理 l计算机组成原理 l人工智能 l编译原理 l算法设计与分析 除此之外,我希望你们能掌握一些其它的知识,因为知识都是相互联系,触

2017-08-26 21:50:38 361

原创 mancher入门-- mancher模板+解释

一:背景  给定一个字符串,求出其最长回文子串。例如:  (1)s="abcd",最长回文长度为 1;  (2)s="ababa",最长回文长度为 5;  (3)s="abccb",最长回文长度为 4,即 bccb。  以上问题的传统思路大概是,遍历每一个字符,以该字符为中点向两边查找。其时间复杂度为$O(n^2)$,很不高效。而在1975年,一个叫Manacher的人发明

2017-08-25 09:26:38 456

原创 kmp入门--kmp c++实现

#include#include#includeusing namespace std;const int N=1100;char s1[N+N],s2[N];int next[N];/*void get_next(string t,int *next){ int k=-1,j=0; next[0]=-1; while(t[j]!='\0') // ababa

2017-08-22 23:41:21 526

原创 搜索入门--hd 1241 搜索模板

Oil DepositsTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 33493    Accepted Submission(s): 19462Problem DescriptionThe GeoSu

2017-08-20 20:02:50 262

原创 并查集入门--知识点 畅通工程

概括所有知识点的代码: > 2.并查集算法以及路径压缩[置顶] 并查集详解 (转) 来自http://blog.csdn.net/dellaserss/article/details/7724401>  【转】并查集算法和路径压缩 jiang'lianint pre[1000 ];int find(intx)

2017-08-20 11:27:53 204

原创 最小生成树 klskr 模板题 hd 1863

#include#include#includeusing namespace std;int pre[110],n,m,i;init(){ for(int i=1;i<=m;i++) pre[i]=i;}struct act{ int a,b,x;}s[110];bool cmp(act a,act b){ return a.x<b.x;}int find(i

2017-08-20 10:47:18 285

原创 poj1258 prime最短路模板

#include#include#includeconst int N=500;using namespace std;int map[N][N],a[120],n,k,i,j,z,vis[120];; //矩阵int main(){ while(cin>>n){ int sum=0; memset(a,0,sizeof(a)); memset(map,0,sizeof

2017-08-18 18:09:21 292

转载 优先队列的详解与使用

1.优先队列堆的元素个数为N,高度不超过logN+1节点N的父节点在N/2初,左节点在N*2处右节点在N*2+1处。常用代码:#include#include#includeusing namespace std; struct cmp1{booloperator ()(int &a,int &b){returna>b;}

2017-08-11 18:00:50 622

原创 set+ vector的详解及用法

Set 的用法总结://红黑树 详解http://baike.baidu.com/link?url=0zBbWm6OF6wzF3h5r4phemUm_Cg9Tz0ikYjLE-YsgH6TAOQi8tSfZR1DIL3P-2n4UbdcHj7h-ADXWb0Yks_98bs8elh4QQxsm_0aWhaDQdHsYEnH71bwGSa3FpJmmQfj //=============

2017-08-11 11:35:03 5425

原创 为什么要懂大数据?

众所周知,现如今的it行业人越来越多,那么他们编程都是为了什么?通俗来将,软件编程技术的核心价值还是为了实现:将现实世界上的业务操作搬到计算机上,通过计算机软件和网络进行业务和数据处理。 但是到如今,可以通过计算机软件改善效率的地方,几乎都被挖掘了,软件已经成为人们的生活必备品,那么在这种情况下还想让软件能够成百成千倍的提高我们的生活和工作效率,那么以往的那套“通过分析用户需求和业务场景,进行软件设计和开发”显然是不太可行了。 因此,如何走出这个局势呢?如果想继续提高我们的生活效率,那么必须能.

2021-04-06 21:21:51 139

原创 历届试题 波动数列 递归实现

问题描述   观察这个数列:   1 3 0 2 -1 1 -2 …  这个数列中后一项总是比前一项增加2或者减少3。  栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增加a或者减少b的整数数列可能有多少种呢? 输入格式   输入的第一行包含四个整数 n s a b,含义如前面说述。 输出格式   输出一行,包含一个整数,表示满足条件的方案数。由于这个数很大,

2018-03-09 00:22:16 516 1

转载 蓝桥杯算法训练——最大最小公倍数(贪心)

题目:http://lx.lanqiao.org/problem.page?gpid=T11 题意:给出N,让你求在N个数中三个数的最大的最小公倍数。 输入:N 输出:最大最小公倍数 算法:找出三个互质的最大数,直接相乘就得到了最大的最小公倍数。虽然是求最小公倍数,但是并没有用到欧几里得 判断两个数是否互质的方法(几种常见的): (一些数的规律和带特殊属性的数都是常考的内容...

2018-02-21 12:22:31 1599 1

转载 stringstream的使用

不论是在什么语言下编程(除C,因为C是没有string类型的),int与string数据类型之间的转换都是经常被使用的基础内容。Java中会有丰富强大的类库供程序员们方便使用,而C++就没有类似的库函数了。下面只说说我自己对C++中int与string类型转换的简单总结,日后在编程中发现更好的方法还会进行补充哒~int转string1.使用头文件[c

2017-12-17 20:42:46 367

原创 poj 多项式加法 map

POJ 多项式加法原创2016年07月12日 22:47:59 标签: poj729 总时间限制: 1000ms 内存限制: 5000kB描述我们经常遇到两多项式相加的情况,在这里,我们就需要用程序来模拟实现把两个多项式相加到一起。 首先,我们会有两个多项式,每个多项式是独立的一行,每个多项

2017-12-14 18:19:50 549

原创 vector实现约瑟夫

/*1. 读入优化 的 初识、约瑟夫实现 vector模拟实现过程: 先将每个元素放入 容器中 push_back(); for遍历将 n-1 个元素 在容器中删除 第t个元素 a.erase(a.begin()+t); 最后容器中的最后一个元素就是活下来的人*/#include#include#include#include#i

2017-12-14 15:06:29 524

原创 P1256 显示图像 【队列维护bfs】

题目描述 古老的显示屏是由N×M个像素(Pixel)点组成的。一个像素点的位置是根据所在行数和列数决定的。例如P(2,1)表示第2行第1列的像素点。那时候,屏幕只能显示黑与白两种颜色,人们用二进制0和1来表示。0表示黑色,1表示白色。当计算机发出一个指令:P(x,y)=1,则屏幕上的第x行第y列的阴极射线管就开始工作,使该像素点显示白色,若P(x,y)=0,则对应位置的阴极射线管不工作,像素点保持

2017-12-05 20:26:15 291

原创 搜索题型总结

搜索分为dfs(深度优先搜索)和bfs(广度优先搜索)。 简单的爆搜: 适用于数据比较小或是访问数很少的情况,一般是初学者最开始接触的。 剪枝搜索: 一般的爆搜不可行(TLE),在爆搜的基础上进行适当剪枝,有些题目需要强剪枝。这种题目难就难在如何剪枝,而不在搜的过程。一般会设置一个 限制作为预估的条件,事先打表或排序都是可采用的方式,不过最好的剪枝还是视题目的特殊性而定(说白了就是有一点贪心的

2017-12-04 13:49:07 365

原创 p1255 【高精度 string实现】

string 处理高精度#include<iostream>#include<stdio.h>#include<string>#include<string.h>#include<algorithm>#include<queue>#include<stack>#include<map>#include<cmath>#include<iomanip>using namespace

2017-11-23 15:24:11 298

原创 I Hate It【线段树 最值】

I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 86070 Accepted Submission(s): 33036Problem Description 很多学校流行一种比较的习惯。老师们很喜欢询问,从某

2017-11-23 13:46:20 215

原创 最大最小值【线段树 c】

时间限制:1000 ms | 内存限制:65535 KB 难度:2描述 给出N个整数,执行M次询问。 对于每次询问,首先输入三个整数C、L、R: 如果C等于1,输出第L个数到第R个数之间的最小值; 如果C等于2,输出第L个数到第R个数之间的最大值; 如果C等于3,输出第L个数到第R个数之间的最小值与最大值的和。 (包括第L个数和第R个数)。输入 首先输

2017-11-23 13:42:48 470

转载 操作系统及其发展过程

摘要 操作系统(Operating System,OS)是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充,他在计算机系统中占据了特别重要的地位,而其他程序,如汇编程序,编译程序,数据库管理系统等系统软件,以及大量应用软件,都将依赖于操作系统的支持,获取他的服务。现今社会,操作系统发展迅速,涉及大型计算机,个人计算机,移动便携设备,其他自动化设备等各个领域,并且成为现代计算机系统等的重要配置系

2017-11-22 18:31:18 1097

原创 F.巴啦啦能量 【尺取法】

F.巴啦啦能量 Time Limit: 2500 MS Memory Limit: 256000 K Total Submit: 70 (24 users) Total Accepted: 9 (9 users) Special Judge: No Description 话说上回涂山小八进入“时空之门”,却不是回到现实世界,而是一间方正小屋。随着时空之门缓缓关上,小八才看清墙上

2017-11-20 18:48:16 520

原创 dp之背包总结篇

前言:背包问题在dp中可以说是经典,作为一个acmer,到现在才正式学习dp,可以说是比较失败的。我个人比较认同一点,想要做一个比较成功的acmer,dp、搜索、数学必须精练,比较遗憾的是,对我我自身而言,并没有早早的认识到这个问题,不过现在知道了,还有一年,也不算晚。还有,我建议学背包的童鞋,都看背包九讲…… dp之01背包 01背包,做为背包中最基础的一类背包,必须要掌握好,当然我这里说的掌

2017-11-12 23:39:44 371

原创 大数加法 以及 大数减法的思路

大数加法代码 注释 如下:#include<iostream>#include<ctype.h>#include<cstdio>#include<algorithm>using namespace std;#include<cstring>#include<string.h>char A[10005],B[10005],res[10005];int cmp(char *a,char *

2017-11-12 23:25:07 1232

原创 背包入门--多重背包 hd 2079

选课时间(题目已修改,注意读题) Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5160 Accepted Submission(s): 3970Problem Description 又到了选课的时间了,xhd看着选课表发呆

2017-11-12 17:02:35 199

原创 lower_bound upper_bound 【 二分函数的使用】

lower_bound(first,last,val)表示找到第一个>=val的值的地址 upper_bound(first,last,val)表示找到第一个>val的值的地址int pos=lower_bound(a,a+n,1)-a; 就是等于1的第一个下标 int pos=lower_bound(a,a+n,1)-a; 就是大于1的第一个下标

2017-11-11 17:19:45 344

原创 luogu P1101 单词方阵【dfs】

题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词。单词在方阵中是沿着同一方向连续摆放的。摆放可沿着8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间[color=red]可以[/color]交叉,因此有可能共用字母。输出时,将不是单词的字母用“*”代替,以突出显示单词。例如: 输入: 8 输出: qyiz

2017-11-08 20:49:01 242

原创 51nod 1416 两点 【dfs+特殊判断】

题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 福克斯在玩一款手机解迷游戏,这个游戏叫做”两点”。基础级别的时候是在一个n×m单元上玩的。像这样:  每一个单元有包含一个有色点。我们将用不同的大写字母来表示不同的颜色。 这个游戏的关键是要找出一个包含同一颜色的环。看上图中4个蓝点,形成了一个环。一般的

2017-11-08 20:30:42 242

原创 luogu P1443 马的遍历 【队列 dfs】

题目描述 有一个n*m的棋盘(1//这是一个简单的dfs做的#include<iostream>#include<string.h>//memset要用到#include<queue> #include<iomanip>//setw要用到 using namespace std;bool vis[500][500]; //是否走过 int map[500][500]; //存步数i

2017-11-08 20:26:52 516

原创 luogu P1141 01迷宫【dfs记忆化】

题目描述 有一个仅由数字0与1组成的n×n格迷宫。若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样若你位于一格1上,那么你可以移动到相邻4格中的某一格0上。 你的任务是:对于给定的迷宫,询问从某一格开始能移动到多少个格子(包含自身)。 输入输出格式 输入格式:输入的第1行为两个正整数n,m。 下面n行,每行n个字符,字符只可能是0或者1,字符之间没有空格。 接下来m行,每行

2017-11-07 22:55:13 231

原创 string find的用法详解

/*string find()的使用 #include<iostream>#include<string>using namespace std;int main(){ string st1=("babbabab"); //从前面找a的位置 cout<<st1.find('a')<<" "; cout<<"输出第一个a的下标 (从0开始) "<

2017-11-06 17:55:44 19756

原创 51nod 1126 求递推序列的第N项【矩阵快速幂】

#include<iostream>#include<string.h>using namespace std;const int mod=7;typedef struct node{ long long a[2][2]; void init(){ //初始化单位矩阵 memset(a,0,sizeof(a)); for(int i=0;i<

2017-11-05 14:19:08 199

原创 51nod 1035 最长的循环节【模拟除法】

#include<iostream>#include<string.h>using namespace std;int d[1000000];int fun(int x){ //模拟除法 一点一点的除 直到 一个数出现两次 或者除尽 就结束 返回其长度 int k=1,l=1; memset(d,0,sizeof(d)); while(1){ k*

2017-11-05 14:11:43 259

原创 51nod 1414 冰雕

用暴力枚举 一个一个加#include<stdio.h>int a[1000010];int main(){ int n; scanf("%d",&n); int sum=0; for(int i=1;i<=n;i++){scanf("%d",&a[i]),sum+=a[i];} int ma=sum; int sum1=0; for(in

2017-11-05 14:10:19 153

原创 51nod 1014 X^2 Mod P【暴力】

#include#include#includeusing namespace std;int m[100000];int main(){ int p,a; cin>>p>>a; int flag=0; int k=0; for(long long i=1;i<=p;i++) if(i*i%p==a){flag=1; m[k++]=i;} if(!flag) cou

2017-10-22 20:48:41 379

原创 51nod 1163 最高的奖励 【贪心 ,并查集】

并查集做法:#include#include#includeusing namespace std;#define N 50005long long f[N];pair m[N]; //作为结构体的作用 第一个为first 第二个为 second 按frist排序 小到大 int find(int x){ if(x<=0) return -1; //这是边

2017-10-22 20:47:33 206

原创 51nod 1396 还是01串 【思维题】

先记录所有1的个数,然后通过,对每一个0的,判断是否和后面的1相等即可#include#include#includeusing namespace std;char a[10000010];int main(){ gets(a); int s=0; //s为1的 个数 int sum=0; for(int i=0;i<strlen(a);i++) if(a[i]=='1'

2017-10-22 20:45:40 161

原创 51nod 1268 和为K的组合 【dfs or dp】

dfs做法这个dfs写的不错 开始我写的运行结果是错的,这个是某一个大神的,代码很短 ,而且很精炼,值得学习#include<iostream>#include<stdio.h>#include<string>#include<string.h>using namespace std;int flag=0,n;long long a[30];long long m;void df

2017-10-22 20:41:15 228

原创 51nod 1096 距离之和最小 【思维题】

这道题原本理解错了 其实是在给定的数中 找到一个点,并且该点到其他点的距离最小因此这样就简单了 排个序, 找到中间点 然后与其他点的距离加在一起 即可#include<iostream>#include<algorithm>#include<cmath>using namespace std;int main(){ long long n,m[10005],sum=0;;

2017-10-22 20:37:24 231

空空如也

空空如也

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

TA关注的人

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