wv

「分治」-cdq分治

天大地大妈咪最大 提交于 2020-03-25 03:07:03
cdq分治是一种分治算法: 一种分治思想,必须离线,可以用来处理序列上的问题(比如偏序问 题),还可以优化1D/1D类型的DP。 • 算法的大体思路我们可以用点对来描述。假定我们有一个长度为n的序列,要处理序列中元素点对间的关系。定义一个操作cdq(l,r)表示当前处理序列上区间[L,R]的点对关系。那么我们需要找到[L,R]的中点M,将不同的点对分为三类: • A:两个点都在区间[L,M]上 • B:两个点都在区间[M+1,R]上 • C:两个点分别在[L,M]和[M+1,R]上。 对于前两种情况,分别用cdq(L,M),cdq(M+1,R)解决,也就是甩锅给下一层。 对于第三种情况,我们需要想方设法在当前层的cdq(L,R)中解决。 在解决当前层的问题时,利用已经处理好的左右两边的信息,具体视不同题目而 定。 其实,这样的算法很帅! 例题: A. 陌上花开 题目描述 有n朵花,每朵花有三个属性:花形(s)、颜色(c)、气味(m),用三个整数表示。 现在要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量。 定义一朵花A比另一朵花B要美丽,当且仅Sa>=Sb,Ca>=Cb,Ma>=Mb。显然,两朵花可能有同样的属性。需要统计出评出每个等级的花的数量。 这道题就是一道裸的cdq模板题,但是对于初学的菜鸡(就是我)来说还是异常的艰难,我们知道对于普通的二维偏序问题

Python爬虫 - UserAgent列表

倖福魔咒の 提交于 2020-03-09 13:08:21
PC端: ---Python莫言:https://www.cnblogs.com/Python-XiaCaiP/p/12448041.html PC_USER_AGENT = [ 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E; LBBROWSER)', 'Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET

后缀数组专题与代码模板

南楼画角 提交于 2019-12-27 04:23:47
后缀数组 DA(倍增)算法求 SA[N] 与 Rank[N] (时间O(NlogN),空间O(N)) sa[i] : 表示 排在第i位的后缀 起始下标 rank[i] : 表示后缀 suffix(i)排在第几 height[i] : 表示 sa[i-1] 与 sa[i] 的LCP 值 h[i]: 表示 suffix(i)与其排名前一位的 LCP值 const int N = int(2e5)+10; int cmp(int *r,int a,int b,int l){ return (r[a]==r[b]) && (r[a+l]==r[b+l]); } // 用于比较第一关键字与第二关键字, // 比较特殊的地方是,预处理的时候,r[n]=0(小于前面出现过的字符) int wa[N],wb[N],ws[N],wv[N]; int rank[N],height[N]; void DA(int *r,int *sa,int n,int m){ //此处N比输入的N要多1,为人工添加的一个字符,用于避免CMP时越界 int i,j,p,*x=wa,*y=wb,*t; for(i=0;i<m;i++) ws[i]=0; for(i=0;i<n;i++) ws[x[i]=r[i]]++; for(i=1;i<m;i++) ws[i]+=ws[i-1]; for(i=n-1;i>=0;i--

kuangbin带你飞 后缀数组 题解

ⅰ亾dé卋堺 提交于 2019-12-27 04:23:20
2份模板 DC3 。 空间复杂度O3N 时间复杂度On #define F(x) ((x) / 3 + ((x) % 3 == 1 ? 0 : tb)) #define G(x) ((x) < tb ? (x) * 3 + 1 :((x) - tb) * 3 + 2) const int MAXN = 300010; const int MAXM = 100010; char input[MAXM]; int wa[MAXN],wb[MAXN],ws[MAXN],wv[MAXN],wsd[MAXN],r[MAXN],sa[MAXN]; char str[MAXN]; int dp[MAXM][25]; int c0(int *r,int a,int b) {return r[a] == r[b] && r[a + 1] == r[b + 1] && r[a + 2] == r[b + 2];} int c12(int k,int *r,int a,int b) {if(k == 2) return r[a] < r[b] || r[a] == r[b] && c12(1,r,a + 1,b + 1); else return r[a] < r[b] || r[a] == r[b] && wv[a + 1]< wv[b + 1];} void sort(int *r,int *a

Keras Custom Layer - AttributeError: &#039;Tensor&#039; object has no attribute &#039;_keras_history&#039;

匿名 (未验证) 提交于 2019-12-03 00:57:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: So big picture, I'm trying to make a keras w2v auto-encoder. I tried to follow the CustomVariationalLayer class from this official example . My class is this: class custom_ae_layer(Layer): """custom keras layer to handle looking up wv inputs example from https://github.com/fchollet/keras/blob/master/examples/variational_autoencoder.py """ def __init__(self, **kwargs): self.is_placeholder = True super(custom_ae_layer, self).__init__(**kwargs) def ae_loss(self, reconstruction,emb_lookup): loss = K.sum(emb_lookup - reconstruction,axis=-1)