07 2016 档案

摘要:先说说最长上升子序列的模板,时间复杂度O(nlogn) dp[i]表示的是到目前为止,当子序列的长度为i时,对应数组a[]中的最小值,用len记录到目前为止可以组成的子序列的最长长度 当处理一个新的a[u]时,a[u]>dp[len]则直接dp[len+1]=a[u]; 当a[u]<=dp[len] 阅读全文
posted @ 2016-07-30 15:56 十目 阅读(782) 评论(0) 推荐(0)
摘要:对1~n的乱序数冒泡排序过程,求解每一个数能到达的最左和最右的位置差 本质就是求解每一个数右边有多少小于他的数,加上现在的位置既是能到达的最右位置,最左位置很直观 用树状数组或者线段树 渣渣现在才发现代码里的线段树比硬来时间复杂度低 线段树代码 树状数组 阅读全文
posted @ 2016-07-30 11:53 十目 阅读(302) 评论(0) 推荐(0)
摘要:先说说kmp模板,本质就是先求小字符串的next数组,即对每个位置i,next[i]以i位置为终点,前缀和后缀相等的最大长度 求出之后以小字符串为基准类似去求大字符串的next,即把小字符串放到大字符串前面求next数组,当大字符串的某一个位置的next是大于等于小字符串长度时则含有小字符串,这个位 阅读全文
posted @ 2016-07-29 16:43 十目 阅读(536) 评论(0) 推荐(0)
摘要:可以先看一下多校的题解感受一下,,, 题意: 设dp[s]=f(s)-Ws; 则很容易设置dp方程dp[i]=max( dp[j] + Wi pot Wj )( j<i ) pot代表一种操作 显然硬来时间复杂度很高,因为是树形结构,dfs遍历的过程中有很多东西可以记录下来,所以想办法事先把dp[j 阅读全文
posted @ 2016-07-26 11:16 十目 阅读(346) 评论(0) 推荐(0)
摘要:详见:https://www.cnblogs.com/c1299401227/p/5402747.html 求割点 int n,m,stamp,low[1005],dfn[1005],iscut[1005];//iscut记录的为割点 vector<int> vec[1005]; void tarj 阅读全文
posted @ 2016-07-25 11:50 十目 阅读(283) 评论(0) 推荐(0)
摘要:题意是盒子的编号为a,b的,要求a>b,(a+b)%2==1,(a+b)%3==0,容易看出1,3,4的位置不能动, 每个位置移到下个位置后奇偶性改变,模3结果也有固定变化(0->0,1->2,2->1),比如模3为1的奇数可以移到模3为2的偶数或者再移到模3为1的奇数,但最终只可能移到模3为1的奇 阅读全文
posted @ 2016-07-24 11:50 十目 阅读(261) 评论(0) 推荐(0)
摘要:题意就是要找一条直线上的点,注意有重点; 组合数公式从0取到n为2n,注意运用就好 C(0,N)+C(1,N)+....+C(N,N)=2N C(R,N)+C(R+1,N)=C(R+1,N+1) 数点的时候每个点有两种情况(出现,不出现),如果与第i个点相同的有m个,那么对于只有相同点时,ans=p 阅读全文
posted @ 2016-07-23 13:53 十目 阅读(341) 评论(2) 推荐(0)
摘要:百度搜一下博弈论 由感性认识到理性认识的论文 理论铺垫: 1、定义P-position和 N-position:其中P代表Previous,N代表Next。直观的说,上一次move的人有必胜策略的局面是P-position,也就是“先 手必败”,现在轮到move的人有必胜策略的局面是N-positi 阅读全文
posted @ 2016-07-22 20:24 十目 阅读(289) 评论(0) 推荐(0)
摘要:01 背包 有n 种不同的物品,每个物品有两个属性,size 体积,value 价值,每种物品只有一个,现在给一个容量为 w 的背包,问最多可带走多少价值的物品。 完全背包 如果物品不计件数,就是每个物品有无数件的话,稍微改下即可 多重背包既是每个物体有一定的重量w和价值v,并且有一定的数量cnt, 阅读全文
posted @ 2016-07-13 16:01 十目 阅读(1734) 评论(0) 推荐(0)
摘要:题意是怎么理解的我也不知道,就抄了一下 题目大意:给出n个等边三角形,每个顶点都可以是1~3中的一个数,一个等边三角形三个顶点的总和不能是6。在n个三角形中只要有一个等边三角形满足条件,当前情况就是合格的,问有多少种合格的情况。 解题思路:所有的情况27n,没有一个三角形满足条件7n,案27n−7n 阅读全文
posted @ 2016-07-11 12:10 十目 阅读(217) 评论(0) 推荐(0)
摘要:正常思路咯,f[i]=f[j]+max(a[j+1],a[j+2]....a[i]),枚举j,显然硬来会超时,所以需要有一个单调队列来时时把最大值尽快弄出来并且需要一些剪枝; 剪枝条件有两个,一个是和不能超过m,一个是显然f[i]是个非严格递增序列,根据这两个条件剪枝; 则建立单调队列,每当插入新的 阅读全文
posted @ 2016-07-09 19:49 十目 阅读(477) 评论(2) 推荐(0)
摘要:入门的斜率dp,wa了真的好多发,,, dp方程为dp[i]=dp[j]+a[i]+(i-j)*(i-j-1)/2; 基本正常思路设i>j>k,假设j比k优 dp[j]+(i-j)(i-j-1)/2<dp[k]+(i-k)*(i-k-1)/2; 化简得dp[j]-dp[k]+(j*j+j)/2-(k 阅读全文
posted @ 2016-07-08 16:05 十目 阅读(196) 评论(0) 推荐(0)