算法
叫我莫言鸭
这个作者很懒,什么都没留下…
展开
-
ACWing 283(动态规划)
分析: 1.这个题,首先拿到,可以看出是破环成链,所以在什么地方断很关键,断了之后变成一条链,而这条链由要保存长度求最大值,所以应该续上后面,所以,应该用两段链来表示链,进行操作。 2.这时候问题就变成了链的动态规划了,对数据进行操作,要求的又是最终的最大值,这个我认为类似于最长回文字串...原创 2019-12-23 20:10:13 · 180 阅读 · 0 评论 -
青蛙跳台阶(斐波那契)
public void F(int num,int n,String str) {//递归先写终止条件if(num>n){return ;}if(num==n){System.out.println(str);return;}//往后递归F(num+1, n, str+“1”);//这是新字符串F(num+2, n, str+“2”);}...原创 2019-12-18 09:23:24 · 96 阅读 · 0 评论 -
素数表
const int maxn=100010;int sushu[maxn],num=0;bool p[maxn]={false}; void Findsushu(int n) { for(int i=2;i<maxn;i++) { if(p[i]=false){ sushu[num++]=i; if(num>=n) break; for(...原创 2019-11-02 20:04:13 · 230 阅读 · 0 评论 -
快速乘与快速幂的区别
快速幂LL kuaisumi(LL a,LL b,LL m){//节省的是时间复杂度,与空间复杂度和数值的关系不大;并不能解决数据过大问题 if(b==0) return 1; if(b%2==1)//可以用b&1代替 &是位运算符 return a*kuaisucheng(a,b-1,m)%m; else{ LL mul=kuaisucheng(a,b...原创 2019-11-02 16:57:59 · 251 阅读 · 0 评论 -
算法笔记二分法切木棒
问题:给出N根木棒长度已知但不一定相等, 现在希望通过切割得到长度相等的K根木棒,求长度相等的K根木棒最长是多少?如:给3根木棒,长度为10, 24, 15,要切割得到7根长度相等的木棒, 则7根木棒的长度最长为6,其组合为16+46+2*6。#include<stdio.h>#include<iostream>#include<algorithm>...原创 2019-11-02 14:45:24 · 456 阅读 · 0 评论 -
PAT B1020
注意 保留位数是在格式前,例如printf("%.2f",s);#include<stdio.h>#include<algorithm>using namespace std;const int maxn =50000;struct mooncake{ double score; double sell; double price;}cake[maxn...原创 2019-10-31 20:22:30 · 182 阅读 · 0 评论 -
皇后问题
#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;int max = 50;int mark[50]={0};//我定义为int型,当定义为布尔类型时会不知道什么值会全是0int huanghou[50];int n;int ans=0;voi...原创 2019-10-31 19:40:50 · 123 阅读 · 0 评论 -
两个日期的相差天数
#include <iostream>#include<stdio.h>#include<math.h>using namespace std;int month[13][2] = { {0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,3...原创 2019-10-29 19:27:11 · 154 阅读 · 0 评论 -
溢出判断
如果两个整数和为负数或两个负数之和为整数就是溢出原创 2019-08-09 11:36:43 · 222 阅读 · 0 评论 -
C++sstream
#include <iostream>#include<stdio.h>#include<algorithm>#include<vector>#include<cstring>#include<sstream>#include<strstream>#include<queue>using...原创 2019-07-28 17:18:28 · 747 阅读 · 0 评论 -
堆排序
从最后一个开始,和子比较,比子弱则交换,即,强者优先原则原创 2019-08-06 08:12:54 · 84 阅读 · 0 评论 -
动态规划之最长回文子串
问题:给出一个字符串S,求S的最长回文子串的长度。样例字符串"PATZJUJZTACCBCC"的最长回文子串为"ATZJUJZTA",长度为9。 还是先看暴力解法:枚举子串的两个端点i和j,判断在[i, j]区间内的子串是否回文。从复杂度上来看,枚举端点需要0(n2),判断回文需要0(n),因...原创 2019-04-25 13:17:22 · 42090 阅读 · 13 评论 -
最长不下降子序列(LIS)
问题:在一个数字序列中,找到一个最长的子序列(可以不连续),使得这个子序列是不下降的(非递减)。公式dp[i]=max(1,dp[j]+1)(j=1,2,…,i-1&&A[j]<A[i])代码: #include<iostream> #include<cstdio> #include<algorithm> ...原创 2019-04-25 09:05:16 · 179 阅读 · 0 评论 -
最大连续子序列和(动态规划)
问题: 给定一个数字序列A1,A2,An,求ij(1≤i≤j≤n),使得A:+…+ A;最大,输出这个最大和。样例:-2 11 -4 13 -5 -2 显然11+( 4)+13=20为和最大的选取情况,因此最大和为20步骤: 令状态dp[i]表示以...原创 2019-04-24 19:49:15 · 3128 阅读 · 0 评论 -
动态规划的递归写法和递归推法(胡凡笔记)
1动态规划的递归写法和递归推法 动态规划(Dynamic Programming, DP) 是一种用来解决一类最优化问题的算法思想。简单来说,动态规划将一一个 复杂的问题分解成若千个子问题,通过综合子问题的最优解来得到原问题的最优解。需要注意的是,动态规划会将每个求解过的子问题的解记录下来,这样当下一次...转载 2019-04-24 19:22:04 · 3400 阅读 · 0 评论 -
快速乘
基本原理 :原理: 设a为20,b为14,从二进制原理看,是从右往左依次来,14的最后一位是0,所以,直接进行,a2,b右移,此时重新进行判断,最后一位为1,也就是说,他会影响最后结果,然后将他进入sum求余,然后重复将a2,b右移操作,依次往下进行;最后返回suml;这里附上求余公式:(a+b) % p = (a%p + b%p) % p(a-b) % p = (a%p - b%p)...原创 2019-04-24 15:21:16 · 121 阅读 · 0 评论 -
快速幂学习小结(定义及代码实现)
先研究一个问题,给定三个正整数abc,a小于10的9次方,b小于10的18次方,m大于1小于10的9次方,求a的b次方对m的余数;快速幂:基于二分的思想,因此也常称为二分幂。快速幂基于以下事实:①如果b是奇数,那么有a的b次方=aa的b-1次方;②如果b是偶数,那么有a的b次方=a的b/2次方a的b/2次方;显然,b是奇数的情况总可以在下一步转化为b是偶数的情况,而b是偶数的情况总可以在下...原创 2019-04-23 16:28:17 · 231 阅读 · 0 评论 -
拓展欧几里得小结
什么是拓展欧几里得?简单的说,就是求关于x,y的方程 ax + by = gcd(a,b) 的所有整数解现在我们令g = gcd(a,b)则方程变成了ax + by = g假如我们现在知道了关于这个方程的一个特解x0, y0,我们就可以用一种方法求出所有的整数解。说的比较模糊,现在整理一下。上面提到了两个问题一、怎么求出这个特解?二、怎么由特解推出其它的所有解?一、求特解我们知道...转载 2019-04-21 11:49:02 · 144 阅读 · 0 评论