随笔分类 - OJ
ACM
摘要:设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put
阅读全文
摘要:算法复杂度 相关概念: 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。 不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。 时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。 空间复杂度:是指算法在计算机内执行时所需存储空间的度
阅读全文
摘要:算法思想:求n位的字符串的全排列,先确定第0位,然后对后面n-1位进行全排列,在对n-1为进行全排列时,先确定第1位,然后对后面的n-2位进行全排列...由此得到递归函数和递归的结束条件。全排列也就是交换位置,到n-2位时,就是将n-2和n-1交换位置。 例子:abc,第一位是a固定,对后面的bc交
阅读全文
摘要:线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。而未优化的空间复杂度为2N,因此有时需要离散化让空间压缩。 #include<algorithm> #
阅读全文
摘要:平常我们会遇到一些对数组进行维护查询的操作,比较常见的如,修改某点的值、求某个区间的和,而这两种恰恰是树状数组的强项!当然,数据规模不大的时候,对于修改某点的值是非常容易的,复杂度是O(1),但是对于求一个区间的和就要扫一遍了,复杂度是O(N),如果实时的对数组进行M次修改或求和,最坏的情况下复杂度
阅读全文
摘要:动态规划 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<time.h> using namespace std; #define inf 0x3f3
阅读全文
摘要:计算时间 freopen("input2.txt","r",stdin); freopen("output2.txt","w",stdout);
阅读全文
摘要:固定第一个字符,递归取得首位后面的各种字符串组合; * 再把第一个字符与后面每一个字符交换,并同样递归获得首位后面的字符串组合; *递归的出口,就是只剩一个字符的时候,递归的循环过程,就是从每个子串的第二个字符开始依次与第一个字符交换,然后继续处理子串。 * * 假如有重复值呢? * *由于全排列就
阅读全文
摘要:题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 解题思路: 先序遍历第一个位置肯定是根节点node,
阅读全文
摘要:1:输入一个链表,输出该链表中倒数第k个结点。 代码思路如下:两个指针,先让第一个指针和第二个指针都指向头结点,然后再让第一个指正走(k-1)步,到达第k个节点。然后两个指针同时往后移动,当第一个结点到达末尾的时候,第二个结点所在位置就是倒数第k个节点了。 2:输入一个链表,反转链表后,输出链表的所
阅读全文
摘要:输入包含多组测试数据。 对于每组测试数据,第一行为一个正整数n,代表有n个单词。 然后有n个字符串,代表n个单词。 保证: 2<=n<=200,每个单词长度大于1且小于等于10,且所有单词都是由小写字母组成。
阅读全文
摘要:#include #include using namespace std; int a[8000]={2,3}; int hash[80000]={0}; void func() { int i,j,k=2,flag; hash[2]=hash[3]=1; for(i=5;k=a[j];j++) { while(p...
阅读全文
摘要:http://acm.nyist.net/JudgeOnline/message.php?msg=已提交&url=status.php%3Fpid%3D20&second=0 #include<vector>库函数的应用 vector<int>v[100005] 用来记录与某点相连的点 无根树转化为
阅读全文
摘要:暴力模拟找规律: 源代码:
阅读全文
摘要:http://acm.nyist.net/JudgeOnline/status.php?pid=19
阅读全文