算法
努力的气球
这个作者很懒,什么都没留下…
展开
-
程序设计初步ppt和训练题
本次的内容是依学校校队的安排,给学弟学妹们讲解程序设计初步的ppt,因为偏基础,只是讲的话效果不是很好,因此在VJ上挂了一套题,感兴趣的同学可以到VJ上自己做着玩。链接如下: https://vjudge.net/contest/355440PPT的下载地址:https://download.csdn.net/download/zhiyeegao/12136528PPT如下:...原创 2020-02-05 11:43:07 · 4810 阅读 · 0 评论 -
KMP算法最浅显理解——一看就明白
版权声明:转载标明出处,点一个顶即可:) https://blog.csdn.net/starstar1992/article/details/54913261说明KMP算法看懂了觉得特别简单,思路很简单,看不懂之前,查各种资料,看的稀里糊涂,即使网上最简单的解释,依然看的稀里糊涂。我花了半天时间,争取用最短的篇幅大致搞明白这玩意到底是啥。这里不扯概念,只讲算法过程和代码理解:KM...转载 2018-09-03 21:56:03 · 7390 阅读 · 0 评论 -
最小生成树-prime算法
Prime算法的核心步骤是:在带权连通图中V是包含所有顶点的集合, U已经在最小生成树中的节点,从图中任意某一顶点v开始,此时集合U={v},重复执行下述操作:在所有u∈U,w∈V-U的边(u,w)∈E中找到一条权值最小的边,将(u,w)这条边加入到已找到边的集合,并且将点w加入到集合U中,当U=V时,就找到了这颗最小生成树。 其实,算法的核心步骤就是:在所有u∈U,w∈V-U的边(...转载 2018-09-05 19:49:23 · 6065 阅读 · 0 评论 -
二进制、八进制、十进制、十六进制的相互转换(简单易懂)
1.十进制 想要转换为 n进制: 整数部分不停地除以n,直到商为0即可,记录下每次的余数,从最后一个余数开始排列即可。 小数部分不停地乘以n,每次乘完后把个位数的数字记录后再变为0,再进行下一次乘法运算,直到小数部分为0即可,记录下每次乘 法结束后个位数的数字为多少,从第一个数字开始排列即可。2.n进制转换为十进制: n进制上的每一个数字乘以位权再把它们全部加起来。(如果不懂...原创 2018-08-30 21:03:17 · 25469 阅读 · 2 评论 -
STL中常用函数
vector(不定长数组/向量):#include <vector>vector<int> vec;vector[0];//使用下标访问元素;vec.front();//取vec中的第一个元素;vec.back();//取vec中的最末一个元素;vec.push_back(x);//在向量末尾加入元素x;vec.pop_back();//删除末...原创 2018-08-27 20:39:05 · 9932 阅读 · 0 评论 -
【大爱】C++STL 常用 函数 用法(转载自duoduo3_69)
迭代器(iterator) 个人理解就是把所有和迭代有关的东西给抽象出来的,不管是数组的下标,指针,for里面的、list里面的、vector里面的,抽象一下变成了iterator 1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 int ...转载 2018-08-27 20:34:32 · 5710 阅读 · 0 评论 -
STL容器和算法
容器即物之所在。容器是STL的核心部件之一,是迭代器的依附,是算法作用的目标。STL中的容器可分为顺序容器(Sequence Container)和关联容器(Associative Container)。容器适配器(Container Adaptor)是对顺序容器(Sequence Container)或关联容器(Associative Container)进行包装而得到的一种具有更多约束力(...原创 2018-08-27 20:27:37 · 6818 阅读 · 0 评论 -
D - Pagodas (找规律)
n pagodas were standing erect in Hong Jue Si between the Niushou Mountain and the Yuntai Mountain, labelled from 1 to n. However, only two of them (labelled a and b, where 1≤a≠b≤n) withstood the test ...原创 2018-08-13 10:46:43 · 7254 阅读 · 0 评论 -
B - Building A New Barn(数学题)
After scrimping and saving for years, Farmer John has decided to build a new barn. He wants the barn to be highly accessible, and he knows the coordinates of the grazing spots of all N (2 ≤ N ≤ 10,000...原创 2018-08-13 10:23:38 · 6483 阅读 · 0 评论 -
dp新手入门
网址转载链接: http://bbs.chinaunix.net/thread-4094539-1-1.html 动态规划:从新手到专家 Hawstein翻译 前言 我们遇到的问题中,有很大一部分可以用动态规划(简称DP)来解。 解决这类问题可以很大地提升你的能力与技巧,我会试着帮助你理解如何使用DP来解题。 这篇文章是基于实例展开来讲的,因为干巴巴的理论实在...转载 2018-09-23 11:23:12 · 6147 阅读 · 0 评论 -
最小乘车费用(dp水题)
描述 某条街上每一公里就有一汽车站,乘车费用如下表:公里数 1 2 3 4 5 6 7 8 9 10费用 12 21 31 40 49 58 69 79 90 101而一辆汽车从不行驶超过10公里。某人想行驶n公里,假设他可以任意次换车,请你帮他找到一种乘车方案使费用最小(10公里的费用比1公里小的情况是允许的)。编一程序算出最小的价格;输入输入文件共两行,第一行为1...原创 2018-09-24 19:21:44 · 8472 阅读 · 5 评论 -
C++ STL(竞赛常用部分)
STL in ACM入口:https://blog.csdn.net/hahohehehe/article/details/60147328 STL大致分为容器,算法,迭代器。几乎所有的代码都采用了模板类和模版函数的方式常用的算法包括比较,交换,排序等。所有算法的前两个参数都是一对iterator,指出容器内一个范围内的元素。既然STL代码大都采用了模板类和模版函数的方式,其实自己...转载 2018-09-26 20:07:15 · 6884 阅读 · 0 评论 -
AC自动机总结(超详细注释)
ps:学习AC自动机的时候必须先点亮KMP和字典树的技能点。步骤:1.将所有模式串建立一个字典树。2.对字典树建立失配边。3.用目标串与字典树进行匹配。写法:现在通用的AC自动机写法有两类:1.数组。2.指针。(也有把这两种结合到一起的写法)指针比较直观,但是做有的题时不好操作;数组相对抽象些,但是适用范围广。我用的是数组的写法,借鉴的是kuangbin大神的板子。...原创 2019-07-17 16:28:28 · 6851 阅读 · 1 评论 -
统计正交码片(c++)
码片是一个8bit的码片。#include <iostream>#include <vector>using namespace std;//正交码结构体struct Chips{ int my_chip[8];//原始码片 int chips[256][8];//正交码片}cp;int t = 0;//正交码片个数bool judg...原创 2019-07-04 16:14:50 · 7410 阅读 · 1 评论 -
线段树讲解(数据结构、C++)
声明 :仅一张图片转载于http://www.cnblogs.com/shuaiwhu/archive/2012/04/22/2464583.html,自己画太麻烦了。。。那个博客的讲解也很好,只是他用了指针的方式来定义线段树,而我用了结构体,并且他讲了线段树的更高级的操作,若对线段树的初级操作不理解,请继续阅读线段树作为一种十分常用的数据结构,在NOIP、NOI中广泛的出现,所以在...转载 2019-03-17 21:07:58 · 6626 阅读 · 0 评论 -
UVA 524 素数环(dfs回溯)
#include<bits/stdc++.h>using namespace std;int A[120];bool isp[150];int n;int vis[150];void dfs(int cur){ if(cur==n && isp[A[0]+A[n-1]]){ for(int i = 0;i < n;i++) ...原创 2019-01-22 19:43:22 · 6249 阅读 · 0 评论 -
认识O(N*logN)的排序(总结)
在总结之前看看下面这张表:从表中可以看到归并排序、快速排序、堆排序的平均时间复杂度是 O(nlogn) 。我要总结的便是这三种排序算法,它们都适合于数据量比较大的排序运算中。一. 归并排序:归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二...原创 2019-01-13 14:04:57 · 10062 阅读 · 0 评论 -
认识复杂度和简单排序算法(总结)
一. 时间复杂度和空间复杂度:1.时间复杂度:一个算法执行所需要进行的计算工作量,通常用“大O表示法表示”,例如O(1),O(n),O(logn),O(nlogn),O(n^2), O(2^n),O(2!)等。算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,也反映了算法的优劣程度。计算时间复杂度的方法: 找到最基本的执行语句。(可能存在多条) 计算该语句执...原创 2019-01-11 22:33:01 · 7453 阅读 · 2 评论 -
Online Judge系统(简称OJ)
什么是OJOnline Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。 一个用户提交的程序在Online Judge系统下执行时将受到比较严格的限制,包括运行时间限制,内存使用限制和安全限制等。用户程序执行的结果将被Online Judge系统捕捉并保存,然后再转交给一个裁判程序...转载 2018-10-24 22:33:30 · 11911 阅读 · 0 评论 -
二叉树的前序遍历、中序遍历、后序遍历。(递归和非递归)
前言:二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就 是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。对于三种遍历,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点。 树的结构...原创 2018-10-28 18:02:23 · 11253 阅读 · 0 评论 -
G - Safest Buildings(数学几何题)
PUBG is a multiplayer online battle royale video game. In the game, up to one hundred players parachute onto an island and scavenge for weapons and equipment to kill others while avoiding getting kill...原创 2018-08-09 19:52:10 · 10244 阅读 · 0 评论 -
C - Black Hills golden jewels(二分套二分)
In Rapid City are located the main producers of the Black Hills gold jewelry, a very popular product among tourists. The main characteristics of these jewels are the designs of leaves and grape cluste...原创 2018-08-09 17:36:21 · 10424 阅读 · 0 评论 -
H - Duizi and Shunzi (找规律的签到题)
Nike likes playing cards and makes a problem of it.Now give you n integers, ai(1≤i≤n)We define two identical numbers (eg: 2,2) a Duizi,and three consecutive positive integers (eg: 2,3,4) a Shunzi....原创 2018-08-09 15:00:14 · 10243 阅读 · 0 评论 -
Ignatius and the Princess IV (水题)
"OK, you are not too bad, em... But you can never pass the next test." feng5166 says. "I will tell you an odd number N, and then N integers. There will be a special integer among them, you have to ...原创 2018-06-14 20:29:41 · 5534 阅读 · 0 评论 -
Help Jimmy 心得+被坑之路
"Help Jimmy" 是在下图所示的场景上完成的游戏。 场景中包括多个长度和高度各不相同的平台。地面是最低的平台,高度为零,长度无限。 Jimmy老鼠在时刻0从高于所有平台的某处开始下落,它的下落速度始终为1米/秒。当Jimmy落到某个平台上时,游戏者选择让它向左还是向右跑,它跑动的速度也是1米/秒。当Ji...原创 2018-06-13 20:48:31 · 5746 阅读 · 0 评论 -
fgets()用法
函数原型char *fgets(char *buf, int bufsize, FILE *stream);参数*buf: 字符型指针,指向用来存储所得数据的地址。bufsize: 整型数据,指明存储数据的大小。*stream: 文件结构体指针,将要读取的文件流。返回值成功,则返回第一个参数buf;在读字符时遇到end-of-file,则eof指示器被设置,如果还没读入任何字符就遇到这种情况,则b...原创 2018-05-07 21:08:29 · 15606 阅读 · 0 评论 -
算法竞赛(紫书)第三章习题题解
今天来发一波题解3-1#include <iostream>#include <cstring>#include <stdio.h>#include <stdlib.h>#define maxn 1000000 + 10using namespace std;char s[maxn];int main(){ int n; cin>&...原创 2018-05-07 20:06:48 · 6743 阅读 · 0 评论 -
ACM比赛中如何加速c++的输入输出?如何使cin速度与scanf速度相当?什么是最快的输入输出方法?
在竞赛中,遇到大数据时,往往读文件成了程序运行速度的瓶颈,需要更快的读取方式。相信几乎所有的C++学习者都在cin机器缓慢的速度上栽过跟头,于是从此以后发誓不用cin读数据。还有人说Pascal的read语句的速度是C/C++中scanf比不上的,C++选手只能干着急。难道C++真的低Pascal一等吗?答案是不言而喻的。一个进阶的方法是把数据一下子读进来,然后再转化字符串,这种方法传说中很不错,...转载 2018-05-13 20:50:33 · 5765 阅读 · 0 评论 -
超级简单易懂的二进制原码,反码,补码
以123和-123为例:[123]原码:01111011。 反码:01111011。 补码:01111011。[-123]原码:11111011。 反码:10000100。 补码:10000101。正数的原码,反码,补码均相等。负数的反码求法: 1.符号位不变。 2.其他位取反。负数的补码求法: 1.符号位不变。 2.其他位取反。 ...原创 2018-04-26 20:55:26 · 11630 阅读 · 2 评论 -
C读取带空格的字符串和字符数组
读取带空格的输入时应该用的方法:<1>字符串 string: #include <string> string a; getline(cin,a);<2>字符数组 char: 第一种: #include <cstdio> char[10] a; ...原创 2018-05-04 16:38:49 · 10337 阅读 · 0 评论 -
高精度加减法
高精度加法:#include<iostream>#include<cstring>#include<cmath>#include<stdio.h>#include<algorithm>#include<queue>using namespace std;const int maxn = 1000000 + 5;struct H...原创 2018-04-20 21:45:17 · 6919 阅读 · 0 评论 -
Max Sum Plus Plus
Now I think you have got an AC in Ignatius.L's "Max Sum" problem. To be a brave ACMer, we always challenge ourselves to more difficult problems. Now you are faced with a more difficult problem. Giv...原创 2018-06-14 21:37:14 · 5452 阅读 · 0 评论 -
Monkey and Banana(LIS)
A group of researchers are designing an experiment to test the IQ of a monkey. They will hang a banana at the roof of a building, and at the mean time, provide the monkey with some blocks. If the mo...原创 2018-06-16 10:04:51 · 5548 阅读 · 0 评论 -
Super Jumping! Jumping! Jumping!(初学者也能看懂的dp)
Nowadays, a kind of chess game called “Super Jumping! Jumping! Jumping!” is very popular in HDU. Maybe you are a good boy, and know little about this game, so I introduce it to you now. The ga...原创 2018-06-17 17:32:26 · 5595 阅读 · 0 评论 -
滑雪(二维dp+dfs板子)
Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 1...原创 2018-08-09 11:10:43 · 10345 阅读 · 0 评论 -
D - MU Puzzle(数学题)
Suppose there are the symbols M, I, and U which can be combined to produce strings of symbols called "words". We start with one word MI, and transform it to get a new word. In each step, we can use on...原创 2018-08-09 10:17:54 · 6275 阅读 · 0 评论 -
A - Easy h-index(阅读理解)
The h-index of an author is the largest h where he has at least h papers with citations not less than h.h-index 指数类似于打游戏时的称号等级,只是这里的这个等级的评判有两个方面:1.发布的论文数量h1。2.这h1份论文的的总引用次数h2。要求h2 >= h1。Bobo has...原创 2018-08-09 10:06:47 · 6880 阅读 · 0 评论 -
Grid(bfs模板题)
题目大意是从左上角跳到右下角(如果能跳到)最少要多少步,其中每个格子都有一个数字代表跳的格数(必须按照这个格数跳),且每步不管跳多少格都算一步。这道题直接套bfs的模板就可以AC了。上代码:#include <iostream>#include <cstring>#include <stdio.h>#include <stdlib.h>#in...原创 2018-06-19 18:56:39 · 6330 阅读 · 0 评论 -
最少拦截系统(贪心)
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹. 怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截...原创 2018-06-17 21:30:59 · 6098 阅读 · 0 评论 -
Tickets (简单dp)
Jesus, what a great movie! Thousands of people are rushing to the cinema. However, this is really a tuff time for Joe who sells the film tickets. He is wandering when could he go back home as early ...原创 2018-06-17 21:12:34 · 6239 阅读 · 0 评论