Spark RDD 笛卡尔积 val left = sc.parallelize(List(1,2,3))val right = sc.parallelize(List(3,4,5,6))val out = left union right //返回所有元素新的RDD //{1,2,3,3,3,4,5,6}val insterstions = left intersection
【题目来源】http://poj.org/problem?id=2201【题目描述】 Let us consider a special type of a binary search tree, called a cartesian tree. Recall that a binary search tree is a rooted ordered binary tree, such that
This way 题意: 他这个题意稍微的不正确,它应该是放了这个竹子之后就到这个竹子上面(也许)。否则样例,题解和程序就不对了吧。 题解: 大致思路就是这样,我这里用dp代替了f,res代替了g。 sum表示子树的值的和,siz表示子树大小。 ll v=(a[x]-a[fa])*siz[x]-res[ls[x]]-res[rs[x]]; 表示当前点把统治的区间内的所有点的高拆到和父亲
This way 题意: 现在有n个连着的矩形,每个矩形的宽为1,高为a[i],问你在这些矩形内部最大能组成的矩形大小。 题解: 笛卡尔树模板,模板和之前有了一些变化,增加了连边的特判,这样子就算有起始点为0的地方也无妨。当然要注意初始化 #include<bits/stdc++.h>using namespace std;#define ll long longconst i
语句: 1、select a.* from table_a a,table_b b where b.id in (‘1’,‘2’,‘3’) and a.con =b.con 2、select a.* from table_a where a.con in (select con from id in (‘1’,‘2’,‘3’)) 条件: 1、table_a表的con字段是索引,table_b
传送门 建出笛卡尔树,假设当前处理 [ l , r ] [l,r] [l,r],高于最大值的星星只能保留一个 一颗星星可以定位到上述的唯一一个区间,所以我们可以枚举这一棵星星 选了这颗星星的话会 b a n ban ban 掉一些区间的星星,而这个在笛卡尔树上是一条链 如果令 f , g f,g f,g 表示当前区间不选 / 选星星,那么 b a n ban ban 掉的就是强制不选星星