
学习笔记
文章平均质量分 58
DQSSS
蒟蒻
展开
-
【笔记】最长上升子序列
题目:求一列数的最长上升子序列O(n^2)定义dp[i]为以num[i]结尾的最长上升子序列的长度,不难写出状态转移方程:dp[i]=max{dp[i],dp[j]+1} (num[j]<num[i] j<i)应该都会。O(nlogn)看上面的那个式子,可以得出dp[i]是从前i-1个中选取dp值最大的j来更新,可以优化到nlogn。定义dp[i]为 长度为i的上升子序列的末尾元素最小值,初始化dp原创 2015-10-09 15:11:17 · 702 阅读 · 0 评论 -
【笔记】如何快速生成随机数 RSA算法
今天学了一下随机化贪心,于是也就顺势学了一下随机数生成。以下是扯淡众所周知,系统有一个rand()函数,windows下可以生成32767以内的随机数,linux下可以生成2147483647以内的随机数。它是用线性同余的方法生成。形如:Xn=(aXn-1+b)%c于是每次都要取一个随机数种子,作为X0来递推。一般情况都这么写:srand(time(0));这样以时间作为种子,每一秒的种子就不同,得原创 2015-10-27 20:49:09 · 4331 阅读 · 3 评论 -
【笔记】表达式运算 栈练习
tyvj1042 表达式计算其实这种题,中缀转后缀才蛋疼……先说如何计算后缀表达式:从前往后扫表达式;若遇到数字,则扔进数字栈中。若遇到算符,则弹出栈顶的两个数字进行计算,再扔进去。最后答案是数字栈里剩下的一个数。那么如何中缀转后缀呢?从前往后扫表达式;若遇到数字,则直接添加进后缀表达式中。若遇到算符,则与栈顶比较(若栈为空则扔进栈中):{ 若当前算符比栈顶算符优先级高,则直接扔原创 2015-10-13 19:26:10 · 758 阅读 · 0 评论 -
【笔记】树的分治
暑假的时候WTH大神就讲过思想了QAQ(顺带Orz Fuckstrom 自悟)树的分治,简单地说,就是把树分为好几个,对于每个递归处理后,再计算整棵树的答案,也就是序列上的分治思想放到了树上。树的分治分为点分治和边分治。点分治,即为把某个点删除后,树分为好多棵,对那些树处理然后计算答案。边分治即割掉边,把树分为两棵,然后进行处理。点分治中被删除的点应该选重心,这样树最多被分logn次,若每次处理当前原创 2015-12-29 20:13:39 · 877 阅读 · 0 评论 -
【笔记】Link-Cut-Tree
动态树问题。维护一个森林,支持树上动态查询、修改、删边、加边、换根等等,但始终保持是一颗树。我学的主要是路径查询和修改。貌似路径和子树不能兼顾…但有一个很厉害的数据结构叫Top Tree,能同时兼顾,听起来好厉害,资料也不多,并没有学…好了,来说一下正题。先想一下树链剖分,引入了轻重链剖分的思想,可以高效地做树上查询&&修改操作,但不能加边删边,也就是相当于一个“静态树”。而动态树,也引入了把树剖成原创 2016-01-05 19:27:01 · 862 阅读 · 4 评论 -
【模板】【笔记】字符串相关
昨天开始学的…随便写点记录一下以免忘了… 因为学的比较混乱,欢迎在评论互相交流,欢迎打脸KMP这是复习…求nxt数组这个DP,思想好好想想就没问题,代码好好看看就没问题,不难会了这个,才能继续往下学…void getnxt(char s[]){ nxt[0] = nxt[1] = 0; int l = strlen(s); for(int i = 1;i < l;i ++原创 2016-02-25 20:25:01 · 892 阅读 · 0 评论 -
【笔记】二分图、网络流相关
二分图这里的证明都是大概只有我能看懂的不严密证明…最小点覆盖=最大匹配概念:二分图中选最少得点,使其覆盖所有的边。可以贪心地去选点,使点出现在最大匹配上。最小边覆盖=顶点数-最小点覆盖概念:二分图中选最少的边,使其覆盖所有点。首先可以贪心地选最大匹配上的边,因为这样可以一条边覆盖两个点。剩下的点只能由其他边一条边覆盖一个点了。设最大匹配数为m,选的其他边的数量是a,满足2m+a=n,答案是m+a=n原创 2016-03-07 10:21:40 · 986 阅读 · 0 评论 -
【模板】【笔记】数论各种姿势等等
数论的东西比较烦…最近脑子有点乱,学一点就赶紧记下来,以免忘了……先贴个线性筛:void shai(){ for(int i = 2,tot = 0;i <= n;i ++) { if(!vis[i]) pri[++ tot] = i;//当i是素数时 for(int j = 1,m;j <= tot && (m = i * pri[j]) <= n原创 2016-01-18 20:57:19 · 1325 阅读 · 6 评论