![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
zju_cxl
需有广博之学识,强健之体魄与自乐其中之爱好。
展开
-
trie树
#include <iostream>using namespace std;const int maxn = 1e5+7;int son[maxn][26],count[maxn],idx=0;bool insert(string s){ int p = 0; for(int i=0;i<s.length();i++){ int u = s[i] - 'a'; if(!son[p][u]) son[p][u] = ++idx;.原创 2021-02-14 20:38:37 · 96 阅读 · 0 评论 -
单调栈
什么是单调栈?顾名思义,单调栈就是一个栈,栈中的单调的,单调栈也分为单调递增栈和单调递减栈,实质上就是把一些冗余的状态去除了。单调递增栈:单调递增栈就是从栈底到栈顶数据是从大到小 单调递减栈:单调递减栈就是从栈底到栈顶数据是从小到大单调栈的使用场景一般为找离某元素最近的最大(最小)的数例题:给定一个长度为N的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出-1。input:53 4 2 7 5output:-1 3 -1 2 2示例代码:#原创 2021-02-14 13:07:09 · 162 阅读 · 0 评论 -
KMP算法--字符串匹配
kmp算法简介KMP算法一种改进的模式匹配算法,是D.E.Knuth、V.R.Pratt、J.H.Morris于1977年联合发表,KMP算法又称克努特-莫里斯-普拉特操作。它的改进在于:每当从某个起始位置开始一趟比较后,在匹配过程中出现失配,不回溯i,而是利用已经得到的部分匹配结果,将一种假想的位置定位“指针”在模式上向右滑动尽可能远的一段距离到某个位置后,继续按规则进行下一次的比较。next数组的含义KMP的关键在于next数组。next数组的含义为以i为终点的最长的相同前后缀。举个原创 2021-02-14 12:57:55 · 425 阅读 · 0 评论 -
优美的归并排序
归并排序的思想:确定分界点 mid=(l+r)/ 2递归排序left、right归并,合二为一其中第三步归并的思想类似于两个有序列表合并。归并排序时间复杂度为nlogn,且是稳定的,需要借助额外辅助空间。#include <iostream>using namespace std;const int maxn = 1e5+7;int a[maxn],tmp[maxn];void merge_sort(int l,int r){ if(l>=r){原创 2021-02-02 22:59:54 · 71 阅读 · 0 评论 -
优美的快速排序
快排的本质是分治。快排的一般思路:选择一个标准点x使数组左边的都比x小,右边的都比x大递归处理左右数组给出一个优美的快排模版:#include <iostream>using namespace std;const int maxn = 1e5+7;int a[maxn];void quick_sort(int l,int r){ if(l>=r){ return; } int i = l-1, j = r+原创 2021-02-02 22:10:14 · 96 阅读 · 0 评论 -
memset与for循环赋初值比较
写代码的时候思考了一会儿memset初始化快还是for循环初始化快。看了大量的文献资料,结论如下:如果对于一个数组进行赋初值操作,memset肯定比for循环快memset赋初值是按字节为单位的,如果要赋一些比较难的值(33,22等),就比较难接上,因为memset是按字节为单位赋初值,当变量所占字节数越大,速度越慢(int的数组比char慢)测试代码如下:#include <iostream>#include <string>#include <cstri原创 2021-01-27 23:46:58 · 5014 阅读 · 1 评论 -
C# Winform界面美化(借助IrisSkin实现)
一.添加控件IrisSkin4.dll。方法: 先把IrisSkin4.dll文件添加到当前项目引用(解决方案资源管理器->当前项目->引用->右键->添加引用,找到IrisSkin4.dll文件.....).IrisSkin4.dll文件最好放在当前项目bin\Debug文件中. 1.右键“工具箱”→“添加选项卡”改名为→“我的皮肤”。 2.右键“皮肤”→“选择项”弹出对话框 3.点击“浏览“→找到IrisSkin...原创 2020-06-29 20:30:09 · 1147 阅读 · 0 评论 -
Clion上运行多个cpp文件(内含多个main函数)
由于电脑用的mac,以前用的xcode,但是xcode太重量级了,这次重装系统以后C++改用了clion,但是发现clion不可以一下运行多个cpp文件,这样在比赛时不能同时开多个文件敲代码,就很郁闷,于是搜一搜看一看,发现只要把cmakeLists.txt文件里的内容改一改就好了:如果包含多个main函数,就得另外起开一个标签,再在右上角(也不一定是右上角hhh)选择标签,再运行即可。...原创 2019-06-16 15:19:04 · 5751 阅读 · 5 评论 -
操作系统 页面替换算法LRU与OPT的实现
操作系统中讲到的OPT算法,即优化替换算法,是用当前时刻以后的的页地址流来判断当前应该替换哪一块。简而言之,是将当前frame中,以后最长时间不会用到的替换掉。OPT是一种理想算法,这种算法常常用于估算其他算法的效率,因为在实际中,当前时刻是不知道以后时刻的页地址流的,故这种算法在实际中是不可能实现的。LRU算法,即近期最少使用算法(Least Recently Used),即选择近期最少访问...原创 2019-07-03 17:23:28 · 2739 阅读 · 0 评论 -
B. Neko Performs Cat Furrier Transform Codeforces Round #554 (Div. 2)
B. Neko Performs Cat Furrier Transformtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputCat Furrier Transform is a popular algorith...原创 2019-04-26 20:43:49 · 109 阅读 · 0 评论 -
邻接表中删除一个顶点和与之相关的边
在邻接表中,删除一个顶点需要先删除其在顶点数组中的存储,再删除在其他结点中与被删除节点相关的边,具体代码如下:/* * 邻接表的定义 * 采取头结点数组+边表节点链表的结构 */map<string,int> mmp;//映射字符串和坐标之间的关系struct ArcNode//边表节点{ string name; int wigth; A...原创 2019-03-20 15:41:05 · 6172 阅读 · 2 评论 -
邻接表排序(链表排序)
采取冒泡的思想,一次选取两个,再套一层循环即可,但是由于在邻接表中表头节点和边表节点的数据类型并不一样,因此这相当于一个没有头结点的链表的排序。可以优化一下的是:如果走一遍没有发生交换,说明已经有序了,因此就不用再进行冒泡了。可以直接跳出循环,减少循环次数。在边表节点中,我存储的是string类型的数据,按照其在表头节点中的索引顺序从大到小排序,这样便于在dfs和bfs的过程中对同一个图得...原创 2019-03-20 15:35:01 · 2012 阅读 · 0 评论 -
图与其基本算法的实现--用邻接表来存储
图主要用的数据结构是邻接表,邻接表适用于稀疏图中,比较节省空间,如果在稀疏图中采用邻接矩阵的存储方式,容易造成空间上的浪费。但邻接表中的边点用的是vector实现的,没有采取链式的结构(感觉这样写简单些,手动滑稽)。主要实现了有向图的存储,而无向图只要在加边的时候把单向的边改成双向的即可。例如:加入1-2这条无向边,只需要加一次1-2和一次2-1就可以了。实现的功能主要有:邻接...原创 2019-03-16 14:47:32 · 578 阅读 · 0 评论 -
POJ - 3278 Catch That Cow (bfs)
题意:农夫在n,奶牛在m,农夫可以进行一下操作:FJ can move from any pointXto the pointsX- 1 orX+ 1 in a single minuteFJ can move from any pointXto the point 2 ×Xin a single minute.也就是说农夫可以进行x-1,x+1,2*x三种操作,问最...原创 2019-03-15 16:24:26 · 121 阅读 · 0 评论 -
结构体排序与sort(STL)的结合
题目如下:Description 自从电子竞技在中国被认定为第99个正式体育项目,教主就投身其中,CS(Counter Strike 反恐精英)是他拿手的一款游戏,有很多职业选手为之付出。 反恐精英中有各种不同的枪械,我们为了简化问题,规定每种枪有自己的名字、杀伤力、价格。 下面要求你按照如下规定给已知的枪支排序: 要求按照枪支的攻击力排序(由大到小),如果...原创 2019-03-03 20:02:39 · 560 阅读 · 0 评论 -
圆的旋转 类的派生与继承
题目如下:Description 将平面上的圆绕任意点(称为旋转中心点)旋转任意角度,输出旋转后的圆的圆心坐标及圆的面积和周长。 Input 有多组数据。 每组数据的前两个数是圆的圆心的起始坐标;第3个数是圆的半径;第4、5个数旋转中心点;第6个数是旋转的角度(单位:度)。 Output 旋转后的圆的圆心坐标及圆的面积和周长。圆心坐标保留4位小...原创 2018-03-22 23:59:24 · 559 阅读 · 0 评论