自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小小小草儿的博客哟

追梦,启航

  • 博客(16)
  • 问答 (2)
  • 收藏
  • 关注

原创 【ACM】i++与++i的区别

1.说明首先这里需要引入两个名词就是左值引用和右值引用。i++返回原来的值,但是++i返回加一后的值。++i可以作为左值,但是i++不可以。下面给出几个例子:int i=0;int *p2 = &(++i);//正确int *p1 = &(i++); //错误++i = 1;//正确i++ = 1;//错误下面给出++i和i++的实现机制:(以下代码来自底层实现)// 前缀形式(++i):i

2016-11-27 16:21:52 361

原创 【ACM】二分查找

二分查找是一种效率非常高的算法。 在头文件< algorithm>中已经有二分查找的实现。 而且binary_search()的使用一般是和STL配套使用。(后面有关于STL无序容器的排序函数书写讲解)一:STL二分查找1.binary_search()函数该函数的功能是查看某一值在已经排好的序列中是否存在,当存在的时候返回true,否则返回false。返回值是一个bool类型,也说明了bina

2016-11-27 15:25:54 783

原创 【C++学习】变量和存储区

存储区一般分为以下五种: 栈区: 由编译器在需要的时候进行分配,不需要的时候会自动清空,栈区一般比较小,对于较大的数组不应该放入栈区。 堆区: 由new分配的空间,他们的释放由程序中的语句进行操作。由delete释放,如果没有释放,就会在程序结束时自动回收。 代码区: 存放代码的二进制代码。 全局(静态)存储区: 全局变量和静态变量被分配到同一块内存中。 常量存储区: 存放的数据

2016-11-25 00:54:51 460

原创 【ACM】Map

1.map简介 map的特性是,所有的元素都会根据元素的键值自动被排序,map的所有元素都是pair类型,同时拥有键值和实值。pair的第一元素被看做键值(也就是说是按照第一元素进行排序的),第二元素被看做实值。map不允许两个元素具有相同的键值。在map中是不可以通过map的迭代器改变map的键值,因为map元素的键值关系到map元素的排列规则,任意的改变map元素的键值会严重破坏map组...

2016-11-20 19:13:52 695

原创 【ACM】Pair

首先我们要知道少加载一点头文件是减少运行时间的主要途径之一。 C++中的pair模板包含在头文件 utility 中。一个pair保存两个数据成员。类似容器,pair是一个用来生成特定类型的模板。当创建一个pair的时候,必须提供两个类型名,此时pair的数据成员将具有对应的类型。pair&amp;amp;lt;string, string&amp;amp;gt; p1;pair&amp;amp;lt;string, size_...

2016-11-18 21:13:36 496

原创 【ACM】求素数的多种方法

素数:质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。下面给出求素数的几种不同的算法。 假设我们给定一位数N,现在判断这个数字是不是素数。方法一: 从2开始遍历到N-1 。bool isprime(int x){ if(x == 1) return false;

2016-11-17 20:21:34 1254

原创 【ACM】矩阵快速幂+快速幂+费马小定理

一:矩阵快速幂算法 矩阵快速幂的思想和数的快速幂的思想是一样的,但是需要自己实现矩阵的乘法,然后套用数的快速幂模板即可。 核心: 难点在于构造矩阵,一般用于可以推出递推公式的题目,发现时间复杂度为O(n),因此可以构造一个矩阵,利用矩阵快速幂算法把时间复杂度降低到O(logn)。 矩阵的快速幂算法是用于高效的计算矩阵的高次方的。比如矩阵A*A*A*A*A*A可以变为(A*A)(A*A)(A*...

2016-11-08 19:17:17 1134

原创 【ACM】区间DP(石子合并)

石子合并是经典的动态规划,有以下3种题型。 1.有N堆石子,现在要将石子有序的合并成一堆,规定如下:每次只能移动任意的2堆石子合并,合并花费是新合成的一堆石子的数量。现在求将这N堆石子合并为一堆的总花费最小(或最大)。分析:贪心算法,每次选择最小(或最大)的两堆合并,实际上是哈夫曼的变形。2.有N堆石子,现在要将石子有序的合并成一堆,规定如下:每次只能合并相邻的2堆石子,合并花费是新合成的一堆石子

2016-11-06 11:19:19 629

原创 【ACM】OJ常见错误原因(随时更新)

Waiting:正在评测程序。 Compiling:正在编译程序。 Accepted:程序正确。 Wrong Answer:程序运行结果与正确结果不一样。 Time Limit Exceeded:运行时间超出了要求。 Memory Limit Exceeded:程序运行占用内存超出了标准。 Runtime Error:程序在运行的时候异常退出。 Compile Error:编译错误。(

2016-11-05 17:23:56 4425

转载 【ACM】0-1背包问题

0-1背包问题中的0.1一般表示物品取或者不取的2种状态。这是其他背包问题的基础。

2016-11-05 00:12:55 676

原创 【ACM】INT_MAX和INT_MIN注意事项

INT_MIN在标准头文件limits.h中定义。#define INT_MAX 2147483647#define INT_MIN (-INT_MAX - 1)在C/C++语言中,不能够直接使用-2147483648来代替最小负数,因为这不是一个数字,而是一个表达式。表达式的意思是对整数21473648取负,但是2147483648已经溢出了int的上限,所以定义为(-INT_MAX -1)。C

2016-11-04 19:36:18 29293

原创 【ACM】最大连续子段和

最大连续子段和定义 给定n个整数(可能为负数)组成的序列a[1…n],求该序列中形如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的数字均为0的时候,最大子段和定义为0。 方法一: 在不考虑时间的情况下,使用循环暴力的方法,求出序列的所有子段和。该方法会有3层循环嵌套。时间复杂度为O(n^3)。#include &amp;lt;cstdio&amp;gt;#include &amp;lt...

2016-11-04 17:08:49 749

原创 【ACM】冒泡排序

Bubble Sort原理:相邻的2个数进行比较。 每次经过一趟比较,最大数或者最小数就会被交换到最后一位。for(int i=0;i&amp;lt;len-1;i++) for(int j=i;j&amp;lt;len;j++) if(大小比较) 交换;如果是按照从小到大的顺序进行排序,只需要把前n-1个大的数归为到后面的n-1位即可,所以外层循环只需要到l...

2016-11-04 09:31:58 555

原创 【ACM】acm文件输入输出测试小技巧

一:文件测试数据代码如下:#include &amp;lt;cstdio&amp;gt;#include &amp;lt;algorithm&amp;gt;#include &amp;lt;iostream&amp;gt;using namespace std;int main(){ freopen(&quot;in.txt&quot;,&quot;r&quot;,stdin);

2016-11-02 21:25:02 3143

原创 【ACM】string和stringstream使用

一:stringstring 是c++ 提供的字符串类型,不限长度。头文件#include &amp;lt; string&amp;gt; 声明: string s; string s=”china”; 和char数组不同的是string对象中不含\0,也就是说如果是一个三个字符的字符串,在string s[]中仅仅到s[2]就会结束。操作 string对象声明 ...

2016-11-02 19:25:21 637

原创 【ACM】stringstream切割字符串

stringstream切割字符串 string num; stringstream ssnum; getline(cin,num); ssnum.clear(); ssnum.str(num); int i=0; while(1) { ssnum&amp;gt;&amp;gt;a[i++]; if(ssnu...

2016-11-02 19:12:01 799

空空如也

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

TA关注的人

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