Stein算法
一种在高精度下求最大公约数的算法——stein算法。
比较常规的gcd算法有辗转相除法和更相减损术,但是后者过慢,前者不利于高精度(因为有大量的除法取余运算,对高精度十分不友好),于是需要一种更高效又易于操作的算法。这便是stein算法,它是更相减损术的改进。
一种在高精度下求最大公约数的算法——stein算法。
比较常规的gcd算法有辗转相除法和更相减损术,但是后者过慢,前者不利于高精度(因为有大量的除法取余运算,对高精度十分不友好),于是需要一种更高效又易于操作的算法。这便是stein算法,它是更相减损术的改进。
难度:省选/NOI-
农夫约翰决定给站在一条线上的N(1 ≤ N ≤ 200,000)头奶牛制作一张全家福照片,N头奶牛编号1到N。
于是约翰拍摄了M(1 ≤ M ≤ 100,000)张照片,每张照片都覆盖了连续一段奶牛:第i张照片中包含了编号ai 到 bi的奶牛。但是这些照片不一定把每一只奶牛都拍了进去。
在拍完照片后,约翰发现了一个有趣的事情:每张照片中都有且仅有一只身上带有斑点的奶牛。约翰意识到他的牛群中有一些斑点奶牛,但他从来没有统计过它们的数量。 根据照片,请你帮约翰估算在他的牛群中最多可能有多少只斑点奶牛。如果无解,输出“-1”。
在之前的日志中提到了单调队列的一个用途——求固定长区间最值。这里介绍单调队列的另一种用途——优化DP。
本节介绍DP的优化方法之一————四边形不等式。
NOIP2017 D1 T2原题,难度较大的模拟
小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序, 于是你的机会来啦!下面请你编写程序来判断小明对他的每个程序给出的时间复杂度是否正确。
A++语言的循环结构如下:
F i x y
循环体
E
记录一道简单的省选题
难度:省选/NOI-(个人感觉难度虚高)
传说很久以前,大地上居住着一种神秘的生物:地精。
地精喜欢住在连绵不绝的山脉中。具体地说,一座长度为N的山脉H可分为从左到右的N段,每段有一个独一无二的高度Hi,其中Hi是1到N之间的正整数。
这题难度不算小,2007山东省选题。
难度:省选/NOI-
小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭。学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴。当然,不同的人口味也不一定相同,但每个人的口味都可以用一个非负整数表示。 由于人手不够,食堂每次只能为一个人做菜。做每道菜所需的时间是和前一道菜有关的,若前一道菜的对应的口味是a,这一道为b,则做这道菜所需的时间为(a or b)-(a and b),而做第一道菜是不需要计算时间的。其中,or 和and 表示整数逐位或运算及逐位与运算,C语言中对应的运算符为“|”和“&”。
这里探讨一种求固定长度区间最值的高效方法—用单调队列求最值。
本题目为矩阵最值问题的模板题
难度:提高+/省选-
有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小。
第一行为3个整数,分别表示a,b,n的值
第二行至第a+1行每行为b个非负整数,表示矩阵中相应位置上的数。每行相邻两数之间用一空格分隔。