算法学习中
sjo146
在不断的学习中
展开
-
快速幂学习(1046 A^B Mod C)
说明快速幂就是快速计算底数的n次幂,其时间复杂度为O(logN)例如 求a的b次方将b转化为二进制数int a,b,c,ans=1;cin>>a>>b;c=a;while(b>0){if(b&1){//取b的最低位,判断与1是否相同,相同则是奇数,不同则是偶数ans=ans*c;}c=c*c;//1 2 4......b>>...原创 2020-02-02 21:27:33 · 129 阅读 · 0 评论 -
动态规划之数组dp简单学习(以51nod 1006 最长公共子序列Lcs为例)
说明参考博文:https://blog.csdn.net/godjing007/article/details/89048554状态转移方程dp[i][j]=max(dp[i-1][j],dp[i][j-1],dp[i-1][j-1]+(a[i]==b[j]?1:0)关键是找到矩阵中第一次增加的地方就是想要的点代码#include<iostream>#include<...原创 2020-01-30 23:00:02 · 141 阅读 · 0 评论 -
动态规划之数位DP简单学习(以51nod 1042 数字0-9的数量为例)
说明采用数位DP的方式来解题(看了许多大佬的代码和解法,但是还是对于数位DP一知半解,还需要多多学习,希望大家多多指教)解法区间[A,B]使用数位DP枚举出0–A-1中数字i出现的次数x,0–B中数字i出现的次数y数字i在区间中出现的次数为y-x#include<iostream>#include<math.h>using namespace std;t...原创 2020-01-30 18:22:02 · 175 阅读 · 0 评论 -
51nod 1740蜂巢迷宫
1740蜂巢迷宫题目有一个无限大的蜂巢迷宫,为了方便表示每一个六边形格子,现在把座标引入到这个迷宫中,如上图年示。艾瑞特在这个迷宫中街,刚开始他在(0,0)的位置,按照下图所示的路线在这个迷宫中行走。走了n步以后,他想知道自己在哪个位置了输入单组测试数据。一个整数n (0≤n≤10^18),表示艾瑞特移动的步数。输出输出两个整数x和y,表示艾瑞所在的座标。思路首先确定好层...原创 2020-01-06 10:39:49 · 410 阅读 · 0 评论