- 博客(29)
- 收藏
- 关注
转载 KMP算法next数组的理解
void Getnext(int next[],String t){ int j=0,k=-1; next[0]=-1; while(j<t.length-1) { if(k == -1 || t[j] == t[k]) //此条件其实包含了两种情况:①k=-1表示所有前缀都不匹配,我们给他记为0 ②可以增长一个匹配,next[++j] = ++k; { j++;k++; next[j] = k;
2020-10-31 15:19:27 186
原创 python 集合
只包含单一元素,无序。一、初始化st={} #符号和字典相同,两者以数据的格式区分st2=set()st3={1,1,2,(1,0,0)} #自动忽略掉重复的1二、变更set1.增长set:add,update2.移除set:remove/discard/pop注意:pop不能带参数,是任意删除3.clear三、集合的运算(交并差对称差)四、集合的判定:...
2020-07-03 19:01:55 86
原创 python 字典(哈希表)
dic1=dict() #空字典dic2={} #空字典dic=dict.fromkeys(("1","2"),15) #通过keys生成一个字典,默认值为15.如果不写15则为None备注:1.key值只能用不可变类型:如数值,字符串,元组poi={(1,0,0):"haochi",(1,1,2):"nanchi"}print(poi[(1,0,0)])...
2020-07-03 18:29:21 1754
原创 python list和tuple
一、list的方法附加:lst.extend(lst2) #把lst2连接到lst后面,改变lstlst+lst2 #生成新的list,连接了lst和lst2lst*3 #把lst重复3次lst.clear() #清空lstlst3=sorted(lst,reverse=True) #返回一个新的列表,lst顺序不变.reverse=True表示从大到小排序lst.sort(reverse=True) #把lst直接排序二、tuple的方法:tuple是一个不可变类型,因此不能使用
2020-07-03 18:05:52 111
原创 分治法及一些杂项
1.快排中的分治写法会在其他题目中用到2.看两个数是不是互质:辗转相除3.分治法写快速幂4.求位数可以用10^k夹逼,然后用对数直接求
2020-04-26 21:19:09 104
原创 二分法与分治法的区别
二分算法是比较一次,直接扔掉不符合要求的那一半。(如果中间的不行,则某一边一定不行)分治不能这么做,它只是做了划分,并没有减小问题规模。(两边分别做,然后整体做一次,其中对整体的操作要求为O(n)复杂度才可以,一般要求两边都要有序,可以在归并排序的思路上更改)...
2020-04-22 12:52:39 3135
原创 二分法小结
1.有一些东西看似连续实则是离散的(见http://cxsjsx.openjudge.cn/practise202002d/J/)2.greater<int>3.二分法本质:按照顺序枚举,如果小的不成立大的一定不成立。这种情况可以用二分法优化时间复杂度4.interval可以设置的非常小(并且要写成0.00000001,使用除法会变成0)见http://cxsjsx.open...
2020-04-20 11:21:46 132
原创 4.15 小tips
1.isdigit(c) 可以判断字符c是不是数字2.char c; c-‘0’ 可以判断c是什么数字3.peek,get,getline
2020-04-15 14:20:03 283
转载 常微分方程数值计算
https://wenku.baidu.com/view/0733db546429647d27284b73f242336c1fb93047.htmlhttps://blog.csdn.net/susanliuliu28/article/details/78804759
2020-04-03 22:22:10 534
原创 【C++新特性尝鲜之】unordered_map bitset 特殊for循环
#include<iostream>#include<cstdio>#include<unordered_map>#include<bitset>using namespace std;int main(){ //测试unordered_map(哈希表) unordered_map<char,bool> maps;...
2020-04-03 12:13:12 431
原创 【杂项总结】筛法,内部类,typedef,typename
1.筛法:做表一般只需要做到sqrt(n)。①判断某个数是否为质数:只需要做到sqrt(n)+1,如果目前有有一个质因数,则他为合数;如果没有则为质数。②判断质因数个数:做到sqrt(n)+1,每次判断出一个就用n/primei,直到不能再/primei。这样做到头,如果没找到质因数则n一定为质数(质因数个数为0);若n辗转相除之后!=1,且找到至少一个质因数,则质因数个数++。(例题见h...
2020-03-31 10:00:28 123
原创 STL容器的常用成员函数
一、vector&deque (唯二支持随机访问的容器)1.插入:v.push_back(5);v.insert(it,5); //在制指定位置插入v.insert(p,n,t);//在p迭代器位置插入n个tv.insert(p,b,e);//在p迭代器位置插入b迭代器和e迭代器之间的元素dq.push_front();2.删除v.pop_back();v.eras...
2020-03-30 10:26:37 603
原创 lambda函数和STL里面的对象类模板
在一个函数填空的作业里面有一道题必须使用一个已经有的函数,而不可以自己提前定义,有这样几种解决方案:http://cxsjsx.openjudge.cn/hw202008/E/E:白给的list排序1.使用lambda表达式,其格式如下:[]()->returntype {}(); 具体见一下两篇文章https://blog.csdn.net/a379039233/art...
2020-03-26 11:38:13 183
原创 函数对象
1.定义:看起来是一个类,但是由于重载了圆括号,所以可以视为一个函数这样使用class myfunc{public: int val; myfunc(v):val(v){} bool operator() (int a,int b){ if(a<b && b<val) return true; return false; }}2.用法:...
2020-03-26 11:12:58 104
原创 string类的一些总结
一、初始化:string s1("Hello"); string month = "March"; string s2(8,’x’);//生成8个x的一个字符串错误示范:不可以用单个字符(即单引号扩起的字符初始化)string error1 = ‘c’; // 错二、流操作:1.用cin读到空格为止2.单独的getline函数,可以读入空格。但是遇到诸如换行符等会停止(且...
2020-03-26 10:52:12 271
原创 关于深搜和广搜的一些笔记
先引用一些前人的想法今天也终于领略到什么是深搜什么是广搜的区别和特点了,其实一直不太懂什么时候用深搜,什么时候用广搜,虽然两种都有用过,但是都是结合解题报告或者其他途径来做的,总感觉深搜用起来比较顺手,感觉很多题都可以用深搜来解决,但是今天遇到的这个题用深搜怎么想方设法都不好用,结果应该正确,但是就是TimeLimit,只好用广搜来解了,也颇费周折的各方面查资料知道了广搜一般用在有这样的提示:...
2020-03-07 17:49:30 403
原创 程设第四周作业总结+字符串用法总结
1.流插入,流提取运算符的重载只能作为全局函数进行,如果必须在类内写,可以考虑重载类型转换运算符(见笔记)。2.在类内也可以写非成员函数(写成友元函数就不是成员函数了,这样可以在类内重载<<和>>)3.如果是一个二维数组类,想要写出类似 a[i][j] 这种效果,可以考虑只重载第一个【】,其返回值类型为int*,这样第二个【】就不用重载了 见2020程序设计实习之运算...
2020-03-04 21:32:59 141
原创 程设前三周作业总结
HW1:关于位运算的一些trick①需要搞出一半0一半1,可以考虑用0xffffffff左移或者右移。然后根据前面0还是后面0来取反。②需要特定更改某一位(某些位):这些位以外的置为0,然后与原来的数进行|操作;或者其他位置为1,与原数进行&操作HW2&HW3:①关于复制构造函数加const问题如果一个参数是以非const引用传入,c++编译器就有理由认为程序员会...
2020-02-26 15:10:45 105
原创 几道没写的动规题 2373: Dividing the Path 1390Blocks 1037 A decorative fence
1.2373 时间复杂度会超,主要在于使用优先队列进行优化,且要注意memset的时间复杂度和for相同2.1390 递归思路比较复杂,需要合理的向里面加一个参数来完成递归3.1037 好像真的挺难,我还没写没看视频...
2020-02-13 19:22:01 103
原创 2020.2.11动态规划/记忆递归总结+例题(1191棋盘分割 1661帮助jimmy 2760数字三角形 4152最佳加法表达式 2757最长上升子序列 1458Common Subsequen)
【思路总结】1.什么时候使用动态规划(记忆递归):当题目所求解为一个最优化问题(最小,最大等)问题的时候,并且问题可以进一步分解为求解每个子状态的最优,就应该努力寻找所求状态到子状态的递推关系,进行动态规划2.关于动态规划和记忆型递归的关系:一般来说,对于一个我们可以找到递推式的题目而言,既可以使用记忆型暴力递归(写法和死路上简单),也可以使用动态规划(减少栈的溢出问题,但是思维上比较困难...
2020-02-13 19:11:35 257
原创 2020.2.11 算法基础例题总结(4147 汉诺塔问题的栈写法,理解递归的工作原理)
4147 汉诺塔问题(栈写法)#include<cstdio>#include<cstdlib>#include<iostream>#include<cstring>#include<stack>using namespace std;class problem{public: int min_No,max_No...
2020-02-13 17:28:55 123
原创 2020.2.10 算法基础例题总结( 2811 熄灯问题(枚举)2812恼人的青蛙(枚举) 2802小游戏(递归+回溯+剪枝/迷宫问题))
2811 熄灯问题(枚举)#include<cstdlib>#include<cstdio>#include<cstring>#include<iostream>using namespace std;bool test(int puzzle[][7],int press[][7]){ for(int i=2;i<=6;+...
2020-02-10 18:48:39 763
原创 关于域操作符(::)和.的区别
比如定义了class Myclass{public: int s; void set(){}}int main(){ Myclass C; Myclass::set; C.s=0;}
2020-02-05 16:46:23 490
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人