- 博客(24)
- 收藏
- 关注
原创 欧几里得算法
设:gcd(a, b)=kgcd(a, b)=kgcd(a, \ b) = k a=kc, b=kd(c∈N∗,d∈N∗)a=kc, b=kd(c∈N∗,d∈N∗)a = kc,\ b = kd(c∈N^*, d∈N^*) ∴c、d互质(c、d的公约数只有1)且c>d∴c、d互质(c、d的公约数只有1)且c>d∴c、d互质(c、d的公约数只有...
2018-05-11 10:14:13 425
原创 关于lowbit
简单介绍lowbit是二进制中比较常用的一个函数,它的作用是求 一个数(二进制下)从后向前数直到遇到第一个’1’时的数 见下表: 十进制 二进制 lowbit 1 1 1 2 10 2 3 11 1 4 100 4 5 101 1 6 110 2 7 111 ...
2018-03-17 15:15:13 783
原创 欧拉筛
说明:很快很快的线性筛O(n)代码#include<iostream>#include<cstdio>#include<cstring>using namespace std;#define For(i, l, r) for(int i = l; i <= r; ++i)const int N = 10000001;int n...
2018-02-11 11:27:56 248
原创 线段树Segment tree
//定义一个宏,使用位运算提速#define lch (o<<1)#define rch (o<<1|1)建树单点修改区间查询区间修改 单点查询代码:#include<iostream>#include<cstdio>#include<algorithm>using n...
2018-02-10 13:38:44 316
原创 洛谷 p2678 跳石头
题目题目描述这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有 N 块岩石(不含起点和终 点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达 终点。为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳 跃距离尽可能长。由于预算限制,组委会至多从起点和终点之间移走...
2018-02-09 19:35:18 421
原创 深入学习快速幂
快速幂给定a, b, p,求a^b % p的值 普通算法需要O(n)的复杂度,快速幂通过二分将时间复杂度将至O(logn)。题目链接:洛谷 p1226Ac代码:#include<iostream>using namespace std;int a, b, p;int FastPow(int a, int b, int p) { int ret =...
2018-02-09 11:30:32 261
原创 洛谷 p1601 A+B Promblem(高精)
来一发重载运算符的高精度,重载运算符的练手题。重载运算符的高精度看起来代码长,但是很实用,可以支持sort、map等操作,特别特别方便。用的是vector,其实不比数组慢多少,而且动态数组不用根据内存手动调数组大小。Ac代码:#include#include#include#include#include #includeusing namespace std;
2018-02-02 20:51:22 373
原创 第一个模板
人生中第一次写模板,值得纪念。 一个没有什么用的模板——实现四个数的两两相加#includeusing namespace std;template typename T>//所有用到了模板的函数、结构体、类之前都要加上这一句struct Point{ T x, y; Point(T x=0, T y=0) { this->x = x; this-
2018-01-26 12:31:23 286
原创 关于深度优先搜索的练习
对于dfs(深搜)一窍不通的蒟蒻打算改变自己了..简单的选数【例1】素数环【题目描述】从1到20这20个数摆成一个环,要求相邻的两个数的和是一个素数。 【算法分析】 非常明显,这是一道回溯的题目。从1开始,每个空位有20种可能,只要填进去的数合法:与前面的数不相同;与左边相邻 的数的和是一个素数。第20个数还要判断和第1个数的和是否素数。 【算法流程】
2018-01-16 22:38:57 1815
原创 Openjudge 7940:查找最接近的元素
题目描述在一个非降序列中,查找与给定值最接近的元素。输入第一行包含一个整数n,为非降序列长度。1 第二行包含n个整数,为非降序列各元素。所有元素的大小均在0-1,000,000,000之间。 第三行包含一个整数m,为要询问的给定值个数。1 接下来m行,每行一个整数,为要询问最接近元素的给定值。所有给定值的大小均在0-1,000,000,000之间。输出m行,每
2018-01-09 22:31:05 1890
原创 Openjudge 1759:最长上升子序列
题目描述输入输出输入输出样例On2算法分析状态转移方程初始化Ac代码Onlogn算法分析初始化关于二分查找Ac代码一个有助于更好地理解这个算法的调试附题目总时间限制: 2000ms 内存限制: 65536kB描述一个数的序列bi,当b1 你的任务,就是对于给定的序列,求出最长上升子序列的长度。输入
2018-01-07 19:42:33 1192 1
原创 洛谷 p1865 区间质数个数
题目题目描述输入输出格式输入输出样例说明方法一 线性筛 前缀和方法二 欧拉筛 线段树题目叫做A % B Promblem其实是为了吸引我们点进来..题目描述:区间质数个数输入输出格式输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格式: 对于每次询问输出个数 t,如l或r∉[1,m]输出 Crossing the line输入输
2017-12-25 22:18:33 388
原创 洛谷 p1147 连续自然数和
题目描述对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M。例子:1998+1999+2000+2001+2002 = 10000,所以从1998到2002的一个自然数段为M=10000的一个解。输入输出格式输入格式: 包含一个整数的单独一行给出M的值(10 <= M <= 2,000,000)。输出格式: 每行两个自然数,给出一个满足条件的连续自然数段中的第一
2017-12-23 19:49:51 499
原创 洛谷 p1208 混合牛奶
题目描述由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要。帮助Marry乳业找到最优的牛奶采购方案。Marry乳业从一些奶农手中采购牛奶,并且每一位奶农为乳制品加工企业提供的价格是不同的。此外,就像每头奶牛每天只能挤出固定数量的奶,每位奶农每天能提供的牛奶数量是一定的。每天Marry乳业可以从奶农手中采购到小于或者等于奶农最大产量的整数数量的牛奶。给出Marry乳业每天对牛奶的需求量
2017-12-23 10:53:43 476
原创 读入读出优化
有些题目追求高性能(比如说Θ(nlogn)) 这个时候根据情况使用线段树、树状数组、记忆化搜索或者搜索剪枝很重要,但是不要忘记快读 一般来说scanf和printf的速度已经很令人满意了,虽说比不上pascal里面的read… 在读入大量数据的时,比如10^7个int型的整数,scanf也显得力不从心 ——快读闪亮登场—— getchar()的速度很快了吧,那就用它一个个的读取字符,再把他
2017-12-21 22:37:18 216
原创 算法模板之堆-优先队列
堆的定义 堆结构是一种数组对象,可以被视为一颗完全二叉树。 树中的每个节点与数组中存放该节点中值的那个元素相对应。 由上图不难看出 Father(i)=⌊i/2⌋Father(i)=⌊i/2⌋ leftChild(i)=i∗2leftChild(i)=i*2 rightChild(i)=i∗2+1rightChild(i)=i*2+1 当然也可以用位运算来加快速度 Fathe
2017-12-09 19:59:30 281
原创 vijos 弱弱的战壕(树状数组)
描述永恒和mx正在玩一个即时战略游戏,名字嘛~~恕本人记性不好,忘了-_-b。 mx在他的基地附近建立了n个战壕,每个战壕都是一个独立的作战单位,射程可以达到无限(“mx不赢定了?!?”永恒ftING…@_@)。 但是,战壕有一个弱点,就是只能攻击它的左下方,说白了就是横纵坐标都不大于它的点(mx:“我的战壕为什么这么菜”ToT)。这样,永恒就可以从别的地方进攻摧毁战壕,从而消灭mx的部队。
2017-12-09 17:09:19 252
原创 2017noip普及组 T2 librian
copy from luogu:P3955 图书管理员题目描述图书馆中每本书都有一个图书编码,可以用于快速检索图书,这个图书编码是一个 正整数。 每位借书的读者手中有一个需求码,这个需求码也是一个正整数。如果一本书的图 书编码恰好以读者的需求码结尾,那么这本书就是这位读者所需要的。 小 D 刚刚当上图书馆的管理员,她知道图书馆里所有书的图书编码,她请你帮她写 一个程序,对于每一位读者,求出他所需要的
2017-12-04 21:42:20 331
原创 Openjudge 1.13 50树根
50:数根数根可以通过把一个数的各个位上的数字加起来得到。如果得到的数是一位数,那么这个数就是数根。如果结果是两位数或者包括更多位的数字,那么再把这些数字加起来。如此进行下去,直到得到是一位数为止。比如,对于24来说,把2和4相加得到6,由于6是一位数,因此6是24的数根。再比如39,把3和9加起来得到12,由于12不是一位数,因此还得把1和2加起来,最后得到3,这是一个一位数,因此3是39的数根。
2017-12-03 20:21:20 441
原创 洛谷 p1403 [AHOI2005]约数研究
题目描述科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能。由于在去年一年的辛苦工作取得了不错的成绩,小联被允许用“Samuel II”进行数学研究。小联最近在研究和约数有关的问题,他统计每个正数N的约数的个数,并以f(N)来表示。例如12的约数有1、2、3、4、6、12。因此f(12)=6。下表给出了一些f(N)的取值:
2017-12-03 18:45:16 418
原创 OpenJudge 1975 Median Weight Bead
描述 There are N beads which of the same shape and size, but with different weights. N is an odd number and the beads are labeled as 1, 2, …, N. Your task is to find the bead whose weight is median (the
2017-11-23 19:34:08 216
原创 Codevs 2455 繁忙的都市
题目描述 Description 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造。城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口之间最多有一条道路相连接。这些道路是双向的,且把所有的交叉路口直接或间接的连接起来了。每条道路都有一个分值,分值越小表示这个道路越繁忙,越需要进行改造。但是市政府的资金有限,市
2017-11-16 19:56:20 212
原创 洛谷 p1086 花生采摘
题目描述鲁宾逊先生有一只宠物猴,名叫多多。这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!――熊字”。鲁宾逊先生和多多都很开心,因为花生正是他们的最爱。在告示牌背后,路边真的有一块花生田,花生植株整齐地排列成矩形网格(如图1)。有经验的多多一眼就能看出,每棵花生植株下的花生有多少。为了训练多多的算术,鲁宾逊先生说:“你先找出花生最多的植株,去采摘
2017-11-08 22:35:36 741
转载 欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2017-11-08 22:22:51 126
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人