
LIS
qkoqhh
这个作者很懒,什么都没留下…
展开
-
XDOJ 1233
一道假LCS。。。原LCS做法,给数组a,b,d[i][j]为以a[i],b[j]为结尾构成的子列的lcsd[i][j]=max{max{d[i-1][k](k=1-j)}+a[i]==b[j]}因为是1-n的排列所以每个数的位置都可以提前确定哪个位置的b[j]==a[i],但由于要维护前缀和所以想到了树状数组(好吧其实是线段树qaq)。。。不过总感觉对单点进行一次标记就用线段树有点大...原创 2017-09-30 16:27:05 · 377 阅读 · 0 评论 -
XDOJ 1107
见标题滚。。。这个题目和我之前想出的题一模一样诶。。。好激动。。其实蛮简单,先按一维排序后求LIS就好了。。#include#define inc(i,l,r) for(int i=l;i<=r;i++)#define dec(i,l,r) for(int i=l;i>=r;i--)#define link(x) for(edge *j=h[x];j;j=j->next)#de原创 2017-09-30 20:57:57 · 486 阅读 · 2 评论 -
hdu6357(DP姿势 LIS->LCS)
这个题想了好久。。其实已经想到枚举x和y了然后就不造怎么dp。。这个姿势比较特殊,得学一下。。枚举完x和y之后先把简化的序列b构造出来,即1 2 3 ..x y y-1 y-2 ... x+1 x y y+1 ... n这样。。然后以类似lcs的方式去匹配b,当然要算重复的点。。具体来说就是设d[i][j]为匹配到原序列i位置和b序列中的j位置的a的最长序列那么d[i][j]=...原创 2018-08-08 01:14:03 · 568 阅读 · 0 评论