- 博客(47)
- 资源 (2)
- 收藏
- 关注
原创 数学知识-模板
试除法判定质数 —— 模板题 AcWing 866. 试除法判定质数bool is_prime(int x){ if (x < 2) return false; for (int i = 2; i <= x / i; i ++ ) if (x % i == 0) return false; return true;...
2019-09-15 11:53:42 376
转载 记忆化搜索
引入记忆化搜索,是最容易写,也是效率较高的一种做法。虽然本质上是DFS这种搜索的思路,但其对搜索过的状态进行记录,从而完成对未知状态的推导,实际上也是一种DP的思想。例题-滑雪洛谷P1434 [SHOI2002]滑雪(传送门)题目描述Michael喜欢滑雪。这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道在一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是
2021-05-11 23:00:31 260
转载 【模板+讲解】二分答案
定义二分答案与二分查找类似,即对有着单调性的答案进行二分,大多数情况下用于求解满足某种条件下的最大(小)值。答案单调性答案的单调性大多数情况下可以转化为一个函数,其单调性证明多种多样,如下:移动石头的个数越多,答案越大(NOIP2015跳石头)。前i天的条件一定比前 i + 1 天条件更容易(NOIP2012借教室)。满足更少分配要求比满足更多的要求更容易(NOIP2010关押罪犯)。满足更大最大值比满足更小最大值的要求更容易(NOIP2015运输计划)。时间越长,越容易满足条件
2021-04-04 18:00:59 161
原创 P1102 A-B 数对 (二分查找)
题目描述出题是一件痛苦的事情!相同的题目看多了也会有审美疲劳,于是我舍弃了大家所熟悉的 A+B Problem,改用 A-B 了哈哈!好吧,题目是这样的:给出一串数以及一个数字C,要求计算出所有A - B = C 的数对的个数(不同位置的数字一样的数对算不同的数对)。输入格式输入共两行。第一行,两个整数N, C。第二行,N个整数,作为要求处理的那串数。输出格式一行,表示该串数中包含的满足A - B = C的数对的个数。输入输出样例输入 #1复制4...
2021-03-18 11:06:49 310
原创 洛谷P1135 奇怪的电梯
题目描述呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯。大楼的每一层楼都可以停电梯,而且第ii层楼(1 \le i \le N)(1≤i≤N)上有一个数字K_i(0 \le K_i \le N)Ki(0≤Ki≤N)。电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,相应的按钮就会失灵。例如:3, 3 ,1 ,2 ,53,3,1,2,5代表了K_i(K_1=3,K_2=3,…)Ki(K1=3,K2=3,…),从11楼开始。在11楼,按“上”可以到44
2021-01-12 09:31:44 231
原创 洛谷P1825 [USACO11OPEN]Corn Maze S
题目描述This past fall, Farmer John took the cows to visit a corn maze. But this wasn't just any corn maze: it featured several gravity-powered teleporter slides, which cause cows to teleport instantly from one point in the maze to another. The slides work i
2021-01-12 09:27:04 173
原创 信息学奥赛一本通1250:The Castle
【题目描述】一座城堡被分成m*n个方块(m≤50,n≤50),每个方块可有0~4堵墙(0表示无墙)。下面示出了建筑平面图:图中的加粗黑线代表墙。几个连通的方块组成房间,房间与房间之间一定是用黑线(墙)隔开的。现在要求你编一个程序,解决以下2个问题:1、该城堡中有多少个房间?2、最大的房间有多大?【输入】平面图用一个数字表示一个方块(第1个房间用二进制1011表示,0表示无东墙,用十进制11表示)。第一行一个整数m(m≤50),表示房子南北方向的长度。第二行一个整
2021-01-07 09:01:01 280
原创 信息学竞赛刷题建议历程
1、近10年NOIP普及组前三题——30道题练入门2、USACO全体——练基础算法3、近10年NOIP提高组全部试题——感受OI基础3.1、刘汝佳白书训练指南所有例题——打好基础4、开始SGU版切刷题——不管苦难与否直接扫荡过,这个过程一直伴随你到全国赛,最好题量破300~~5、HNOI近10年试题——感受省队难度6、WC,NOI近10年试题——感受国内金牌怎么修炼成的7、CTSC近10年比赛试题——触摸大神脉搏,感受国内顶级比赛难度。以上某些过程可以在BZOJ上完成。自
2020-06-26 07:27:31 442
转载 由数据范围反推算法复杂度以及算法内容
一般ACM或者笔试题的时间限制是1秒或2秒。在这种情况下,C++代码中的操作次数控制在 为最佳。下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择:n ≤ 30, 指数级别, dfs+剪枝,状态压缩dpn ≤ 100=> O(),floyd,dpn ≤ 1000=> O(),O(logn),dp,二分n ≤ 10000 => O(n∗),块状链表n ...
2020-02-19 14:37:19 160
原创 中缀表达式的值 ( 栈的运用 )
参考1:https://www.cnblogs.com/hantalk/p/8734511.html参考2:https://blog.csdn.net/Coder_Dacyuan/article/details/79941743题目描述模拟计算机处理算术表达式过程。从键盘上输入算术表达式串(只含+、-、×、÷运算符,允许含括号),输出算术表达式的值。设输入的表达式串是合法的,且只...
2019-12-26 15:20:22 730
原创 高精乘
#include <iostream>#include <vector>using namespace std;vector<int> mul(vector<int> A, vector<int> B){ vector<int> C(A.size() + B.size()); for (int ...
2019-12-23 16:16:18 362
原创 BFS
AcWing 847. 图中点的层次给定一个n个点m条边的有向图,图中可能存在重边和自环。所有边的长度都是1,点的编号为1~n。请你求出1号点到n号点的最短距离,如果从1号点无法走到n号点,输出-1。输入格式第一行包含两个整数n和m。接下来m行,每行包含两个整数a和b,表示存在一条从a走到b的长度为1的边。输出格式输出一个整数,表示1号点到n号点的最短距离。数据...
2019-12-22 11:15:59 136
原创 dfs 树的各种搜索
一、查找树根树根的入度为0。输入数据时记录即可。一本通:1336:【例3-1】找树根和孩子二、DFS序void dfs(int x){ a[++m]=x; //a数组存储dfs序 v[x]=1; //记录点x被访问过 for (int i=h[x]; i!=-1; i=ne[i]){ int y=...
2019-12-21 10:40:15 377
原创 树的重心
树的重心原题链接#include <bits/stdc++.h>using namespace std;const int N=100000+10;//因为是双向边int h[N],e[2*N],ne[2*N],idx,ans=N;bool b[N];//每个结点的访问标记int n;//加入a到b的一条边void add(int a,int b){ e...
2019-11-30 21:50:28 159
原创 栈和队列的模拟模板
栈 —— 模板题 AcWing 828. 模拟栈// tt表示栈顶int stk[N], tt = 0;// 向栈顶插入一个数stk[ ++ tt] = x;// 从栈顶弹出一个数tt -- ;// 栈顶的值stk[tt];// 判断栈是否为空if (tt > 0){}队列 —— 模板题 AcWing 829. 模拟队列1. 普通队列:// hh 表示队头...
2019-11-22 12:48:57 282
原创 C++ STL--stack的使用方法
、stackstack 模板类的定义在<stack>头文件中。stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型为deque。定义stack 对象的示例代码如下:stack<int> s1;stack<string> s2;stack 的基本操作有:入栈,如例:s.push...
2019-11-22 00:33:02 132
原创 C++ STL--queue 的使用方法
1、queuequeue 模板类的定义在<queue>头文件中。与stack 模板类很相似,queue 模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型。定义queue 对象的示例代码如下:queue<int> q1;queue<double> q2;queue 的基本操作有:入...
2019-11-22 00:30:58 171
原创 C++中的string常用函数用法
标准c++中string类函数介绍注意不是CString之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型...
2019-11-22 00:22:20 186
原创 C++ STL vector详解
一.解释: vector(向量):是一种顺序容器,事实上和数组差不多,但它比数组更优越。一般来说数组不能动态拓展,因此在程序运行的时候不是浪费内存,就是造成越界。而vector正好弥补了这个缺陷,它的特征是相当于可分配拓展的数组,它的随机访问快,在中间插入和删除慢,但在末端插入和删除快。二.用法: 1.头文件 #include <vector> 2.定义方式...
2019-11-22 00:17:23 120
原创 STL sort函数的用法
sort在STL库中是排序函数,有时冒泡、选择等O(N^2)算法会超时时,我们可以使用STL中的快速排序O(N log N)完成排序他有两种形式一个有三个参数,一个有两个参数,我们先讲讲两个参数的吧!sort的前两个参数是起始地址和中止地址如:sort(a,a+n) 表示对a[0] a[1] a[2] ... a[n-1] 排序代码如下:#include <algori...
2019-11-22 00:13:01 168
转载 STL中的二分查找函数
关于lower_bound( )和upper_bound( )的常见用法lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。在从小到大的排序数组中,lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返...
2019-11-22 00:07:52 125
原创 二分查找算法模板
二分模板题 --数的范围二分模板一共有两个,分别适用于不同情况。算法思路:假设目标值在闭区间[l, r]中, 每次将区间长度缩小一半,当l = r时,我们就找到了目标值。版本1当我们将区间[l, r]划分成[l, mid]和[mid + 1, r]时,其更新操作是r = mid或者l = mid + 1;,计算mid时不需要加1。——|<——————————|———————...
2019-11-14 00:09:28 325
原创 历年2000-2016NOIP提高组题目分析
年份 题目名称 考查内容 难度 2000-2016年NOIP提高组复赛题目 2000-A 进制转换 初等代数,找规律 ★ 2000-B 乘积最大 ...
2019-11-01 23:50:13 237
转载 NOIP考纲总结+NOIP考前经验谈
首先来一张图,很直观(截止到2012年数据)高精度 a.加法 b.减法 c.乘法(应该只会有高精乘单精) d.高精度除单精 (后面c,d考的可能性较小,应该只考a,b)排序算法 a.选择排序 b.插入排序 c.hash排序 d.归并排序(单纯的排序可能用不到,...
2019-11-01 23:47:24 238
原创 模板目录
数学知识-模板一维数组模拟单链表、邻接表和双链表--模板差分与前缀和模板二分查找模板高精度加法模板高精度减法模板栈和队列的模拟模板最短路算法模板...
2019-10-29 10:58:06 247
转载 一维数组模拟单链表、邻接表和双链表--模板
单链表 —— 模板题 AcWing 826. 单链表单链表----邻接表(用来在存储图和树)// head存储链表头//e[]存储节点的值//ne[]存储节点的next指针//idx表示当前用到了哪个节点int head, e[N], ne[N], idx;// 初始化void init(){ head = -1; idx = 0;}// 在链表头插...
2019-10-25 15:11:08 458
原创 最短路算法模板
我们只需考虑有向图上的算法,因为无向图是特殊的有向图。我们可以将所有无向边 u↔v,都拆分成两条有向边:u←v 和 u→v。为了方便叙述,我们做如下约定:n表示图中点数,m表示图中边数。图的存储图一般有两种存储方式:邻接矩阵。开个二维数组,g[i][j] 表示点 i和点 j 之间的边权。邻接表。邻接表有两种常用写法,我推荐第二种,代码更简洁,效率也更高,后面有代码模板:(1...
2019-10-24 15:05:02 156
原创 表达式前后缀表达形式
这里我给出一个中缀表达式~a+b*c-(d+e)第一步:按照运算符的优先级对所有的运算单位加括号~ 式子变成拉:((a+(b*c))-(d+e)) 第二步:转换前缀与后缀表达式 前缀:把运算符号移动到对应的括号前面 则变成了:-( +(a *(bc)) +(de)) 把括号去掉:-+a*bc+de前缀式子出现 后缀:把运算符号移动到对应的括号后面 则变成了:...
2019-10-15 11:59:54 488 1
原创 潜伏者 NOIP2009
题目描述 (https://www.luogu.org/problem/P1071)R国和S国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动。历尽艰险后,潜伏于SS国的RR国间谍小CC终于摸清了S国军用密码的编码规则:1.S国军方内部欲发送的原信息经过加密后在网络上发送,原信息的内容与加密后所得的内容均由大写字母‘AA’-‘ZZ’构成(无空格等其他字符)。2.S国对于...
2019-09-28 22:12:35 157
原创 Hankson 的趣味题(最大公约数和最小公倍数)
原题链接:https://www.luogu.org/problem/P1072Hanks 博士是 BT(Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson。现在,刚刚放学回家的 Hankson 正在思考一个有趣的问题。今天在课堂上,老师讲解了如何求两个正整数c1和 c2的最大公约数和最小公倍数。现在 Hankson 认为自己已经熟练地掌握了这些知识,他开始...
2019-09-28 21:44:56 228
原创 高精度减法模板
题目描述 (原题链接)给定两个正整数,计算它们的差。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的差。数据范围1≤整数长度≤样例输入样例:3211输出样例:21(大整数减法) O(n)#include<bits/stdc++.h>using namespace std;//判断A>=Bbool cmp(vec...
2019-09-22 23:11:41 138
原创 高精度加法模板
题目描述 (原题链接)给定两个正整数,计算它们的和。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的和。数据范围1≤整数长度≤100000样例输入样例:1223输出样例:35(高精度加法) O(n)很明显 输入会超过64位 也就是即使long long 类型也不能进行常规加法那么输入就是用string 接收字符串 来模拟加法#inclu...
2019-09-22 22:46:12 225
原创 Acwing算法基础课知识点
知识点基础算法 —— 代码模板链接 常用代码模板1——基础算法排序二分高精度前缀和与差分双指针算法位运算离散化区间合并数据结构 —— 代码模板链接 常用代码模板2——数据结构链表与邻接表:树与图的存储栈与队列:单调队列、单调栈kmpTrie并查集堆Hash表C++ STL使用技巧搜索与图论 —— 代码模板链接 常用代码模板3——搜索与图论DFS与BF...
2019-09-22 22:17:21 7418
原创 差分与前缀和模板
一维前缀和—— 模板题 AcWing 795. 前缀和S[i] = a[1] + a[2] + ... a[i]for (int i=1;i<=n;i++) S[i]=S[i-1]+a[i];则a[l] + ... + a[r] = S[r] - S[l - 1]二维前缀和 —— 模板题 AcWing 796. 子矩阵的和S[i, j] = 第i行j列格子左...
2019-09-22 19:45:51 514 2
原创 DFS和BFS
BFS广度优先搜索1. 空间是2^n,是指数级别的 空间很大2.不会有爆栈的风险3.可以搜最短 、最小BFS算法,即广度优先搜索,它和深度优先搜索恰恰相反,它是一种适用于图型结构的搜索,它和数据结构队列紧密向量.对于这种算法而言,它主要的步骤大致如下所示:1. 找到当前可以拓展的点,将它放入候选队列之中.2. 每次选取候选队列的队头,作为当前状态.BFS性质...
2019-09-14 20:09:39 151
原创 树状数组之区间修改区间查询----1548【例 2】A Simple Problem with Integers 题解
1548:例 2】A Simple Problem with Integers时间限制: 5000 ms 内存限制: 524288 KB【题目描述】这是一道模板题。给定数列a[1],a[2],…,a[n,你需要依次进行q个操作,操作有两类:1、lrx:给定l,r,x,对于所有i∈[l,r],将a[i]加上x(换言之,将a[l]...
2019-09-04 15:13:44 709
转载 树状数组进阶(区间更新+单点查询,区间更新+区间查询)
https://blog.csdn.net/qq_39562952/article/details/81298043https://www.cnblogs.com/RabbitHu/p/BIT.html
2019-09-01 10:08:12 184
转载 差分数组
现在有数组a[7]int a[7];a[0]=1;a[1]=2;a[2]=4;a[3]=5;a[4]=12a[5]=34;a[6]=123;a[7]=3;如果要把a[0]-a[4]都加一,最朴素的方法就是a[0]++;a[1]++;a[2]++;a[3]++;a[4]++;时间复杂度为O(n)打字打着都很费力但是如果先有一个神奇的差分数组d[7...
2019-08-15 20:59:30 104
原创 线段树单点修改,区间查询的模板题
1547:【 例 1】区间和 (信息学一本通网站)时间限制: 1000 ms 内存限制: 524288 KB提交数: 1175 通过数: 318【题目描述】给定一数列,规定有两种操作,一是修改某个元素,二是求区间的连续和。【输入】输入数据第一行包含两个正整数n,m(n≤100000,m≤500000),以下是m行,每行有三个正整数k,a,b(k=...
2019-08-15 18:35:27 489
转载 unsigned long long类型与long long类型
最近做题的时候,经常遇到范围是2^63,取模2^64的这种题目。遇到这种限制条件时就要想到用unsigned long long类型。可以简洁地声明为typedef unsigned long long ull。这样,如果ull类型的整数溢出了,就相当于取模2^64了。因为ull的范围是[0,2^64-1]。而ll的范围是[-2^63,2^63-1],因为有符号的第63位表示“正负”而不表...
2019-08-13 08:35:03 1903
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人