![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++
文章平均质量分 63
该专栏主要涉及C++语言。
XiaoZheng2003
博客暂时弃更
展开
-
NOIP2017提高组比(Bao)赛(Zha)总结
题目大意原创 2017-11-18 09:56:41 · 877 阅读 · 0 评论 -
并查集主要知识
什么是并查集?并查集是一种树型的高级数据结构,主要用于处理不相交集合的合并及查询问题。它在计算机科学中有着广泛的应用,例如求解最小生成树、亲戚关系的判定、确定无向图的连通子图个数、最小公共祖先问题等,都要用到并查集。什么是集合?集合是数学中最基本的构造之一,将一组满足某种性质的对象放在一起就形成了集合。集合中包含的对象称为集合中的元素,集合中的元素是无序而且唯一的。人们常用大写英文字母A、B、C等来原创 2017-02-25 10:03:31 · 4385 阅读 · 1 评论 -
位运算主要知识
什么是位运算? 程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。 C++提供了6种位运算符来进行位运算操作:& 按位与| 按位或^ 按位异或~ 按位取反>> 右移(右边消失,左边补符号位)位运算的操作数是整数类型或字符型.按位与&运算原创 2017-02-25 12:28:07 · 14544 阅读 · 4 评论 -
树状数组基础知识
问题提出已知数组a[],元素个数为n,现在要求a数组中i到j区间内的和(1<=i<=j<=n).思考我们完全可以存储sum[1,k](k=1,2,……),然后对任意给定的查找区间[i,j],都可以方便的用ans=sum[1,j]-sum[1,i-1],当然这只是没有元素改变的情况下的比较优化的解法.那么对于对于数组中的元素随时变更的情况下,我们能否还这么做呢?如果仍然采取这样的方法,则每次数据有更新原创 2017-03-04 10:53:39 · 644 阅读 · 0 评论 -
线段树基础知识
线段树的概念在一类问题中,我们需要经常处理可以映射在一个坐标轴上的一些固定线段,例如说映射在OX轴上的线段。由于线段是可以互相覆盖的,有时需要动态地取线段的并,例如取得并区间的总长度,或者并区间的个数等等。一个线段是对应于一个区间的,因此线段树也可以叫做区间树。线段树的构造思想线段树是一棵二叉树,树中的每一个结点表示了一个区间[a,b]。每一个叶子节点表示了一个单位区间。根节点表示的是“整体”原创 2017-03-11 10:17:15 · 1313 阅读 · 0 评论 -
线段树基础知识(续)
经过上次线段树的基本讲解,这次我们就专门来看几道例题。---------------------------------------------------------------------------------------------------------问题 D(1911): 【高级数据结构】线段的条数题目描述无限长的X轴上从下向上依次叠放一定长度某种原创 2017-03-23 14:04:40 · 715 阅读 · 0 评论 -
结构体
结构体概念在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。 在C语言中,可以定义结构体类型,将多个相关的变量包装成为一个整体使用。在原创 2017-04-28 13:34:02 · 804 阅读 · 0 评论 -
C++指针
概念有时你申请一个变量(如int x;),计算机就会随机给你分配一个空间,你可以在那个空间内改变数值。就像计算机给了一个叫做a的小房子,但是只能在里面放int类型的值。比如你输入x=-1,计算机首先会把小房子找到,然后把-1放在里面。(如果里面有其他值,就拿出来) 那这个小房子的地方在哪里呢,就存放在地址里。每一个变量都有一个地址(即是它在内存中的位置)。所谓指针就是一个箭头→,指向一个地址,原创 2017-05-16 18:54:28 · 664 阅读 · 0 评论 -
KM算法
最佳匹配什么是完美匹配如果一个二分图,X部和Y部的顶点数相等,若存在一个匹配包含X部与Y部的所有顶点,则称为完美匹配。 换句话说:若二分图X部的每一个顶点都与Y中的一个顶点匹配,**并且**Y部中的每一个顶点也与X部中的一个顶点匹配,则该匹配为完美匹配。什么是完备匹配如果一个二分图,X部中的每一个顶点都与Y部中的一个顶点匹配,**或者**Y部中的每一个顶点也与X部中的一个顶点匹配,则该匹配为完备匹原创 2017-05-02 17:39:42 · 16211 阅读 · 1 评论 -
[USACO]完美的牛栏
题目描述农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术。不幸的是,由于工程问题,每个牛栏都不一样。第一个星期,农夫约翰随便地让奶牛们进入牛栏,但是问题很快地显露出来:每头奶牛都只愿意在她们喜欢的那些牛栏中产奶。上个星期,农夫约翰刚刚收集到了奶牛们的爱好的信息(每头奶牛喜欢在哪些牛栏产奶)。一个牛栏只能容纳一头奶牛,当然,一头奶牛只能在一个牛栏中产奶。 给出奶牛们的爱好的信息,计算最大分原创 2017-04-17 13:07:46 · 1055 阅读 · 0 评论 -
树型DP
概念树型DP即在树上进行DP。树是无环图,顺序可以是从叶子到根节点,也可以从根到叶子节点。一般树型DP的特征很明显,即状态可以表示为树中的节点,每个节点的状态可以由其子节点状态转移而来(从叶子到根的顺序),或是由其父亲节点转移而来(从根到叶节点的顺序),也可是两者结合。找出状态和状态转移方程仍然是树型DP的关键。例题没有上司的晚会题目描述Ural大学有N个职员,编号为1~N。他们有从属关系,也就是说原创 2017-04-27 13:32:48 · 872 阅读 · 0 评论 -
[NOI2001]食物链
原题题目描述动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是“1 X Y”,表示X和Y是同类。 第二种说法是“2 X Y”,表示X吃Y。 此人对N个动物,用上述两种说法,一句接一句地原创 2017-02-24 13:47:09 · 1257 阅读 · 0 评论 -
最长上升子序列
原题题目描述给定一个整数序列A1A2A3….An。求它的一个递增子序列,使子序列的元素个数尽量多,元素不一定要求连续。输入第1行:1个整数n(1第2行-n+1行:每行1个整数x(-1000输出第1行:1个整数k,表示最长上升子序列的长度。 第2行:k个用单个空格分开的整数,表示找到了最长上升子序列。如果有多个长度等于k的子序列,则输出最靠前的1个。样原创 2016-12-29 13:50:27 · 849 阅读 · 0 评论 -
【NOIP2016普及组】解题报告 买铅笔 回文日期 海港 魔法阵
【NOIP2016普及组】复赛总结里面包含了题目、分析、官方数据和源代码,也可以说是一份解题报告。原创 2016-11-22 17:48:32 · 4272 阅读 · 0 评论 -
二分图匹配——匈牙利算法和KM算法
二分图的概念二分图又称作二部图,是图论中的一种特殊模型。 设G=(V, E)是一个无向图。如果顶点集V可分割为两个互不相交的子集X和Y,并且图中每条边连接的两个顶点一个在X中,另一个在Y中,则称图G为二分图。 二分图的性质定理:当且仅当无向图G的每一个回路的次数均是偶数时,G才是一个二分图。如果无回路,相当于任一回路的次数为0,故也视为二分图。二分图的判定如果一个图是连通的,可以用如下的方法判定原创 2017-04-14 20:41:54 · 48572 阅读 · 2 评论 -
论整数输出优化
背景前些天,看到有些大牛写了输出优化,于是乎,我就想比较一下输出优化和printf、cout的速度。 于是,想起ctime头文件和clock函数可以测试程序在运行期间花费的时间,于是就有了灵感,写出了一个测试程序。程序write和putint函数是两种输出优化函数,然后以下是测试程序。#include<windows.h>#include<iostream>#include<cstdio>#原创 2017-04-06 14:11:26 · 1123 阅读 · 0 评论 -
论整数输入优化
背景前些天发现了写读入优化和不写读入优化的区别。。。别人的代码: 我的代码: 我似乎发现了什么东西。。。然后我点进第一名的代码一看:void get(int &res){ char ch;bool flag=0; while(!isdigit(ch=getchar())) (ch=='-')&&(flag=true); for(res=num;isdigit(ch=原创 2017-04-08 16:48:36 · 699 阅读 · 0 评论 -
组合数学系列问题
要明白什么是组合数学,首先我们要知道什么是组合数。什么是组合数?从m个不同元素中,任取n(n≤m)个元素并成一组,叫做从m个不同元素中取出n个元素的一个组合;从m个不同元素中取出n(n≤m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数。计算公式:Cnm=m!n!(m−n)!C_m^n= {{m!} \over {n!(m-n)!}}查看原文怎么计算组合数?点击这里什么是第二类斯特原创 2017-02-10 17:23:00 · 3385 阅读 · 0 评论 -
以先序字符串方式建立二叉树
原题题目描述输入一个二叉树的先序串,输出其后序遍历结果。如果结点的子树为空,先序串的对应位置为空格符。输入第1行:先序串(结点数≤26,以单个大写字母表示)输出第1行:后序序列样例输入AB C D 样例输出CBDA注:空格原创 2017-01-20 17:28:21 · 6577 阅读 · 0 评论 -
【2017“百度之星”程序设计大赛-资格赛】度度熊与邪恶大魔王
Problem Description度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来。 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力。 度度熊一共拥有m种攻击方式,第i种攻击方式,需要消耗k[i]的晶石,造成p[i]点伤害。 当然,如果度度熊使用第i个技能打在第j个怪兽上面的话,会使得第j个怪兽的生命值减少p[i]-b[j],当然如果伤害小于防御,那么攻击就原创 2017-08-12 17:25:34 · 764 阅读 · 0 评论 -
【树上倍增】【USACO MAR11银组】聚会地点
题目描述Bessie和Jon每天都要去他们所居住的小镇的某些地方游玩。有趣的是,他们居住的小镇是一个树的结构,也就意味是,小镇的每个地方之间有且仅有一条通路(不是指一条边,而是指一条通路),每个地方都会有且仅有一个父亲地点(除了小镇的城镇中心,它没有祖先)。 小镇共有N个地点(1 <= N <= 1,000),编号1~N。点1是镇的中心。 Bessie和Jon决定每天都要在游玩后见面,他们见面的原创 2017-08-12 11:49:18 · 804 阅读 · 0 评论 -
【动态规划】[UVA12563]Jin Ge Jin Qu hao 劲歌金曲
Description(If you smiled when you see the title, this problem is for you ^_^) For those who don’t know KTV, see: http://en.wikipedia.org/wiki/Karaoke_box There is one very popular song called Jin原创 2017-07-18 15:04:18 · 1297 阅读 · 0 评论 -
【贪心】【枚举】【重庆市NOIP模拟赛】旅行
题目描述Mr_H 旗下的 n 个 OIer 坐船外出旅行! 但是他们只有一艘船,虽然船能装下全部的 Oier,但太拥挤将会影响众 OIer 的心情,所以 Mr_H 决定选择一部分 Oier 去。我们假设,每个人单独坐船的快乐程度是 Ci,而船上每多一个人,他的快乐程度会减去 Di。 现在你的任务是帮助 Mr_H 计算,选择那些人,才能使船上所有人的快乐程度之和达到最大。输入第1行是一个整数 n,原创 2017-07-24 17:00:36 · 787 阅读 · 0 评论 -
【找规律】【一套NOIP膜你赛】膜拜azui
问题描述一天,小 A 给了 J·G 一道水题,J·G 一眼秒了,现在 J·G 想考考你们: 小 A 有 N 个灯,排成了一列,现在小 A 给出来一个叫做 azui 的奇葩操作,我们把开着的灯看作数字 1,把关着的灯看作数字 0,定义 0 azui 0 = 1,0 azui 1 = 0,1 azui 1 = 1, 1 azui 0 = 0。现在小 A 有 N 个问题 azui(l,r),表示询问从左原创 2017-07-25 16:39:31 · 980 阅读 · 0 评论 -
【组合数学】八(容斥原理)
先来看一下题目。题目描述八是个很有趣的数字啊。八=发,八八=爸爸,88=拜拜。当然最有趣的还是8用二进制表示是1000。怎么样,有趣吧。当然题目和这些都没有关系。 某个人很无聊,他想找出[a,b]中能被8整除却不能被其他一些数整除的数。输入第一行一个数n,代表不能被整除的数的个数。 第二行n个数,中间用空格隔开。 第三行两个数a,b,中间一个空格。 a < =b < =1000000000输出一个整原创 2017-07-09 09:40:23 · 714 阅读 · 0 评论 -
犯罪团伙
一、原题犯罪团伙(gang.cpp)题目描述警察抓到了n个罪犯,警察根据经验知道他们属于不同的犯罪团伙,却不能判断有多少个团伙,但通过警察的审讯,知道其中的一些罪犯之间相互认识,已知同一犯罪团伙的成员之间直接或间接认识。 有可能一个犯罪团伙只有一个人。请你根据已知罪犯之间的关系,确定犯罪团伙的数量。已知罪犯的编号从1至n。输入第1行:n(以下m行:每行两个数:i原创 2016-10-14 13:54:52 · 2195 阅读 · 0 评论 -
[OpenJudge] 2.5基本算法之搜索 取石子游戏
一、原题6266:取石子游戏总时间限制: 1000ms 内存限制: 65536kB描述有两堆石子,两个人轮流去取.每次取的时候,只能从较多的那堆石子里取,并且取的数目必须是较少的那堆石子数目的整数倍.最后谁能够把一堆石子取空谁就算赢. 比如初始的时候两堆石子的数目是25和7 25 7 –> 11 7 –> 4 7 –> 4 3 –> 1 3 –> 1 0原创 2016-09-21 13:57:38 · 1443 阅读 · 0 评论 -
【二分查找】[POJ2366]Sacrament of the sum
Description— The Brother of mine, the Head of Monastic Order wants to know tomorrow about the results long-term researches. He wants to see neither more nor less than the Summering Machine! Even moreov原创 2017-07-15 15:50:47 · 684 阅读 · 0 评论 -
【贪心】【树形DP】[POJ1463][HDU1054]Strategic game 战略游戏
DescriptionBob enjoys playing computer games, especially strategic games, but sometimes he cannot find the solution fast enough and then he is very sad. Now he has the following problem. He must defend原创 2017-07-15 16:59:42 · 831 阅读 · 1 评论 -
【动态规划】[UVA1025]A Spy in the Metro 城市里的间谍
DescriptionSecret agent Maria was sent to Algorithms City to carry out an especially dangerous mission. After several thrilling events we find her in the first station of Algorithms City Metro, examini原创 2017-07-17 17:16:26 · 2014 阅读 · 0 评论 -
【贪心】[POJ1328]Radar Installation
DescriptionAssume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. Each small island is a point locating in the sea side. And any radar installation, locati原创 2017-07-14 14:38:49 · 426 阅读 · 0 评论 -
【贪心】【模拟】[POJ1877]Flooded!
DescriptionTo enable homebuyers to estimate the cost of flood insurance, a real-estate firm provides clients with the elevation of each 10-meter by 10-meter square of land in regions where homes may原创 2017-07-14 12:33:31 · 600 阅读 · 0 评论 -
【贪心】【模拟】[POJ2709][HDU2730]Painter
DescriptionThe local toy store sells small fingerpainting kits with between three and twelve 50ml bottles of paint, each a different color. The paints are bright and fun to work with, and have the usef原创 2017-07-13 09:46:04 · 843 阅读 · 0 评论 -
[POJ1325]Machine Schedule 任务安排
DescriptionAs we all know, machine scheduling is a very classical problem in computer science and has been studied for a very long history. Scheduling problems differ widely in the nature of the constr原创 2017-04-17 13:18:31 · 991 阅读 · 0 评论 -
普通有序树的遍历
原题题目描述输入一棵普通有序树,输出该树的先根次序和后根次序。输入第1行:顶点个数n(1≤n≤200)以下含n行,其中第i行(1≤i≤n)的元素依次为结点i的数据值ai。以后各元素为结点i的儿子序列,以0结束。若ai后仅含一个0,则说明结点i为叶子。输出第1行:先根序第2行:后根序样例输入18 r 2 3 4 0 a 5 6 0 b 7 0 c 8 9 10 0 w 0 x 11 12原创 2017-01-20 16:43:39 · 4055 阅读 · 0 评论 -
栈stack
stack的概念栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 如上图,栈当中最先进去的最后出来。 这就是stack遵循原创 2017-04-28 14:00:22 · 844 阅读 · 0 评论 -
对拍
也许对大家来说,还不知道什么叫做对拍。其实对拍就是你有一个标准程序(或者暴力程序什么的,只要保证答案正确就行了)和一个答案错误的程序,在尝试很多次以后,肉眼debug不出来,也不知道哪里错了,错在哪一组数据。这时就不要在进行十分麻烦的手动测试,而是用对拍程序来找出错误的地方,及那组让你WA的数据。对拍,需要4个东西:你的错误程序,答案正确的程序,一个数据生成器,和一个对拍器。 WA程序和标程都呵呵原创 2017-03-21 18:05:10 · 758 阅读 · 0 评论 -
亲戚(附分析图)
一、原题亲戚(relation.cpp)时间限制: 1 Sec 内存限制: 64 MB题目描述若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易。 现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。 我们规定:如果x和y是亲戚,y和z是亲戚,那么x和z也是亲戚;如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。输入第一行:三个整数n,m,p,(n≤5000,m原创 2016-10-25 17:16:38 · 2797 阅读 · 1 评论 -
排座椅
一、原题排座椅(seat.cpp)时间限制: 1 Sec 内存限制: 64 MB题目描述上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳。同学们在教室中坐成了M行N列,坐在第i行第j列的同学的位置是(i,j),为了方便同学们进出,在教室中设置了K条横向的通道,L条纵原创 2016-11-01 13:32:37 · 2824 阅读 · 0 评论 -
火柴棒等式
一、原题题目描述给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:注意: 1. 加号与等号各自需要两根火柴棍 2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0) 3. n根火柴棍必须全部用上。输入一行,一个整数n(n≤24)。输出一行,表示能拼成的原创 2016-11-08 14:08:30 · 3759 阅读 · 0 评论