自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

cggwz的信息飞船

带你领略计算机世界的美妙和神奇

原创 狐假虎威的树链剖分

最近在做运输计划这道题时,发现要用数链剖分,于是就打算学学这个玩意儿。 其实之前一直以为这个东西是个很复杂的东西,可能代码看起来都很长。 但是,学了之后,我才发现,这个东西很好懂,而且代码之所以很长,也有一个原因就是它需要使用一个强大的数据结构——线段树。线段树的代码其实并不算少,这个,学过的人,都应该知道,没学过的人,不妨看一下:线段树 所以,我称之为狐假虎威。 那么,下面就让我为你们揭...

2018-06-17 21:42:33 193

转载 NOIP考点

NOIP考点基础算法图树数论数据结构动态规划搜索其他算法省选知识点汇总图论数据结构字符串相关算法及数据结构数学计算几何搜索动态规划其他算法转自:巨佬的博客 加*号是选学,加粗为重点,重要值排序不分先后NOIP考点基础算法贪心、枚举、分治、二分、倍增、*构造、高精、模拟、图论图最短路(dijkstra、spfa、f...

2018-03-17 21:34:21 483

原创 树状数组升级版(二维树状数组)

二维树状数组详细解释

2017-11-01 23:30:31 2234 2

原创 谈笑风生线段树(区间修改)

线段树的区间修改(加值,改值,加等差数列),区间最大值、最小值、和的查询

2017-10-31 00:00:53 524

原创 谈笑风生线段树(点修改)

线段树的点修改+区间最大值/最小值/和查询

2017-10-30 23:17:06 226

原创 树状数组再进阶(区间修改+区间查询)

树状数组(区间修改+区间查询)

2017-10-29 19:06:49 244

原创 树状数组进阶(区间修改+单点查询)

树状数组的区间修改和单点查询

2017-10-28 23:54:42 539

原创 NOIP2017提高组预赛详解

cgg从蒟蒻的角度,教你如何拿高分!!

2017-10-14 23:48:36 6535 3

原创 树状数组趣解

让我cgg用最生动的语言为您讲解有趣的树状数组

2017-08-04 23:00:43 367

原创 集合位置(次短路模板题)

传送门这道题就是次短路的模板题,思路很简单,先求最短路,然后枚举最短路的每一条边,每次删去一条,然后再求最短路,对于这几次结果取最小值即可。本质的理论就是最短路和次短路(如果存在的话)是不可能重合的,也许长度相等。代码如下:#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#include<queue>#include<cmath>

2020-06-25 19:22:40 35

原创 邮递员送信(洛谷1629)

传送门第一反应是Floyd,但是看看数据规模,会tle那就考虑n次单源最短路,但是即使是SPFA,也会t那肯定就另有玄机。我们每次出去送货后都要直接返回邮局,所以我们需要的信息是,从邮局到每一点的最短距离,和每一点到邮局的最短距离。无论是Floyd还是n次单源最短路,都求了很多无用的信息,即不同目的地之间的最短路,那是我们不需要的。这就会浪费时间。所以我们应该怎么精确地求出自己所需要的信息呢?我们会发现无论是从邮局出去还是从外面回邮局,都有一个核心的汇聚点就是邮局,其实这就是两个单源最短路,一个是

2020-06-23 12:41:56 32

原创 MooFest G(USACO04OPEN)

传送门这题可以采用分治的方法,类似于归并排序的思路。其核心问题在于,我们怎么化简左右结合的步骤?如果我们只是单纯的分别计算左右两两的音量,那就是假的分治,实则是暴力算法,复杂度也是O(n2)的,那就没有任何意义了,而且会tle。那么我们怎么去处理呢?我们先回忆一下归并排序为什么会比更直接的排序更快,关键在于合并的步骤,归并排序在左右合并时,巧妙地利用了左右两边分别有序的条件,从而使得合并步骤在O(n)的复杂度内完成。所以我们也不妨对这个数据进行排序,那么我们应该按什么为标准进行排序呢?我们可以

2020-06-21 12:00:10 29

原创 Balanced Lineup G(USACO07JAN)

传送门本来是冲着倍增的标签来的,结果还是用线段树直接解决了。线段树就没什么好说的了,这个其实甚至不需要线段树,用ST表更好,因为这个根本不需要修改,没有修改操作。代码如下:#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=50005;int n,Q;int h[maxn];int maxh[maxn*4],minh[maxn*4

2020-06-21 00:00:00 324

原创 开车旅行(NOIP2012提高组)

题目链接这道题最基本的思路是用倍增,但是其实它的难点在预处理部分。倍增的部分此次就不细说了,和之前的最近公共祖先的思想类似。我们主要来探讨一下预处理的部分。我们需要预处理出每个城市小A和小B的选择目标和对应的距离,接下来就可以处理出进行2k轮开车的目的地和距离了。所以前者才是重中之重,而前者如果要用暴力的方法会tle的。有人可能会疑惑,我们找当前点的后面两三个不就可以了?为什么会tle呢?实际上并不是序号相差很远距离就很远,实际上有可能第一个城市和最后一个城市最近,可以举个例子,城市海拔如下:

2020-06-20 17:56:03 31

原创 BugkuCTF题解——web2

今天开始玩夺旗赛了。开心、开心。先来看这个水题。先放一下题库地址吧:题库这个web2可以说是非常简单了,我们打开目标网页可以发现有很多的滑稽。。。。但这不是重点,我们只需要打开其网页源码,就可以发现我们要找的flag。是不是很简单这里也顺便介绍一下CTF吧。就是夺旗赛,根据题目去寻找一串代码,而这串代码就是flag,也就是我们要找的旗,找到旗就算解题成功。是不是很有意思?一起来试...

2020-02-18 22:20:07 73

原创 Android开发——APP计时功能开发详解(含暂停计时功能)

我们平时在开发APP的过程中,可能会经常遇到需要计时功能实现的问题,比如:我们设计一个竞速的游戏,那就需要计算玩家游戏用时,这时我们就需要计时并把时间实时显示在屏幕上,那么我们应该怎么去实现呢?今天cggwz就详细地为大家讲解一下计时功能的开发。效果图下面是效果图,计时器在右上角。这是从我的一个项目里抠出来的,所以接下类的教学做出的效果可能不是这样,当然了我接下来的教学只是围绕核心的功能设...

2020-02-08 12:31:17 155

原创 如何理解Android中的context?

我们在动态创建组件时,经常会发现需要一个参数context,而我们多数情况下可能就填一个this就结束了,那么context究竟是何方圣神呢?官方解释什么意思呢?官方的解释说这个context是访问全局信息的一个接口,言下之意就是,我们通过context可以引用全局的信息。那这些信息是什么呢?比如我们的布局、图片、字符串等,res文件夹下的那些东西,都可以通过context来访问。怎...

2020-02-07 11:11:02 87

原创 Java版本的DLX解决数独算法

DLX又称作精确覆盖问题,而今天要说的就是把解数独这个问题转化为一个精确覆盖问题,然后来解决它。其实这是一个很好的解决问题的思路,很多问题都可以转化为一个精确覆盖问题,然后用接下来这个算法来解决它。关于DLX的思想,网上有不少的解释,这里我就不再赘述,我会在我的另一篇博客里讲解原理。首先是整个代码的结构。总共分为四个类,分别是:主类(StartPoint)转换器类(Transfer)...

2020-01-29 11:01:10 175

原创 大学C语言考试易错知识点总结

文章目录运算符相关自增(减)前后缀逻辑运算符的短路问题赋值运算符的返回值问题运算符优先级的问题函数相关函数声明问题mian函数参数问题变量相关用字符串初始化字符数组赋初值问题转义字符问题常用ASCII码记忆字符串常量占用内存问题数组相关数组下标越界二维数组中行列计算问题字符数组赋值问题结构体相关结构体所包含的变量不可初始化库函数相关绝对值函数现在不少大学都把C语言作为一门必学的编程语言。而每到这...

2019-12-28 23:02:17 312 1

原创 洛谷题解——统计单词个数(NOIP)

传送门好久每写题了,接下来会多写些题的。这道题是典型的动态规划。大致上的思路是,先预处理出num[i][j]表示在区间[i,j]上有多少符合题意的单词。然后用f[l][part]表示把前l个字符分成part部分,最大的单词数是多少。然后我们就可以写出状态转移方程:f[l][part]=max{f[j][part-1]+num[j+1][l]}代码如下:#include<cstd...

2019-12-24 17:58:54 62 1

原创 python学习笔记——异常处理

程序在执行过程中,经常会由于系统、或者用户输入等造成一些问题,我们称之为异常。我们当然不能视而不见,或者当所有用户都是良好的用户,否则会造成意想不到严重后果。今天我们就来学习对异常的处理。python标准异常python本身有一些内置的异常类型,就好像我们在编译我们的程序时,当我们出问题时会报错一样。这些异常见下表:异常名称描述BaseException所有异常的...

2019-12-16 08:10:28 41

原创 python学习笔记——文件操作I/O

作为入门,我们将会学习一些基本的I/O操作,如果需要其他更高级的操作可以参考官方文档。标准输入输出也就是从屏幕读入或者从屏幕输出。输出很简单,就是我们一直在使用的print,我就不举例了。输入的话,主要是input,之前python2.x还有input_raw,但是python3已经把它删掉了,所以我们就只说inputinput的参数是我们需要显示给用户的提示信息。而用户的输入会作为i...

2019-12-15 16:10:38 40

原创 python学习笔记——日期和时间

今天来学一下python对于时间的处理方法。python提供了time和calendar两个模块来处理时间。在python中,时间间隔是以秒为单位的浮点小数。每个时间戳都是以距1970年1月1日午夜多长时间来记录的。引入:time()的用法time模块中有一个time函数可以用来获取上述所说的时间戳,我们举个例子:import timeprint(time.time())运行结果...

2019-12-14 16:38:46 33

原创 python学习笔记——python基本语法补充

中文编码问题我们之前在小插曲这篇博文中提到了中文编码问题以及其解决方案。这里再做一些补充。这个中文编码问题之所以会出现,是python2.x没有指定编码形式而导致的。所以我们只需要在文件开头加上:# -*- coding: UTF-8 -*-或者#coding=utf-8即可。当然了,我也强调了,这是2.x的问题,所以对于3.x是不会有问题的,3.x默认制定字符集为utf-8.语法图这里...

2019-12-13 09:11:46 51

原创 汇编语言第十章——CALL和RET指令

今天我们学习call和ret指令。我们在第九章里学习了转移指令的原理。今天标题里的两个指令,也都是转移指令。那么,下面我们就分别来讲解这两个指令。ret和retf那么这个指令的用处是什么呢?ret是利用栈中的数据来修改IP,从而实现近转移。retf利用栈中的数据来修改CS和IP,从而实现远转移。由这里的定义,我们可以看到,我们修改用的数据和数据来源,以及修改的目标都是非常明确的,所...

2019-11-28 20:20:52 72

原创 汇编语言第九章——转移指令的原理

定义什么是转移指令?我们对其的定义如下:可以修改IP,或同时修改CS和IP的指令统称为转移指令简单来说,就是可以控制CPU执行内存中某段代码的指令。我们先总的对这类行为进行一下分类。从行为角度,主要有一下两类:段内转移:只改变IP段间转移:同时改变IP和CS在考虑修改的范围:短转移的IP范围:-128~127近转移的IP范围:-32768~32767所以我们就可...

2019-11-21 17:20:45 43

原创 汇编语言第八章——数据处理的两个基本问题

至此,我们已经学习了七章和数据、内存相关的章节,此处我们需要进行一下总结。首先提出标题中提到的数据处理的两个基本问题:处理的数据在哪个地方?要处理的数据有多长?我们首先对寄存器进行一个分类:寄存器(reg):ax,bx,cx,dx,sp,bp,si,di段寄存器(sreg):ds,cs,ss,esbx,si,di,bp前面三个我们已经学习过了。把这几个放在一起,显然是为了...

2019-11-21 15:52:22 56

原创 EGE学习一——EGE介绍、安装和使用

什么是EGE?EGE就是Easy Graphics Engine,简易图形引擎(我是这么翻译的)。那么它可以做些什么呢?它类似于一个图形库,可供我们制作更加优秀的画面使用。使用的语言就是C,我们只需要下载安装好后,使用时用include引入就好。下面我们引用一下开发者对其的描述:●为什么要写这个库?许多学编程的都是从 C 语言开始入门的,而目前的现状是:有些学校以 Turbo ...

2019-11-18 23:56:24 270

原创 汇编语言第七章——更加灵活的定位内存的方法

and和or我觉得没什么值得解释的,大家应该都是明白的。举个例子:and al,10110101bor al,10101010b就是把寄存器中的值and上或or上某个数。ASCII码这个大家应该也都知道。字符与字符串汇编里的字符和字符串由’'给出。比如:db ’unIX‘mov ax,'a'其中db意思是“define byte”而其在内存中的存储形式,就是ASCI...

2019-11-14 16:59:39 33

原创 汇编语言第六章——包含多个段的程序

今天我们来看看第六章。在代码段中使用数据我们知道在高级语言中,有数组这样东西。那么在汇编语言中,我们又如何将一段数据保存在一段连续的内存中呢?我们肯定不能随便找到一段内存,然后就往里面存,因为那样可能会覆盖那里原有的非常重要的东西。所以我们应当让系统为我们分配。这里就又涉及到一个语句:dw 0123,2312,34a3,1231,3456这里dw是“define word” 的意思...

2019-11-13 17:43:51 47

原创 CRC码计算及原理(FCS帧校验序列生成)

我们知道在以太网帧的末尾有一个叫FCS的东西。全称:Frame Check Sequence,中文名:帧检验序列这个东西是用来检验我们的数据是否在传输的过程中被破坏(不一定是收到攻击,也可能是一些物理干扰),以更好的安排重发。而其中最常用的,也是检错能力很强的,就是CRC,循环冗余校验码。操作流程一个小背景知识模二除法,或者说在数域{1,0}上的除法。与普通除法类似,它也可以列竖式计...

2019-11-12 21:30:28 1197

原创 汇编语言第五章——[BX]和loop指令

今天我们继续看第五章。 我们先讲一下,作者有一个这样的约定: 为了描述上的简洁,在以后的课程中,我们将使用一个描述性的符号“()”来表示一个寄存器或一个内存单元的内容。所以我们这里沿用这个记号。首先我们先来看一下[BX]。 这个是什么? 大家应该还记得[address]吧? 我们当时的这个是用来指定偏移地址的。 所以,我们这里也是这样。 其实就是用bx中的内容去指定偏...

2019-11-12 15:06:47 41

原创 汇编环境的准备

提供一篇不错的文章:环境准备

2019-11-10 19:18:12 24

原创 The Revelation of Thinking in Coding-----magic of conservation

Conservation is a very important thinking,because it can show us the essence of problems.For example,the conservation of energy and momentum can help us solve some physical problems easily instead of...

2019-10-01 19:20:35 60 3

原创 编程思想启示录——必要条件的应用

必要条件的概念大家都知道。如果p可以推出q,则q是p的必要条件。可以理解为,若要使p成立,则q必须成立。其实我们经常会用到必要条件,最典型的运用就是剪枝。必要条件的作用是,可以限制我们解所处的范围。即,通过多个条件的限制,缩小可能解的集合,从而便于通过其他方法解决问题,如枚举。其应用途径有两条:简化问题、变难为易,在此前提下,尽可能寻找精确的必要条件缩小解的范围选择揭示问题本质的...

2019-09-28 23:55:16 34

原创 python学习笔记——类和对象

。。。。。。刚看到时,我有一点肤浅的吃惊:python都已经没了明确的数据类型概念,竟然还有类。好了,请忽略我的无知。下面我们来看知识点。类的定义首先是类的定义:class name: pass我们能看一下格式,首先是一个普通的class,然后是我们类的名字,冒号后则是类的具体内容。而这里的pass并不是我随便写的,而是有含义的。当我们创建了一个空的类或方法,并且一时半会不想设计它...

2019-09-19 13:01:49 43

原创 python学习笔记——函数和模块

函数这么重要的东西自然少不了。那么在python中是怎么定义的呢?def cgg(name): print("haha %s"%name)def是定义的意思,而cgg是函数名,name是参数。当然了,有了函数吗,自然少不了函数的返回值。那么这里用的依然是return。def cgg(a,b): return a+b模块一个小例子:import timeprint(tim...

2019-09-18 18:08:56 42

原创 python学习笔记——循环

for我们先来看一下for语句的格式:for i in range(0,5): print(i)其中range相当于一个迭代器。我们可以这么尝试:print(list(range(0,5)))输出很简单了,就是01234当然了这里的迭代器可以用自己的list比如:cgg=["cgg","cgg1","cgg2"]for i in cgg: print(i)输出结果就...

2019-09-18 17:38:09 32

原创 python学习笔记——小插曲

作为eclipse的忠实粉丝,我自然乐意用eclipse来编写。于是捣鼓了一小会儿就搞好了。但是我运行的第一个程序出现了一个很奇怪的问题:SyntaxError: (unicode error) ‘utf-8’ codec can’t decode byte 0xce in position 16: invalid continuation byte我隐约的看到了utf-8,知道了肯定...

2019-09-18 16:50:12 31

原创 python学习笔记——if和else

首先我们提到一个代码块的概念。在python中并没有花括号来表示代码块这种规定。所以它有了一个新的规定:用缩进来表示代码块。(强制要求缩进)当然了,这对像我这种不缩进都要死的人,没有任何坏处。所以我们来将一下if语句的模板。cgg=10if cgg<=60: print("You are rubbish")else: print("You are garbage")这就...

2019-09-17 23:54:48 34

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