
数据结构与算法
文章平均质量分 85
大学学习,练习到的编程内容
To-
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c++的相关知识点
将使用两个代码说明c++的相关知识点:第一个:输入数据的每行包括若干个(至少一个)以空格隔开的整数,输出每行所有的整数和。#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<cstdlib>#include<sstr...原创 2018-07-30 13:42:35 · 304 阅读 · 0 评论 -
拓扑排序入门
拓扑排序性质:1拓扑排序只有在有向无环图中才能排出有效的序列,因此可以通过拓扑排序判断该图是否为有向有环图。2、如果输入的有向图中的点,不存在入度为0的点,则该有向图存在回路3、如果存在的入度为0的点大于一个,不妨碍拓扑排序 ,可以得到多种拓扑排序的结果拓扑排序的步骤:1.在有向图中选一个没有入度的顶点并且输出2.从图中删除所有和它有关的边3.重复上述两步,直至所有顶点输出...原创 2018-08-01 10:50:22 · 323 阅读 · 0 评论 -
数位DP
转载自:http://www.cnblogs.com/itlqs/p/5935308.html 数位DP其实是很灵活的,所以一定不要奢求一篇文章就会遍所有数位DP的题,这一篇只能是讲清楚一种情况,其他情况遇到再总结,在不断总结中慢慢体会这个思想,以后说不定就能达到一看到题目就能灵活运用的水平。(其实DP都是这样……) 这一篇要说的数位DP是一道最简单的数位DP:http://acm...转载 2018-08-15 10:26:44 · 154 阅读 · 0 评论 -
九连环
九连环是一种源于中国的传统智力游戏。如图所示,九个圆环套在一把“剑”上,并且互相牵连。游戏的目标是把九个圆环从“剑”上卸下。圆环的装卸需要遵守两个规则。第一个(最右边)环任何时候都可以装上或卸下。如果第k个环没有被卸下,且第k个环右边的所有环都被卸下,则第k+1个环(第k个环左边相邻的环)可以任意装上或卸下。与魔方的千变万化不同,解九连环的最优策略是唯一的。为简单起见,我们以“四连环...原创 2018-08-10 10:01:43 · 1175 阅读 · 0 评论 -
(大整数类的)利用struct的四则运算 c++
声明转载地址:https://blog.youkuaiyun.com/u014492609/article/details/40154833#include<iostream> #include<string> #include<iomanip> #include<algorithm> using namespace std; #defin...转载 2018-08-02 10:38:26 · 484 阅读 · 0 评论 -
lower_bound( )和upper_bound( )
lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。前提:在从小到大的排序数组中,lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。upp...转载 2018-07-22 10:19:46 · 344 阅读 · 0 评论 -
队列以及优先队列
1.队列队列的定义:头文件#include<queue>队列是一种先进先出的数据结构队列的声明queue<char> q; //声明字符类型queue<node > q; //声明结构体类型...........以及可以声明一些自定义的类型队列的操作入队列 s.push(x);出队列 s.pop();返...原创 2018-08-02 09:11:20 · 222 阅读 · 0 评论 -
Small Multiple(最短路)/// (双向队列)
题目原址:http://exam.upc.edu.cn/problem.php?cid=1368&pid=2题意:给一个数 k,问在k的倍数中,求各个位数相加之和的最小的一个k的倍数。看了题解才知道题意,我也来感叹一番,题解的用法真是巧妙啊 -_-因为是k的倍数,对与数x,只需要取x属于[1,k]之间,在数后加0~9来构成一个新数y,保证y%k==0,即是各个位数取和...原创 2018-08-04 11:01:58 · 370 阅读 · 0 评论 -
莫队基本知识
如果我们知道区间[L,R],就能在O(1)求出[L−1,R],[L+1,R],[L,R−1],[L,R+1]的话,那就可以用莫队算法了就是对在区间之间的查询时常常使用莫队莫队通常使用的模板:#include<string.h>#include<stdio.h>#include<iostream>#include<algorithm>...原创 2018-08-10 19:58:24 · 173 阅读 · 0 评论 -
小z的袜子
题目原址对于L,R的询问。设其中颜色为x,y,z..........的袜子的个数为a,b,c.......那么答案即为 (a*(a-1)/2+b*(b-1)/2+c*(c-1)/2....)/((R-L+1)*(R-L)/2)(a∗(a−1)/2+b∗(b−1)/2+c∗(c−1)/2....)/((R−L+1)∗(R−L)/2)化简得: (a^2+b^2+c^2+...x^2-(...原创 2018-08-11 10:05:43 · 195 阅读 · 0 评论 -
BSGS
BSGS算法 名拔山盖世算法,又称北上广深算法。 如果理解了模线性方程,A * x B (mod C) , BSGS 算法更好理解。求解A^x ≡ B mod N (N不一定是质数)的最小非负正整数解 先放几个同余定理的相关性质: 费马引理: 1 (mod p) 一、判断如果B==1,那么x=0,算法结束 如果B=1,就是...原创 2018-08-13 21:05:46 · 206 阅读 · 0 评论 -
记忆化搜索
转载原地址:https://blog.youkuaiyun.com/ivy_uu/article/details/52233489 总而言之就是递归加记录。记忆化的本质是: 先记录,后返回(记住:一定要记录,否则就是普通的递归); 如果表中有,则直接返回。1.斐波那契写法: 1 ,1 ,2 ,3 ,5 ,8 ,13…//结果 1134903170#include<iostr...转载 2018-08-15 13:00:05 · 211 阅读 · 0 评论 -
STL之栈(stack)(stack)的初步认识
1。’栈的定义: 所谓栈,就是一个符合“后进先出”规则的数据结构。 栈定义在<stack> 头文件中。2.栈的声明: stack <int> s; 栈内存放的是int型。 stack <float> s; 栈内存放的是float型。 stack <string>...原创 2018-08-01 09:51:59 · 4919 阅读 · 0 评论 -
缺失的数据范围 (优雅的二分,特别注意精度问题)
著名出题人小Q出过非常多的题目,在这个漫长的过程中他发现,确定题目的数据范围是非常痛苦的一件事。 每当思考完一道题目的时间效率,小Q就需要结合时限以及评测机配置来设置合理的数据范围。 因为确定数据范围是一件痛苦的事,小Q出了非常多的题目之后,都没有它们设置数据范围。对于一道题目,小Q会告诉你他的算法的时间复杂度为O(nalogbn),且蕴含在这个大O记号下的常数为1。同时,小Q还会告诉你评测机...原创 2018-06-05 11:50:00 · 617 阅读 · 2 评论 -
Patrol Robot(bfs+特别的条件判断)
A robot has to patrol around a rectangular area which is in a form of m x n grid (m rows and ncolumns). The rows are labeled from 1 to m. The columns are labeled from 1 to n. A cell (i, j)denotes the ...原创 2018-06-11 17:48:48 · 434 阅读 · 1 评论 -
Barareh on Fire
Barareh on Fire题目描述The Barareh village is on fire due to the attack of the virtual enemy. Several places are already on fire and the fire is spreading fast to other places. Khorzookhan who is原创 2018-04-23 19:19:37 · 263 阅读 · 0 评论 -
模线性方程
对于模线性方程:ax=b(mod n) 就是 (a*x)%n=b; 就是已知a,n,b,求解x的值。ax=b(mod n) a*x-n*y=b; a*x=b+n*y; 具有以下四个性质:如果ax=b (mod n) 有解,那么 gcdd | b (表示gcdd是b 的因子) ,其中gcdd=gcd(a,n); 可以证明: gcdd=gcd(a,n) ,就是...原创 2018-08-13 13:37:00 · 2013 阅读 · 0 评论 -
欧几里得算法和扩展欧几里得算法
欧几里的算法: 欧几里的算法又叫辗转相除法, 可以求解两数之间的最大公约数,当然最大公约数求出来了也可得最小公倍数。求 a 和 b 的最大公约数:假设有 x 满足 a = b * x + c;假设有a 和 b 的最大公约数是 k , 那么满足 k | b , 就满足 k | (b * x) , 因为 k | a ,所以就有 k | (a - b*x)因为 c=a-b*x...原创 2018-08-13 14:44:31 · 638 阅读 · 0 评论 -
模线性方程组
先说一个故事 说秦末,刘邦的将军韩信带领1500名士兵经历了一场战斗,战死四百余人。韩信为了清点人数让士兵站成三人一排,多出来两人;站成五人一排,多出来四人;站成七人一排,多出来六人。韩信立刻就知道了剩余人数为1049人。这就是著名的韩信点兵的故事,化成数学模型就是: 韩信是为了计算的是士兵的人数,那么我们设这个人数为x。三人成排,五人成排,七人成排,即x mod 3, x mod 5, ...原创 2018-08-13 15:29:57 · 1594 阅读 · 2 评论 -
倍增算法
白话讲解:转载原地址【序言】 我认为吧,所有能够优化复杂度的算法都是神奇的,所有能够化繁琐为形象的文字都是伟大的。一直觉得倍增算法是个很神奇的东西,所以决定写点东西纪念一下它。但是作为一个非常不称职的OIER,我非常讨厌在看别人的算法解析时整版的i,j,k等我看到鼠标就惯性移到右上角的符号语言,所以我想用最形象的方式来纪念它。 【一】 从前,有一只可...转载 2018-08-15 14:12:43 · 17358 阅读 · 17 评论 -
线段树从零开始
转载原址:https://blog.youkuaiyun.com/zearot/article/details/52280189一:为什么需要线段树?题目一: 10000个正整数,编号1到10000,用A[1],A[2],A[10000]表示。 修改:无 统计:1.编号从L到R的所有数之和为多少? 其中1<= L <= R <= 10000. 方法一:对于...转载 2018-08-16 12:57:15 · 402 阅读 · 0 评论 -
浅析线段树
转载原地址:https://blog.youkuaiyun.com/kerGH/article/details/52291692线段树是一种简单而实用的算法。 线段树是一棵二叉树,而且是一颗完全二叉树。顾名思义,线段树的每一个节点表示一个区间,如图: 以最大值问题为例: 给你一个数列,每次询问区间最大值是多少。maketree:根节点表示1~n的区间最大值,然后将这个区间分成两半,它的两个...转载 2018-08-19 08:43:15 · 218 阅读 · 0 评论 -
网络流基本知识
转载原地址{凸包的内容还欠整理先来侃侃一个月以前就想写写的网络流本文介绍网络流 网络流的算法 及其应用这些问题没事想想还是很有意思的}==================================================================================一.网络流:流&网络&割1.网络流问题(NetWo...转载 2018-08-20 14:39:50 · 479 阅读 · 0 评论 -
组合数的几种求法
直接求解的组合数,不需要进行取模运算。为了避免中间结果的溢出,仅使用一个简单的方法:n! / m! =(m+1)*(m+2)*......(n-1)* n;long long C(int n,int m){ if(m<n-m) m=n-m; long long ans=1; for(int i=m+1;i<=n;i++) ans*=i; for(int ...转载 2018-08-22 09:09:02 · 4151 阅读 · 0 评论 -
树和二叉树
1.树的基本概念: 树的度:所有结点的度当中,度数最大的。 叶子结点:度为0的结点分支结点:除了叶子节点以外,都是分支结点。内部结点:除了叶子节点,和根节点以外所有的结点。总结点为 N,总度数为K ,则 N = K +12.树的遍历遍历混乱的时候,可以假设空结点位置为 null ,也走一下前序(先根)遍历:1--2--6--7--3--4--8--9...转载 2018-08-09 10:48:11 · 324 阅读 · 2 评论 -
(大整数类的)手动模拟四则运算
如果运算非常大,就会出现很多整数溢出的情况,就需要用到高精度算法,使用数组来储存整数,手动模拟手算的方法来进行s四则运算。将大数储存在数组中,手动模拟四则运算:加法:利用竖式计算方法,注意进位,还有前导0#include<iostream> #include<string.h> #include<stdio.h> using n...原创 2018-08-02 10:32:21 · 442 阅读 · 0 评论 -
最完美的公式——欧拉公式
1. 引子看傅立叶变换的时候,一直奇怪,幂指数是怎么映射成三角函数的?学习了一下欧拉公式,果然很神奇,用到了自然常数e,圆周率π,虚数i,三角函数sin/cos,指数,还有泰勒展开.倒不是算法有多难,只是涉及基础太多,经常被卡住,总结如下.2. 泰勒展开泰勒展开是用多项式逼近原函数,这么做是因为像sin(x)这样的函数,如果代入x=4很难算出结果,但是将x的值代入形如f(x)=a0...转载 2018-08-22 09:45:49 · 32790 阅读 · 0 评论 -
Combine String(思维)
Problem DescriptionGiven three strings , and , your mission is to check whether is the combine string of and .A string is said to be the combine string of and if and only if can be broken into two sub...转载 2018-06-15 20:56:34 · 808 阅读 · 0 评论 -
庭师的利刃
题目:http://exam.upc.edu.cn/problem.php?cid=1388&pid=1题目描述作为白玉楼的庭师,妖梦虽然不会n刀流,但是却领悟了生命二刀流。然而我也是个剑的收藏者,家里屯着n把剑,每一把剑都有一个灵魂值a[i],由于一些剑之间可能有共鸣,所以我需要两把契合度最高的剑。据妖梦所说,两把编号为i,j剑的契合度为a[i] and a[j]。如何深得剑的灵...原创 2018-07-26 19:35:37 · 181 阅读 · 0 评论 -
ConvexScore
题目地址:http://exam.upc.edu.cn/problem.php?cid=1391&pid=0题意:给N个点,有N的一个子集s组成的一个凸多边形,对于该凸多边形,它的边上是由s个点连接而成,它的边上和内部共n个点,N中每个子集组成的凸多边形的贡献即是:2的n−|S|次幂。问对于这N个点来说所有能组成凸多边形的子集的贡献和是多少。结果模除998244353。参考...原创 2018-07-31 09:06:08 · 187 阅读 · 0 评论 -
Sandglass
题目地址:http://exam.upc.edu.cn/problem.php?cid=1391&pid=8题意:有A,B两个上下两个沙漏,共x克,按每秒一克的速度从上漏斗落到下漏斗会在r1,r2....rn时间处进行上下n次翻转,有m个问题,如果初始值是a,问在时间 t 时刻的A中沙漏还剩多少克沙子。初始A在上。分析:如果对每个问题一遍一遍的初始遍历,会超时。题目已经给出m个...原创 2018-07-30 13:25:45 · 183 阅读 · 0 评论 -
小奇遐想
题目链接:http://exam.upc.edu.cn/problem.php?cid=1390&pid=12题目描述:撷来一缕清风飘渺方知今日书信未到窗外三月天霁垂柳新长枝条风中鸟啼犹带欢笑——《清风醉梦》小奇望着青天中的悠悠白云,开始了无限的遐想,在它的视野中,恰好有n朵高度不同的白云排成一排,他想从左到右选出四朵白云a,b,c,d,使得h_a<h_b<h...原创 2018-08-07 09:37:11 · 298 阅读 · 0 评论 -
Happy Number(找规律)
[提交] [状态] [讨论版] [命题人:admin]题目描述Consider the following function f defined for any natural number n:f(n) is the number obtained by summing up the squares of the digits of n in decimal (or base-te...原创 2018-10-04 21:12:32 · 1233 阅读 · 0 评论 -
Choosing Ice Cream
You are standing in the supermarket in front of the freezers. You have a very tough task ahead of you: you have to choose what type of ice cream you want for after dinner that evening. After a while, ...原创 2018-07-23 10:20:51 · 134 阅读 · 0 评论 -
小奇画画
题目原址:http://exam.upc.edu.cn/problem.php?cid=1390&pid=10样例输入47 5 -9 11 11 9 0 20样例输出6题目大意:在无限大的平面上,给定圆心在x轴上的半径不一的圆,这些圆不想交,但是可以相切,问这些圆将平面分成了几部分。对于这些圆心在x轴上的圆,它们相切的切点也均在x轴上。对于一个圆只需判断从左端...原创 2018-07-28 09:07:27 · 372 阅读 · 6 评论 -
Origami
[提交] [状态] [讨论版] [命题人:admin]题目描述Master Grus is a famous origami (paper folding) artist, who is enthusiastic about exploring the possibility of origami art. For future creation, he is now planning...原创 2018-08-24 09:51:07 · 532 阅读 · 0 评论 -
Maximum Multiple
题意:T组数据,给出一个n,找出一组x, y, z,使得 n = x + y + z,且x * y * z 的乘积最大,输出最大乘积。思路:首先 1/3 + 1/3 + 1/3 = 1,所以,对于每个x,y,z 都不可能同时大于3,所以 x的取值只能是2、3。当x=2时,1/y + 1/z = 1/2,仅有 y = z = 4 和 y = 3,z = 6 ( 当 z > 6 时...原创 2018-07-24 10:33:55 · 244 阅读 · 0 评论 -
Jury Jeopardy
题目买描述:http://192.168.49.228/upload/file/20180717/20180717143746_97767.pdf样例输入3FFRBLFFFRFRBRFBFRBRFLFFRLFFFLBRFFFRFFFRFRFBRFLBRFRLFLFFR样例输出34 4####...###.#####7 5#####...####.###...原创 2018-07-26 20:42:44 · 272 阅读 · 0 评论 -
Formula
[提交] [状态] [讨论版] [命题人:admin]题目描述Tim is quite a bookworm. Each Saturday he goes to the local library and spends the whole day reading old books. He is mostly interested in ancient history, but fro...原创 2018-10-05 20:54:49 · 543 阅读 · 0 评论 -
异或序列(莫队)
题目原址使用莫队算法即可#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm> using namespace std;#define maxn 1000010#define ll long long inttypedef struct no...原创 2018-08-13 10:18:14 · 341 阅读 · 0 评论