摘要: int merge(int p1,int p2){//合并两棵treap if(!p1)return p2; if(!p2)return p1; if(z[p1].keysplit(int p,int k){//把p拆成两棵树,一棵大小为k,另一棵为n-k if(z[z[p].l].size>=k){ if(!z[p].l)return mak... 阅读全文
posted @ 2017-10-29 21:38 Echo宝贝儿 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 洗澡 /* 这个题不能单纯判断左括号和右括号的多少,而应该从左到右扫一遍,看应该如何配对 */ #include<iostream> #include<cstdio> #include<cstring> using namespace std; char s[100010]; int cnt,ans 阅读全文
posted @ 2017-10-29 16:24 Echo宝贝儿 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 遭遇 /* 因为选的楼是个集合,与顺序无关 而且总花费=c[1]+c[2]+c[3]+|h[1]-h[2]|+|h[2]-h[3]| 我们规定走的顺序从高到低,那么绝对值就可以去掉 所以就可以约掉中间的 枚举起点终点就行了 */ #include<iostream> #include<cstdio> 阅读全文
posted @ 2017-10-29 10:03 Echo宝贝儿 阅读(235) 评论(0) 推荐(0) 编辑