![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 58
清楼小刘
这个作者很懒,什么都没留下…
展开
-
CodeVs 1087 麦森树
1087 麦森树刚开始的时候想着用log 10加上换底公式 就可以得到位数,500位结果可以用数组模拟,但发现p的次数太大了,会超时,想到了快速幂,但是不知道具体如何实施,因为这里涉及了大数然后在网上看了一份代码,是用高精度乘法再配合快速幂进行运算的,觉得太漂亮了!这个快速幂主要还是把p当作二进制这样来考虑,可以降低很多的复杂度,减少运算次数。代码转载如下: int a[501],b...翻译 2017-03-02 22:23:54 · 544 阅读 · 1 评论 -
线性丢番图方程的C++实现
阅读《密码学与网络安全》这本书,看到线性丢番图方程,就结合之前看到的一些算法,写了一个得到解的程序,加深理解。也就把代码贴在这里:void exEuclidean(int a,int b,int &s,int &t){ int r1 = a, r2 = b , s1 = 1, s2 = 0, t1 = 0, t2 = 1;//初始化 int q,r; while(r2 > 0)原创 2017-06-21 11:07:14 · 1398 阅读 · 0 评论 -
扩展欧几里得算法的非递归实现的证明
在阅读《密码学与网络安全》遇到扩展的欧几里得算法,一直不太明白它的非递归算法(迭代)的有效性在哪里。于是就去网上看一些证明,递归算法的证明蛮多,而且都比较好懂。非递归算法的证明倒是很少。参考至 http://blog.csdn.NET/yoer77/article/details/69568676这个博客非常齐全,但是非递归的证明我还是看了两三个小时才看懂,因此就结合自己的理解,自己写原创 2017-06-21 10:19:17 · 1076 阅读 · 3 评论 -
记一个归并排序模板
#include #includeusing namespace std;long long a[1000010],b[1000010],ans;void merge(long long l,long long r)//排序函数 { long long mid=(l+r)/2,i=0,j=0,k=0; while (k<=r-l)//循环k一次一定能保证下列两组的数刚好全原创 2017-05-09 13:04:34 · 410 阅读 · 0 评论 -
辗转相除法的时间复杂度
以下程序是用辗转相除法来计算两个非负数之间的最大公约数:long long gcd(long long x, long long y) { if (y == 0) return x; else return gcd(y, x % y);} 我们假设x,y中最大的那个数的长度为n,x>y,基本运算时间复杂度为O(1),那么该程序的时间复杂翻译 2017-03-27 20:48:31 · 15854 阅读 · 0 评论 -
codevs 1003 电话连线
codevs 1003 电话连线拿到这个题,看到说要用prim算法,感觉是个模板题,不过好像自己也没怎么写过关于最小生成树的题目,就尝试着自己写一个prim算法吧。基本思路是in[i]维护每个i是否在生成树里面,用优先级队列存储边struct,重载小于运算符,但是不知道为什么就是WA了。。现在也还没相通。然后就去看题解了,不过确实是在下输了,别人40几行的代码就可以搞定了,我70几行的代码还WA原创 2017-03-07 16:14:01 · 203 阅读 · 0 评论 -
codevs 1002 搭桥
codevs 1002 搭桥刚开始看这题的时候觉得就是宽搜+并查集就可以搞定了,觉得一定可以把这题ac的。然后从昨晚敲代码,再到今天10点敲到现在,发现有一半样例WA,实在想不出是什么情况,后来看看错误提示,发现桥的数目和长度有可能是不一样的。欸,那是什么情况呢?突然间觉得好有挫败感,所以开始研究一份看起来比较简短优美的题解吧。代码如下: #include <algorithm> u原创 2017-03-07 14:36:47 · 179 阅读 · 0 评论 -
codevs 1001 舒适的路线
codevs 1001 舒适的路线1.看到题目,要找某种最优条件,又是二维图,用搜索,然后这个应该是DFS,并且判断是否能到达也不是问题。但新的一个问题是,2个点之间可能存在多条边,这个我思前想后也不知道该如何进行存储这个数据。2.突然感觉这好像是个非常神难的题,看题解吧。3.看了题解才发现,原来思维还是挺简单的,下面转载一份题解:4.以前被这个题吓到了。。。以为是个神题。。。木有想到数据范围支持原创 2017-03-06 21:48:20 · 251 阅读 · 0 评论 -
codevs 1069 关押罪犯
codevs 1069 关押罪犯本来想着只需要用sort把这对犯人按怨气值排序即可,然后从大到小把犯人放在不同的监狱里即可,后来才返现我忽视了一个重要问题,比如: a-b c-d ,接下来是b - c , b - d,就是c, d 仓库的方法对后面是有影响的。现在就发现,这个问题我似乎又不知道怎么去思考好了。考虑图形的环状吗?可是maxN = 20000。看了题解,发现最好的方法是用并查集做(原创 2017-03-06 15:15:30 · 338 阅读 · 1 评论 -
codevs 1520 回文字符串
说真的,打死我也想不到: 需要加的字符的个数=原来字符串的长度-原来字符串和逆字符串的最长公共子序列的长度。然后就是经典DP。原创 2017-03-09 12:21:30 · 209 阅读 · 0 评论 -
codevs 1063 合并果子
codevs 1063 合并果子中午一看到这题,马上想起了能量项链的那个模型,即区间型的DP,完全没有注意到n的范围,犯了先入为主的错误下午回到学校马上就去写这个几乎是模板的代码,提交直接MLE,才发现n的最大值为10000,dp[n][n】的大小为 10000 * 10000 * 4 Bytes(一个int为32 = 4 * 9 bits,即4个字节)= 400 000 KB > 题目要求的1原创 2017-03-05 19:06:49 · 407 阅读 · 1 评论 -
codevs 1155 金明的预算方案——来自深夜的挫败- -
codevs 1155 金明的预算方案——来自深夜的挫败- - 没想到到了今天的最后时刻我还是没把这题做出来。最开始以为可能有3个附件,觉得自己枚举6种组合,代码太冗余了,就不想这么写。于是乎去写了一次错误的动态规划,原因是没有看清楚背包问题中,对于每个物品选或者不选的选择,它都会更次一次0-V的所有dp[i].后来忍不住喵一下题解,看到了所谓的组合背包,我就傻傻地把每种组合当作一种新的物品用新原创 2017-03-09 00:06:32 · 468 阅读 · 0 评论 -
codevs 1047邮票面值设计
codevs 1047邮票面值设计刚看这题的时候就感觉是搜索,但是分类又是动态规划,就往动态规划那里想,结果就以为是那种一个递推式就出来的一个动态规划,后来写代码交上去发现都是错了,才感觉这里面肯定不是那么简单,是暗藏玄机的,每种邮票的面值不知道该如何确定,我找这个规律找了很久也没有头绪,就去看了题解。后来发现,这并没有规律,是要靠dfs的= = (再一次证明了我往错误的方向去思考了,太嫩了啊。原创 2017-03-08 18:57:46 · 1026 阅读 · 0 评论 -
codevs 1166 矩阵取数游戏
1166 矩阵取数游戏每一行的取数的策略都是互相独立的,所以只要找到每行取数的方法即可如果数据较小的话,就可以利用记忆化的DP: 设i,j分别为这行的头和尾,那么 dpi = max(dpi+1 + a[i] * 2的m次方 , dpi + a[j] * 2 的m次方) 但是发现m最大可能为80,那么2的80次方,无疑是要使用高精度的。 然而在自己的思维区间中总想不出要怎么使用这个高精翻译 2017-03-04 10:46:54 · 361 阅读 · 1 评论 -
C++快排模板
#include <stdio.h>void swap(int a[], int i, int j){ int t = a[i]; a[i] = a[j]; a[j] = t;}int partition(int a[], int p, int r){ int i = p; int j = r + 1; int x = a[p]...转载 2017-02-19 10:18:25 · 1186 阅读 · 0 评论 -
网易2018春招笔试
前不久被网易的笔试虐了2次,因此特地做一个记录:给出2个数a, b(b必定是偶数), 把a变成b,其中有3种操作:+2, 需要对应的cost,-2, 需要对应的cost*2, 需要对应的cost,求a变成b需要的最少cost当时脑子一热,就用bfs, 用一个结构体保存状态,后来发现爆内存了。那就改用dfs, 但是没有往剪枝这个方向去想,总是认为应该是用动态规划才有适合的解法——这也是我对最优化...原创 2018-03-29 19:52:33 · 604 阅读 · 0 评论