随笔分类 -  算法碎片

摘要:DP的背包问题可谓是最基础的DP了,分为01背包,完全背包,多重背包 01背包 装与不装是一个问题 01背包基本模型,背包的总体积为v,总共有n件物体,每件物品的体积为v[i],价值为w[i],每件物品只有一个,怎么使背包内尽可能的装更多的物品且价值最大? 模板为一维滚动数组,f[m]表示装m的最大 阅读全文
posted @ 2018-10-30 19:47 baccano! 阅读(2122) 评论(0) 推荐(0)
摘要:具体合并的过程并不是很清晰啊 代码 include using namespace std; int n1[100]; int n2[100]; void ms(int x,int y) { if(y x 1) { int m=x+(y x)/2; int p=x,q=m,i=x; ms(x,m); 阅读全文
posted @ 2018-10-25 14:18 baccano! 阅读(96) 评论(0) 推荐(0)
摘要:六个位运算符& | ^ ~ & 按位与运算符把二进制短的按照位置与二进制长的进行与运算即 1&1=1 1&0=0 0&0=0 | 按位并运算符把二进制短的按照位置与二进制长的进行并运算即 1|1=1 1|0=1 0|0=0 ^ 异或运算相同为0,不同为1 1^1=0 0^0=0 1^0=1 ~ 取反 阅读全文
posted @ 2018-10-24 19:38 baccano! 阅读(220) 评论(0) 推荐(0)
摘要:步骤 ①先写快速幂取模函数 ②MR算法开始 (1)传入两个参数一个是底数一个是n也就是幂数,如果n是一个合数那么可以判定,这个数一定不是素数 (2)然后开始寻找一个奇数的n去计算,如果最后满足a^d%n=1那么这个可能就是一个素数,然后再判断k=n 1(目前数学不好不明所以) (3)MR结束 ③编写 阅读全文
posted @ 2018-10-16 21:30 baccano! 阅读(247) 评论(0) 推荐(0)
摘要:递推法虽然目前看不大懂,但是跟素数筛法差不多能记住。 代码 include using namespace std; int phi[10000005]; void db() { memset(phi,0,sizeof(phi)); phi[1]=1; for(int i=2;i a) cout 阅读全文
posted @ 2018-10-16 19:14 baccano! 阅读(111) 评论(0) 推荐(0)
摘要:乘法可以看成n个a相加,那么所需要的时间为O(n),那么如何降低乘法的时间呢(降低为logn)? 埃及乘法算法就是一种,分为奇数和偶数,(例如计算n a)偶数从1开始是a,然后1✖2,a+a以此类推,奇数的时候是从1开始先加上一个a以后跟偶数是一样的。 似乎先把两个乘数按大小排出来然后小的数在前面会 阅读全文
posted @ 2018-10-15 15:58 baccano! 阅读(745) 评论(0) 推荐(0)
摘要:代码 include using namespace std; int bk[110]; string sj(int t) { string ans=""; for(int i=0;i e; if(e=="easy") sum=5; else if(e=="normal") sum=8; else 阅读全文
posted @ 2018-10-14 00:35 baccano! 阅读(272) 评论(0) 推荐(0)
摘要:很简单的算法,现在用的是循环的形式的。注意中间变量设置成x+(y x)/2(紫书上说为了确保靠近区间起点)左边变大设置成x=t+1;右边变小设置成y=t; 代码(基本思路,可以随意转换实现历程) 阅读全文
posted @ 2018-10-13 22:51 baccano! 阅读(102) 评论(0) 推荐(0)
摘要:转载自(https://www.cnblogs.com/lca1826/p/6748372.html) 由于是二进制,很自然地想到用位运算这个强大的工具: & 和 ,&运算通常用于二进制取位操作,例如一个数 & 1 的结果就是取二进制的最末位。还可以判断奇偶x&1==0为偶,x&1==1为奇。 运算 阅读全文
posted @ 2018-10-12 21:29 baccano! 阅读(185) 评论(0) 推荐(0)
摘要:生成方式 总共有两种算法,第一种就是用自带的srand(time(0));和rand()即可,如果需要那么使用余数即可。rand()%5+1;这个就表示的1 5的随机数。实际上rand()产生的随机数是从1到INT_MAX的。(rand()%6)+5;表示的就是5 10(闭区间)的随机数。 代码 w 阅读全文
posted @ 2018-10-12 12:41 baccano! 阅读(521) 评论(0) 推荐(0)
摘要:十分的简单。。。感觉比网上的那些一堆要简单一些吧。 我的代码 阅读全文
posted @ 2018-10-10 23:23 baccano! 阅读(500) 评论(0) 推荐(0)
摘要:简介(直接复制别人的) 基数排序又称为“桶子法”,从低位开始将待排序的数按照这一位的值放到相应的编号为0~9的桶中。等到低位排完得到一个子序列,再将这个序列按照次低位的大小进入相应的桶中,一直排到最高位为止,数组排序完成。 我自己的理解步骤 ①先把这一堆数的最大位数找出来。 ②找出最大的位数之后,设 阅读全文
posted @ 2018-10-10 12:40 baccano! 阅读(326) 评论(0) 推荐(0)