会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
声声醉如兰
学习不努力一辈子在内地,英语学不牢老死在天朝
博客园
首页
新随笔
联系
订阅
管理
上一页
1
···
3
4
5
6
7
8
9
10
11
···
24
下一页
2018年5月7日
51nod 1035 最长的循环节
摘要: 正整数k的倒数1/k,写为10进制的小数如果为无限循环小数,则存在一个循环节,求<=n的数中,倒数循环节长度最长的那个数,假如存在多个最优的答案,输出所有答案中最大的那个数。 1/6= 0.1(6) 循环节长度为1 1/7= 0.(142857) 循环节长度为6 1/9= 0.(1) 循环节长度为1
阅读全文
posted @ 2018-05-07 18:18 声声醉如兰
阅读(317)
评论(0)
推荐(0)
2018年2月27日
七大内排序
摘要: 插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序
阅读全文
posted @ 2018-02-27 01:30 声声醉如兰
阅读(386)
评论(0)
推荐(0)
2018年2月3日
1040 最大公约数之和
摘要: a[] = {1,2,3,4...n} n与a[i]的最大公约数,必定属于n的因子,所以遍历n的因子。 对于n的一个因子k,我们求出k作为最大公约数出现的次数m 如何求出m呢: gcd(n,a[i])==k => gcd(n/k,a[i]/k)==1 这相当与求:小于n/k,且与n/k互质的数的个数
阅读全文
posted @ 2018-02-03 16:34 声声醉如兰
阅读(283)
评论(0)
推荐(0)
2018年1月30日
51nod 1215 数组的宽度
摘要: 若一个数在一段区间内作为最大值存在,那么答案应该加上这个数 若一个数在一段区间内作为最小值存在,那么答案应该减去这个数 所以我们利用单调栈,高效求出a[i]在哪个区间内作为最大/最小值存在,从而确定,加/减多少次a[i],最终得到答案 #include<stdio.h> #include<math.
阅读全文
posted @ 2018-01-30 15:07 声声醉如兰
阅读(192)
评论(0)
推荐(0)
51nod 1423 最大二“货” 单调栈
摘要: 利用单调栈,高效求出每个区间内的最大值和次大值的亦或值。 先正向扫描,利用单调递减栈,若当前栈为空栈,则直接压入栈中,若为非空栈,弹出栈顶元素,每弹出一个元素,则求一次亦或值,保留最大值 接着进行反向扫描,过程与上相似。 #include<stdio.h> #include<math.h> #inc
阅读全文
posted @ 2018-01-30 10:38 声声醉如兰
阅读(133)
评论(0)
推荐(0)
51nod 1437 迈克步 单调栈
摘要: 利用单调栈高效的求出,一个数a[i]在哪个区间内可作为最小值存在。 正向扫描,求出a[i]可做为最小值的区间的左边界 反向扫描,求出a[i]可作为最小值的区间的右边界 r[i] - l[i] +1 就是a[i]可作为最小值的区间的 最大长度 我们知道:长度为len的区间,包含长度为len-1的区间
阅读全文
posted @ 2018-01-30 10:14 声声醉如兰
阅读(190)
评论(0)
推荐(0)
1564 区间的价值
摘要: 分治 #include<stdio.h> #include<math.h> #include<cstring> #include<stack> #include<iostream> #include<algorithm> #include<queue> #define MAXSIZE 100005
阅读全文
posted @ 2018-01-30 09:37 声声醉如兰
阅读(200)
评论(0)
推荐(0)
51nod 1294 修改数组
摘要: 若a[i]-i(i从1开始)的值小于0,那么a[i]必须改变 若a[i]-i的值大于等于0,将a[i]-i存入新的数组中,求出新数组的最长非严格上升子序列,所得即最多的,不用改变的数。 #include<stdio.h> #include<math.h> #include<cstring> #inc
阅读全文
posted @ 2018-01-30 09:18 声声醉如兰
阅读(251)
评论(0)
推荐(0)
2018年1月27日
51nod1693 水群 最短路
摘要: 若A=K*B,若仅通过操作二:将B变换为A需要K步, 由算数基本定理可知:k=p1*p2*……pn(p为素数,且可能重复) 那么:将B转化为p1*B需要p1步,将p1*B转化为p1*p2*B需要p2步,以此类推,将B转化为A需要(p1+p2+....pn)步 因为(p1*p2*p3...*pn) <
阅读全文
posted @ 2018-01-27 10:09 声声醉如兰
阅读(143)
评论(0)
推荐(0)
51nod1052 最大M子段和
摘要: 很经典的动态规划,Maxsum Plus dp[i][j]表示将i个数字,分为j的段不相交子段的最大字段和,容易得到: dp[i][j] = max(dp[i-1][j],dp[k][j-1])+a[i] k∈[j-1,i] 因为数据范围过大,对其方程式进行压缩: dp[i-1][j]+a[i] 表
阅读全文
posted @ 2018-01-27 09:33 声声醉如兰
阅读(184)
评论(0)
推荐(0)
上一页
1
···
3
4
5
6
7
8
9
10
11
···
24
下一页
公告