随笔分类 -  算法/数据结构

摘要:题一 leetcode 168 & 171: A,B,C,...,Z,AA,AB,...,AZ,BA,...,ZZZ,AAAA.... 求第i个字符串 题二 已知a数组大小为N,求b数组 b[i] = a[0] a[1] ... a[i 1 a[i+1] ... a[N 1] O(n)时间复杂度,O 阅读全文
posted @ 2019-10-13 23:52 我在地狱 阅读(770) 评论(0) 推荐(0)
摘要:参考IOI2009《分治算法在树的路径中的应用》 1. 点分治 算法框架 2. 边分治 树中任意点的度数为D。当D为常数时,基于边分治的递归最坏情况下深度为O(logn)。通常D很小, 3~5左右。 POJ1741 统计树中有多少对节点距离 <= k,树的点分治+容斥,时间复杂度O(nlognlog 阅读全文
posted @ 2019-03-04 13:10 我在地狱 阅读(222) 评论(0) 推荐(0)
摘要:hihocoder1609 数组分拆II [dp] 给定数组,问有多少种拆法,使得每一段不出现重复的数字,且要保证分组数最少。(1e5) 题解: O(n) d[i]表示1~i最小划分的段数, f[i]表示1~i在最小划分段数下,划分的方案数 f[i] = sigma f[j], (d[i] = d[ 阅读全文
posted @ 2019-02-26 13:43 我在地狱 阅读(211) 评论(0) 推荐(0)
摘要:描述 有一个无向图,有n个点,m1条第一类边和m2条第二类边。第一类边有边权,第二类边无边权。请为第二类的每条边定义一个边权,使得第二类边可能全部出现在该无向图的最小生成树上,同时要求第二类边的边权总和尽可能大。注:第二类边不会形成环 输入 第一行三个数n,m2,m1 接下来m2行,每行两个数,描述 阅读全文
posted @ 2019-02-23 21:31 我在地狱 阅读(174) 评论(0) 推荐(0)
摘要:51Nod 1291 题意:600*600的01矩阵,统计宽i高j的全1矩阵的个数。 题解:枚举矩阵的下边界,对于每个下边界,统计所有宽极大的矩形的答案(高度可以用差分)。O(nm)的复杂度统计完之后,我们已知所有高度的宽极大的答案,列一下式子发现两次前缀和就是最后答案。 Wannafly挑战赛12 阅读全文
posted @ 2018-11-28 21:35 我在地狱 阅读(1451) 评论(0) 推荐(0)
摘要:参考《stl源码剖析》,用开链法实现了简易hash表,并进行了简单测试。 特点: 1. hash表可扩容。当元素个数大于hash表长的时候,hash表挑选下一个质数,扩容一倍。 2. 提供了hash函数以及equal函数的载入 3. 提供find,insert,erase三个基本操作。 find返回 阅读全文
posted @ 2018-09-08 01:51 我在地狱 阅读(375) 评论(0) 推荐(0)
摘要:1 #include <cstdio> 2 #include <iostream> 3 #include <set> 4 using namespace std; 5 const int N = 1e5+5; 6 7 struct Block { 8 long long begin, all_siz 阅读全文
posted @ 2018-06-06 19:40 我在地狱 阅读(213) 评论(0) 推荐(0)
摘要:本篇是in place algorithm的学习笔记。目前学习的是in place merge与in place martrix transposition这两个算法。 1.in place merge 论文链接:Practical in-place merging 论文讨论的是如何O(n)时间复杂 阅读全文
posted @ 2018-04-30 14:48 我在地狱 阅读(1163) 评论(2) 推荐(1)
摘要:后缀自动机能识别字符串S的所有子串,是一个DAG。 http://blog.csdn.net/huanghongxun/article/details/51112764 https://blog.xehoth.cc/SuffixAutomation/#一些性质 hihocoder上的一堆SAM入门教 阅读全文
posted @ 2018-04-08 20:26 我在地狱 阅读(378) 评论(0) 推荐(0)
摘要:已知数组a[]及其和sum, 求sum! / (a1!a2!...an!) 的个位数的值。 求某数的逆元表写成了求某数阶乘的逆元表,故一直没找到错误。 P 是质数的幂B 表示质数,P 表示模数,cal(n) 将返回 n!,以 a × B^b 形式表示,a为模P的情况下。 1 ll n,x,y,P,B 阅读全文
posted @ 2018-04-07 23:43 我在地狱 阅读(192) 评论(0) 推荐(0)
摘要:以上以二叉树的非递归先序遍历为例。 其他dfs递归也可以类似这么写,以<int NodeID, bool visit>的形式压入栈中。 注意将子节点压栈的时候顺序会改变,要保持与dfs同序,应当将子节点从右往左压栈。 Morris Traversal算法 O(1)空间复杂度, O(n)时间复杂度,允 阅读全文
posted @ 2018-03-28 13:07 我在地狱 阅读(1123) 评论(0) 推荐(0)
摘要:43. Multiply Strings 高精度非负整数的乘法。 1 string multiply(string num1, string num2) { 2 string sum(num1.size() + num2.size(), '0'); 3 4 for (int i = num1.siz 阅读全文
posted @ 2018-02-03 15:57 我在地狱 阅读(875) 评论(0) 推荐(1)
摘要:http://codeforces.com/blog/entry/3107 阅读全文
posted @ 2018-01-12 01:02 我在地狱 阅读(292) 评论(0) 推荐(0)
摘要:makedata.cpp 1 #include <bits/stdc++.h> 2 3 int main() { 4 int n = rand()%2000+1, k = rand()%n+1; 5 printf("%d %d\n", n, k); 6 std::vector<int> v; 7 f 阅读全文
posted @ 2017-11-20 19:38 我在地狱 阅读(174) 评论(0) 推荐(0)
摘要:此篇收集各类DP题。 《1D1D动态规划优化初步》的3个模型 1. f[x] = min(f[i]+w[i, x]), i < x且w[i, x]满足单调性(即w[i, j]+w[i+1, j+1] <= w[i, j+1]+w[i+1, j],下四边形同) 2. f[x] = min(g[i])+ 阅读全文
posted @ 2017-11-05 23:25 我在地狱 阅读(362) 评论(0) 推荐(0)
摘要:http://www.ifrog.cc/acm/problem/1171 题意:给定一个字符串,重排列该字符串中的字符,使得:1.该字符串为最小表示法 2.该字符串的字典序尽可能大。 题解: EAtcoder上的那个题的做法,可以DP……但是比赛中,不少人想出了一个非常简介的贪心做法。 将所有字母作 阅读全文
posted @ 2017-10-29 20:44 我在地狱 阅读(189) 评论(0) 推荐(0)
摘要:花了两天时间学了一下这三种数据结构。 总结 树上的修改与询问 伸展树: 支持Spaly的平衡树。Splay操作可以让节点x旋转到树的根节点。 伸展树在区间插入,区间删除,区间翻转,区间旋转的问题中应用较多。 具体而言,我们可以以区间的下标为关键字构造伸展树。 在x与x+1中插入一段区间,我们可以通过 阅读全文
posted @ 2017-08-30 16:39 我在地狱 阅读(1158) 评论(0) 推荐(0)
摘要:给定一棵n个节点的树,从1到n标号。选择编号连续的若干个点,你需要选择一些边使得这些点通过选择的边联通,目标是使得选择的边数最少。 现需要计算对于n*(n+1)/2种选择的情况,最小选择边数的总和为多少。 给定一棵n个节点的树,从1到n标号。选择编号连续的若干个点,你需要选择一些边使得这些点通过选择 阅读全文
posted @ 2017-07-29 22:16 我在地狱 阅读(310) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/hzf-sbit/p/4056874.html https://www.zhihu.com/question/27316467/answer/36260465 处理一类无修改的离线区间询问问题 复杂度为O(n*sqrt(n)*a),a为单次更新操作的复杂 阅读全文
posted @ 2017-07-22 21:14 我在地狱 阅读(213) 评论(0) 推荐(0)
摘要:Kickstart2017 RoundB B.题意: 二维平面上有n个点, 每个点坐标(xi, yi), 权值wi, 问: 在平面上找一点p, 使得 Σwi*max(|X-xi|, |Y-yi|)最小, (X, Y)为p点坐标。求该最小值。 二维空间: 欧几里得距离:d=√(|x1-x2|2+|y1 阅读全文
posted @ 2017-05-07 19:09 我在地狱 阅读(373) 评论(2) 推荐(1)