
个人学习记录
前程似锦____
这个作者很懒,什么都没留下…
展开
-
关于c语言中取模时涉及到的负数问题
一般情况下,实际问题要我们取模得到的都是一个正数,因此当我们取模的时候一定要注意是否会出现负数的情况,一旦出现就要将其变成正数!!! eg:洛谷P1192 台阶问题原创 2021-09-29 17:22:50 · 1059 阅读 · 0 评论 -
背包模型总结
组合类DP:答案与选择的顺序无关. 首先:所有背包的重点都在于花费(体积…等)和价值的定义,倘若花费有两种,则需要多开一维. 其次: 01背包:重点在于抽象出每个物品只选一次 完全背包:重点在于抽象出每个物品可以选无穷多次 多重背包:重点在于抽象出每个物品有有限个. 混合背包:重点在于抽象出物品可以有1个,可以有无穷多个或者有有限个这三种选择. 分组背包:重点在于抽象出每一组以及每一组里面的选择,也即是抽象出每一组物品之间互斥的多种选择(要明白分组背包问题里面的每一组的每一个选择之间都是互斥的) 二维费用的原创 2021-09-01 10:05:21 · 353 阅读 · 0 评论 -
Floyd算法笔记
Floyd算法的原理,状态表示及优化 首先,Floyd算法是基于动态规划的思想, f[k][i][j]表示的是从节点i走到节点j,中间经过的节点(节点i和节点j分别是起点和终点,属于已经确定的点,不被记入中间点)是1~k中的节点的所有路径的集合,集合的属性是最小值. 状态转移: 我们把集合不重不漏的分为两部分: 1.中间经过的点包含第k个点. 状态表示:f[k-1][i][j] 2.中间经过的点不包含第k个点. ( 状态表示: f[k-1][i][k]+f[k-1][k][j]) 因此状态转移方程为原创 2021-08-06 22:44:54 · 243 阅读 · 2 评论 -
筛质数-Acwing学习笔记
/* 朴素版的筛法: 每一个数的倍数一定不是合数,把每一个数的倍数都筛掉, 剩下的x就是没被其在2~x-1以内的数筛过的数,也就是说 x不是2~x-1以内所有数的倍数,即x不是2~x-1以内的所有数 的约数,由质数的定义知,此时的x为质数. */ #include<iostream> using namespace std; const int N=1e6+10; int primes[N],cnt; bool st[N]; void get_primes(int原创 2021-08-04 10:03:00 · 122 阅读 · 0 评论 -
高精度大数乘以大数
#include<iostream> #include<vector> using namespace std; //const int N=1e5+1111; string a,b; vector<int> mul(vector<int> &A,vector<int> &B,int lena,int lenb) { vector<int> res(lena+lenb,0); for(int i=0;i<len原创 2021-04-28 21:50:34 · 94 阅读 · 0 评论 -
51Nod1005 大数加法
题目链接: 51Nod1005 大数加法 #include<iostream> #include<vector> using namespace std; vector<int> add(vector<int> &A,vector<int> &B) { vector<int> res; int t=0; for(int i=0;i<A.size()||i<B.size();++i) { if(i&原创 2021-04-28 20:46:02 · 135 阅读 · 0 评论 -
关于扩展欧几里得算法的证明
证明: 由欧几里得算法知:gcd(a,b)=gcd(b,a%b). 由裴蜀定理知:一定存在x1和y1满足a*x1+b*y1=gcd(a,b),且也一定存在b*x2+a%b*y2=gcd(b,a%b). 因此由欧几里得算法和裴蜀定理知: gcd(a,b)=gcd(b,a%b). a*x1+b*y1=gcd(a,b). b*x2+a%b*y2=gcd(b,a%b). 故: a*x1+b*y1=b*x2+a%b*y2. 即: a*x1+b*y1=b*x2+a-a/b*b*y2. 即: a*x1+b*y1=b*(x原创 2021-04-12 11:26:32 · 368 阅读 · 0 评论 -
acwing算法基础课数学知识关于质数的笔记
质数 1.质数和合数是针对所有大于1的 "自然数" 来定义的(所有小于等于1的数都不是质数). 2.所有小于等于1的整数既不是质数也不是合数. 3.质数和素数都是同一种性质,只是叫法不同. 4.质数的判定------试除法 或 六倍原理. (1)."d|n"代表的含义是d能整除n,(这里的"|"代表整除). (2).一个合数的约数总是成对出现的,如果d|n,那么(n/d)|n,因此我们判断一个数是否为质数的时候, 只需要判断较小的那一个数能否整除n就行了,即只需枚举d<=原创 2021-04-06 20:33:43 · 270 阅读 · 0 评论 -
51Nod-3102 小明爱平行四边形
小明是真的爱平行四边形… 一道题做了两天,网上还没有题解,51Nod的解题报告还不给代码,就给一个简单的思路,然后说一句具体看代码,然后就没了??? 我就想说,代码呢… 真的难…,总算是AC了这道题 直接上代码(本人代码写的不好,但是你可以偷偷的copy过去AC了再去查看别人的AC代码,因为毕竟只有AC用户才能查看别人的代码,因为写的比较烂,所以,请尽量不要看我的/wul) #include<iostream> #include<vector> #include<algorit原创 2021-02-06 14:08:24 · 274 阅读 · 2 评论