阶段1
文章平均质量分 55
小龚主
这个作者很懒,什么都没留下…
展开
-
【阶段1】【单调队列】剪裁序列
【题意】给定一个长度为 N 的序列 A ,要求把该序列分成若干段,在满足“每段中所有数的和”不超过M的前提下,让“每段中所有数的最大值”之和最小。试计算这个最小值。【输入格式】第一行包含两个整数N和M。第二行包含N个整数,表示完整的序列A。【输出格式】输出一个整数,表示结果。如果结果不存在,则输出-1。【数据范围】0≤N≤10^5,0≤M≤10^11,序列A中的数非负,且不超过10^6【输入样例】8 172 2 2 8 1 8 2 1【输出样例】12思路:想到用.原创 2020-11-03 17:21:42 · 214 阅读 · 0 评论 -
【阶段1】【树的直径】【改边权】巡逻
【题意】在一个地区有 n 个村庄,编号为1,2,…,n。有 n-1 条道路连接着这些村庄,每条道路刚好连接两个村庄,从任何一个村庄,都可以通过这些道路到达其他任一个村庄。每条道路的长度均为1个单位。为保证该地区的安全,巡警车每天都要到所有的道路上巡逻。警察局设在编号为1的村庄里,每天巡警车总是从警局出发,最终又回到警局。为了减少总的巡逻距离,该地区准备在这些村庄之间建立 K 条新的道路,每条新道路可以连接任意两个村庄。两条新道路可以在同一个村庄会合或结束,甚至新道路可以是一个环。因为资金有.原创 2020-10-31 17:22:27 · 231 阅读 · 0 评论 -
【阶段1】【动态规划】【对顶堆】
【题意】给定一个长度为N的整数数组A,你需要创建另一个长度为N的整数数组B,数组B被分为K个连续的部分,并且如果i和j在同一个部分,则B[i]=B[j]。如果要求数组B能够满足Σ|A[i]-B[i]|最小,那么最小值是多少,请你输出这个最小值。【输入格式】输入包含多组测试数据。对于每组测试数据,第一行包含两个整数N和K。接下来N行每行包含一个整数,表示完整的数组A。当输入为一行0 0时,表示输入终止。【输出格式】对于每组数据,输出一个最小值。每个结果占一行。【数据范围】1≤N≤20.原创 2020-10-30 22:20:44 · 263 阅读 · 0 评论 -
【阶段1】【动态规划DP】计算机
题目描述:一所学校前一段时间买了第一台计算机(所以这台计算机的ID是1)。近年来,学校又购买了N-1台新计算机。每台新计算机都与之前买进的计算机中的一台建立连接。现在请你求出第i台计算机到距离其最远的计算机的电缆长度。例如,上图中距离计算机1最远的是计算机4,因此 S1=3;距离计算机2最远的是计算机4和5,因此 S2=2;距离计算机3最远的是计算机5,所以 S3=3;同理,我们也得到 S4=4,S5=4。【输入格式】输入包含多测试数据。每组测试数据第一行包含整数N。接下来N-1行,每.原创 2020-10-28 15:53:19 · 521 阅读 · 0 评论 -
【阶段1】【动态规划DP】POJ 1390 Blocks or 消木块
【题意】你们中的一些人可能玩过一个叫做消木块的游戏。n个木块排成一列,每个木块都有一个颜色。例如下图中木块的颜色分别为:金,银,银,银,银,铜,铜,铜,金。每次,你都可以点击一个木块,这样被点击的木块以及和它相邻并且同色的木块就会消除。如果一次性消除了k个木块,那么就会得到k*k分。例如下图所示,点击银色木块,四个木块被消去,得到16分。给定你一个游戏初始状态,请你求出最高得分是多少。【输入格式】第一行包含整数t,表示共有t组测试数据。每组数据第一行包含整数n,表示共有n个木块。.原创 2020-10-26 13:45:02 · 511 阅读 · 0 评论 -
【阶段1】【贪心】【动态规划】饼干
题目描述:圣诞老人共有MM个饼干,准备全部分给N个孩子。每个孩子有一个贪婪度,第 i 个孩子的贪婪度为 g[i]。如果有 a[i]a[i] 个孩子拿到的饼干数比第 ii 个孩子多,那么第 ii 个孩子会产生 g[i]×a[i]的怨气。给定N、M和序列g,圣诞老人请你帮他安排一种分配方式,使得每个孩子至少分到一块饼干,并且所有孩子的怨气总和最小。输入格式第一行包含两个整数N,M。第二行包含N个整数表示g1~gN。输出格式第一行一个整数表示最小怨气总和。第二行N个空格隔开的.原创 2020-10-07 16:11:40 · 1694 阅读 · 2 评论 -
【阶段1】分别适应不同时空的各种算法
Acwing《算法基础课》第7章 时空复杂度分析一般ACM或者笔试题的时间限制是1秒或2秒C++一般1s能计算107~108次,在这种情况下,C++代码中的操作次数控制在107为最佳在不同数据范围下,代码的时间复杂度和算法的选择技巧如下:n≤30,指数级别 dfs+剪枝 状态压缩dp n≤100,O(n3) floyd dp n≤1000,O(n2),O(n2logn) dp 二分 朴素版Dijkstra 朴素版Prim Bellman-Ford.原创 2020-10-07 11:26:39 · 175 阅读 · 0 评论 -
【阶段1】【线性动态规划】I-区域
题目描述:【题意】在 N*M 的矩阵中,每个格子有一个权值,要求寻找一个包含 K 个格子的凸连通块(连通块中间没有空缺,并且轮廓是凸的),使这个连通块中的格子的权值和最大。注意:凸连通块是指:连续的若干行,每行的左端点列号先递减、后递增,右端点列号先递增、后递减。求出这个最大的权值和,并给出连通块的具体方案,输出任意一种方案即可。【输入格式】第一行包含三个整数N,M和K。接下来N行每行M个整数,表示N*M的矩阵上每个格子的权值(均不超过1000)。【数据范围】1<=n,m<.原创 2020-10-07 11:10:32 · 335 阅读 · 0 评论 -
【阶段1】【线段树】【树状数组】区间最大公约数
【题意】给定一个长度为N的数列A,以及M条指令,每条指令可能是以下两种之一:1、“C l r d”,表示把 A[l],A[l+1],…,A[r] 都加上 d。2、“Q l r”,表示询问 A[l],A[l+1],…,A[r] 的最大公约数(GCD)。对于每个询问,输出一个整数表示答案。【输入格式】第一行两个整数N,M。第二行N个整数A[i]。接下来M行表示M条指令,每条指令的格式如题目描述所示。【输出格式】对于每个询问,输出一个整数表示答案。每个答案占一行。...原创 2020-09-14 21:27:57 · 374 阅读 · 0 评论 -
【阶段1】【组合数学】计数交换
Description【题意】给定一个 1~n 的排列 p1,p2,…,pn,可进行若干次操作,每次选择两个整数 x,y,交换 px,py。设把 p1,p2,…,pn 变成单调递增的排列 1,2,…,n 至少需要 m 次交换。求有多少种操作方法可以只用 m 次交换达到上述目标。因为结果可能很大,你只需要输出结果对 10^9+9 取模之后的值。例如排列 2,3,1 至少需要2次交换才能变为 1,2,3。操作方法共有3种,分别是:方法一:先交换数字2,3,变成 3,2,1,再交换数字3,1,变.原创 2020-08-29 11:38:25 · 634 阅读 · 1 评论 -
【阶段1】【定理证明】二项式定理证明
二项式定理: 证明过程:的项数是k+1,这部分是没有问题的(随便想想就能理解),关键是证,系数这个部分当然,这其实就是杨辉三角形我们把拆开就会得到=(a+b)(a+b)……(a+b)【k个(a+b)相乘】我们把式子拆开来运算的过程,相当于在每个括号中任意选a或者b那么,就是在n个(a+b)中任意选择了k个a,剩下的都选b方案数就是也可以理解为在n个(a+b)中任意选择了n-k个b,剩下的都选a方案数就是而我们知道等价于我们也可以用另外一种方式来...原创 2020-08-28 16:45:58 · 2250 阅读 · 0 评论 -
【阶段1】【代码模板】欧拉函数(普通版和线性筛版)
普通版原理:(其中qi表示n小于等于n的约数)用均匀分布的特点和容斥定理易证inline ll ola(ll n){ ll ans=n; for(int i=2;i*i<=n;i++) { if(n%i==0) { ans=ans-ans/i; while(n%i==0)n/=i; } } if(n>1)ans=ans-ans/n; return ans;}线性筛版原理:如果q是素数,由于欧拉函数是积性函数,所以当(a,b)=1时有bool原创 2020-08-16 17:23:30 · 114 阅读 · 0 评论 -
【阶段1】【定理证明】辗转相除法极简单证明
辗转相除法用法: 用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。(来自360百科)例子:求两个正数8251和6105的最大公因数。解:8251 / 6105=1……21466105 / 2146=2……18132146 / 1813=1……3331813 / 333=5……148333 / 148...原创 2020-08-16 17:14:36 · 835 阅读 · 0 评论 -
【阶段1】【代码模板】快速模高配版(快速模+快速乘)
ll multi(ll a,ll b,ll mod){ ll ans = 0; while(b) { if(b&1)ans=(ans+a)%mod; a=(a<<1)%mod; b>>=1; } return ans;}inline ll power(ll a,ll b,ll mod){ ll ans=1;a%=mod; while(b) { if(b&1)an.原创 2020-08-16 17:00:20 · 136 阅读 · 0 评论 -
【阶段1】【Hankson的趣味题】求约数,不含辗转相除法的做法
【题意】Hanks博士是BT(Bio-Tech,生物技术)领域的知名专家,他的儿子名叫Hankson。现在,刚刚放学回家的Hankson正在思考一个有趣的问题。今天在课堂上,老师讲解了如何求两个正整数c1和c2的最大公约数和最小公倍数。现在Hankson认为自己已经熟练地掌握了这些知识,他开始思考一个“求公约数”和“求公倍数”之类问题的“逆问题”,这个问题是这样的:已知正整数a0,a1,b0,b1,设某未知正整数x满足:1、 x和a0的最大公约数是a1;2、 x和b0的最小公倍数是b1。H.原创 2020-08-15 11:28:44 · 293 阅读 · 0 评论 -
【阶段1】【余数之和】小白都能看懂的题解
【题意】给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值。例如j(5, 3)=3 mod 1 + 3 mod 2 + 3 mod 3 + 3 mod 4 + 3 mod 5=0+1+0+3+3=7。【输入格式】输入仅一行,包含两个整数n, k。【输出格式】输出仅一行,即j(n, k)。【数据范围】1≤n,k≤10^9【输入样例】5 3【输出样例】7对于一个i,求k除以i的余数,有 k mod i =..原创 2020-08-15 10:47:08 · 757 阅读 · 1 评论 -
【阶段1】【反素数】合理转化问题+dfs
【题意】对于任何正整数x,其约数的个数记作g(x),例如g(1)=1、g(6)=4。如果某个正整数x满足:对于任意的小于x的正整数 i,都有g(x)>g(i) ,则称x为反素数。例如,整数1,2,4,6等都是反素数。现在给定一个数N,请求出不超过N的最大的反素数。【输入格式】一个正整数N。【输出格式】一个整数,表示不超过N的最大反素数。【数据范围】1≤N≤2∗10^9【输入样例】1000【输出样例】840分析任何一个数都可以...原创 2020-08-14 13:51:18 · 229 阅读 · 0 评论 -
【阶段1】【198. 质数距离】线性筛+巧妙优化
【题意】给定两个整数L和U,你需要在闭区间[L,U]内找到距离最接近的两个相邻质数C1和C2(即C2-C1是最小的),如果存在相同距离的其他相邻质数对,则输出第一对。同时,你还需要找到距离最远的两个相邻质数D1和D2(即D1-D2是最大的),如果存在相同距离的其他相邻质数对,则输出第一对。【输入格式】每行输入两个整数L和U,其中L和U的差值不会超过1000000。【输出格式】对于每个L和U ,输出一个结果,结果占一行。结果包括距离最近的相邻质数对和距离最远的相邻质数对。(具体格式参照...原创 2020-08-14 11:42:02 · 249 阅读 · 0 评论 -
【阶段1】【AcWing 159. 奶牛矩阵 】【Milking Grid】巧妙暴力+快乐KMP
【题面】每天早上,农夫约翰的奶牛们被挤奶的时候,都会站成一个R行C列的方阵。现在在每个奶牛的身上标注表示其品种的大写字母,则所有奶牛共同构成了一个R行C列的字符矩阵。现在给定由所有奶牛构成的矩阵,求它的最小覆盖子矩阵的面积是多少。如果一个子矩阵无限复制扩张之后得到的矩阵能包含原来的矩阵,则称该子矩阵为覆盖子矩阵。【输入格式】第1行:输入两个用空格隔开的整数,R和C。第2..R+1行:描绘由奶牛构成的R行C列的矩阵,每行C个字符,字符之间没有空格。【输出格式】输出最小覆盖子矩阵的面积。(每.原创 2020-08-13 11:17:28 · 318 阅读 · 0 评论 -
【阶段1】【AcWing 158. 项链】字符串的最小表示(或kmp)
158. 项链 题目 提交记录 讨论 题解 视频讲解有一天,达达捡了一条价值连城的宝石项链,但是,一个严重的问题是,他并不知道项链的主人是谁!在得知此事后,很多人向达达发来了很多邮件,都说项链是自己的,要求他归还(显然其中最多只有一个人说了真话)。达达要求每个人都写了一段关于自己项链的描述: 项链上的宝石用数字0至9来标示。一个对于项链的表示就是从项链的某个宝石开始,顺指针绕一圈,沿途记下经过的宝石,比如项链: 0-1-2-3 ,它的可能的四种表...原创 2020-08-13 09:34:38 · 131 阅读 · 0 评论 -
【阶段1】【AcWing 157. 树形地铁系统 1】树的最小表示
【题意】一些主要城市拥有树形的地铁系统,即在任何一对车站之间,有且只有一种方式可以乘坐地铁。此外,这些城市大多数都有一个中央车站。想象一下,你是一名在拥有树形地铁系统的城市游玩的游客,你想探索该城市完整的地铁线路。你从中央车站出发,随机选择一条地铁线,然后乘坐地铁行进。每次到达一个车站,你都将选择一条尚未乘坐过的地铁线路进行乘坐。如果不存在未乘坐过的线路,则退回到上一个车站,再做选择。直到你将所有地铁线路都乘坐过两次(往返各一次),此时你将回到中央车站。之后,你以一种特殊的方式回忆自己的坐.原创 2020-08-13 09:24:40 · 215 阅读 · 1 评论 -
【阶段1】卡特兰数的学习(Catalan)
申明:本文版权应该是中山一中的万杰老师(此处悄悄引用他四年前的课件)一、基础知识储备:排列:p(n,m)=n!/(n-m)!原因:排列公式是建立一个模型,从n个不相同元素中取出m个排成一列(有序),第一个位置可以有n个选择,第二个位置可以有n-1个选择(已经有1个放在前一个位置),则同理可知第三个位置可以有n-2个选择,以此类推第m个位置可以有n-m+1个选择,则排列数为n*(n-1)……(n-m+1)。公式推导:p(n,m)=n*(n-1)……(n-m+1)=n!/(n-m)! (把1至.原创 2020-08-04 22:01:28 · 747 阅读 · 0 评论 -
【阶段1】费解的开关(二进制压缩从而枚举状态+学会解读题目)
【题意】你玩过“拉灯”游戏吗?25盏灯排成一个5x5的方形。每一个灯都有一个开关,游戏者可以改变它的状态。每一步,游戏者可以改变某一个灯的状态。游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。我们用数字“1”表示一盏开着的灯,用数字“0”表示关着的灯。下面这种状态1011101101101111000011011在改变了最左上角的灯的状态后将变成:0111111101101111000011011再改变它正中间的灯后状态将变成:01111.原创 2020-07-28 17:05:59 · 181 阅读 · 0 评论 -
【阶段1】起床困难综合症(逻辑运算+逆向思维)
【题意】21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳。作为一名青春阳光好少年,atm一直坚持与起床困难综合症作斗争。通过研究相关文献,他找到了该病的发病原因: 在深邃的太平洋海底中,出现了一条名为drd的巨龙,它掌握着睡眠之精髓,能随意延长大家的睡眠时间。 正是由于drd的活动,起床困难综合症愈演愈烈, 以惊人的速度在世界上传播。为了彻底消灭这种病,atm决定前往海底,消灭这条恶龙。历经千辛万苦,atm终于来到了drd所在的地方,准备与其展开艰苦卓绝的战斗。dr.原创 2020-07-28 16:51:19 · 135 阅读 · 0 评论 -
【阶段1】最短Hamilton路径(二进制状态压缩+DP)
【题意】给定一张 n 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径。 Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次。【输入格式】第一行输入整数n。接下来n行每行n个整数,其中第i行第j个整数表示点i到j的距离(记为a[i,j])。对于任意的x,y,z,数据保证 a[x,x]=0,a[x,y]=a[y,x] 并且 a[x,y]+a[y,z]>=a[x,z]。【输出格式】...原创 2020-07-28 16:39:22 · 96 阅读 · 0 评论 -
【阶段1】64位整数乘法(二进制划分思维+充分理解二进制的好处)
【题意】求 a 乘 b 对 p 取模的值。【输入格式】第一行输入整数a,第二行输入整数b,第三行输入整数p。【输出格式】输出一个整数,表示a*b mod p的值,1≤a,b,p≤10^18。【输入样例】345【输出样例】2思路分析:假设我们要求:12728*3872 =?(先不管求不求模)首先,按照十进制的思维:原式=8*3672+2*36720+7*367200+2*3672000+1*36720000代码如下//a*bint an...原创 2020-07-28 16:33:54 · 436 阅读 · 0 评论 -
快速幂(数论+模版学习)
【题意】求a^b mod c,a,b,c都是整数。【输入格式】一行三个整数 a、b、c。0 ≤ a,b,c ≤ 10^9【输出格式】一行,a^b mod c的值。【样例输入】2 5 7【样例输出】4这道题是数论的入门题目,也是工具模版。先讲讲它的原理,原理有两种理解方式,一种是十进制的,一种是二进制的。下面是十进制的理解图:二进制的理解:...原创 2019-04-15 13:41:52 · 198 阅读 · 0 评论