![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM笔记
文章平均质量分 51
Witness2020
一团漫步的灵魂
展开
-
算法时间复杂度和空间复杂度
(1) 复杂度 为了描述一个算法的优劣,我们引入算法时间复杂度和空间复杂度的概念。 时间复杂度:一个算法主要运算的次数,用大 O 表示。通常表示时间复杂度时,我们只保留数量级最大的 项,并忽略该项的系数。 例如某算法,赋值做了 3n3+n2+8 次,则认为它的时间复杂度为 O(n3);另一算法的主要运算是比较,做 了 4×2n+2n4+700 次,则认为它的时间复杂度为 O(2n)。 当然,如果有...转载 2018-07-09 14:43:55 · 2375 阅读 · 0 评论 -
C++ 快速幂
快速幂就是在普通幂运算的基础上尽量减少乘法运算的次数:例如(7^7)%4可以看为((7%4)^7)%4(3^7)%4(((3*3)%4)^6)%4(1^6)%4(1^(2*3))%4 // 就像将(7^16)变成(49^8)(1^3)%4.......下面是对应代码 :a为底数,b是指数,m是要准备取模的数快速幂取模就是在快速幂的基础上每步取模!l...原创 2018-09-20 20:24:00 · 1642 阅读 · 0 评论 -
康拓展开式
X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0!。这就是康托展开式,该展开式是用来求一个排列在其全部排列序列中是在第几个的位置。举个例子:1324是{1,2,3,4}排列数中第几个大的数:第一...原创 2018-09-14 18:17:24 · 253 阅读 · 0 评论 -
STL vector/set集合运算
经常用的集合运算有四种:求交集 set_intersection(a.begin(),a.end(),b.begin(),b.end(),inserter(c,c.begin())求并集 set_union(a.begin(),a.end(),b.begin(),b.end(),inserter(c,c.begin())求差集 set_difference(a.begin(),a...原创 2018-09-18 19:31:47 · 371 阅读 · 0 评论 -
筛选法求素数
普通筛法--埃拉托斯特尼筛法基本定理:任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积从此定理出发,可得出以下求素数的方法:#include<iostream>#include<cstring>using namespace std;int main(){ int n, tot = 0; int prime[1000...原创 2018-09-09 08:39:12 · 197 阅读 · 0 评论 -
十进制数转换为八进制(栈实现)
输入一个十进制数值,将其转换为相应的八进制(四进制二进制同理),完全可以利用栈先进后出的特性来实现,栈容器在C++中有现成模板可以直接使用(也可以手工实现使用函数调用)。#include<iostream>#include<stack>using namespace std;int num;int main(){ while (scanf("%d", &a...原创 2018-08-30 15:02:32 · 19512 阅读 · 1 评论 -
C++ cin.get及cin.getline的用法
C++中常用的输入有cin和scanf,但是它们的是以空白字符(空格符,回车符,制表符)作为分割字符的,如果涉及到整行的输入模式就不能在考虑cin和scanf了。1. cin.get()从指定的输入流中提取一个字符,函数返回值是该字符。读取失败会返回EOFint main(){ char c; while(c=cin.get()!=EOF) //或者while(...原创 2018-09-01 14:14:24 · 711 阅读 · 0 评论 -
C/C++ 浮点数比较问题
C/C++ 浮点数比较是否相等时,有些细节必须要意识到,,例如下面的代码:#include <iostream>using namespace std;void main(){ double epsilon=0.001; double d1=2.334; double d2=2.335; cout << "epsilon is: ...转载 2018-07-09 14:43:44 · 13734 阅读 · 0 评论 -
map的基本操作
C++ map的基本操作和使用 来源:(http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html) - C++ map的基本操作和使用_Live_新浪博客 Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数; ...转载 2018-07-25 09:50:44 · 1855 阅读 · 0 评论 -
C语言中用循环打印各种图形
C语言中用循环可以打印出各种图形1 直角三角形(靠右直立):部分代码 int i,j; for (i=0; i<6; i++) { for (j=6;j>i ;j-- ) { printf(""); } for (j=0; j<=i; j++) { printf("*");...原创 2017-11-01 21:29:33 · 26923 阅读 · 0 评论 -
借助vector容器对结构体数据进行sort快排
/* P1068 分数线划定题目描述世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定,即如果计划录取m名志愿者,则面试分数线为排名第m*150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。现在就请你编写程序划定面试分数...原创 2018-03-03 15:52:10 · 383 阅读 · 0 评论 -
母函数问题
在数学中,某个序列的母函数(Generating function,又称生成函数)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用母函数解决问题的方法称为母函数方法。先看两个例子:第一种:有1克、2克、3克、4克的砝码各一枚,能称出哪几种重量?每种重量各有几种可能方案?考虑用母函数来解决这个问题:我们假设x表示砝码,x的指数表示砝码的重量,这样:1个1克的...原创 2018-07-23 16:50:30 · 164 阅读 · 0 评论 -
错位排序
定义:错排问题,是组合数学中的问题之一。考虑一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排。 n个元素的错排数记为D(n)。错排通项公式推导:一共有n个元素进行错排。第一步:把第n个元素放在k位置上,一共有n-1种放法。第二步:选择第k个元素去放,分两种情况:第一种k放置在原n的位置,那么剩下的n-2个元素错排可能为D(n-...原创 2018-07-17 15:35:24 · 4296 阅读 · 0 评论 -
编程内存分区问题
在程序没有执行前,有几个内存分区已经确定但是没有加载内存,只有程序运行时才加载内存:①text代码区:只读②data区:存放初始化的全局变量,static常量,文字常量③bss区:存放未初始化的全局变量、static常量当程序运行时首先根据确定的内存分区加载内存,然后额外加载两个区:④栈区stack:存放普通局部变量和子函数,自动管理内存⑤堆区heap:手动申请释放空间,容量远大于栈区在程序中每一...原创 2018-07-11 14:41:19 · 186 阅读 · 0 评论 -
前缀和的问题
例题之一:已知两个正整数a和b,求在a与b之间(包含a和b)的所有整数的十进制表示中1出现的次数。多组数据(不超过100000组),每组数据2个整数a,b.(1≤a,b≤1000000).每组数据的答案占一行。Sample Input1 1010 1002 1Sample Output2201如果使用暴力求解法必然会超时。如果使用前缀和的思想就是开一个s...原创 2018-07-16 19:09:30 · 1113 阅读 · 0 评论 -
高精度运算—利用数组模拟
大整数进行高精度运算,一个基础的方法是开数组进行运算模拟。高精度加法运算:#include<iostream>#include<string>using namespace std;string s1, s2;longlong a[100000], b[100000], c[100000];int main(){ cin >> s1 &g...原创 2018-07-09 16:27:32 · 986 阅读 · 0 评论 -
KMP算法
KMP算法是解决字符串匹配问题的经典算法,相比较于二重循环暴力破解法,KMP匹配算法的效率大大提高。暴力破解法的第一重循环是主串的i指针遍历主串的所有位置作为基点的情况,第二重循环是模式串的j指针与i指针依次比较各自指向的元素是否相等,如果不相等则i指针回溯到新的基点开始与j重新比较。直到主串剩余元素个数小于模式串长度还没有找的,则说明无法完成匹配。明显暴力法会做出许多浪费的操作,KMP算...原创 2018-10-23 19:39:26 · 120 阅读 · 0 评论