2019年8月22日

折半枚举——poj3977

摘要: 暴力搜索超时,但是折半后两部分状态支持合并的情况,可用折半枚举算法 poj3977 给一个序列a[],从里面找到k个数,使其和的绝对值最小 经典折半枚举法+二分解决,对于前一半数开一个map,map[sum]里存下凑出当前sum的最小元素个数 枚举后面一半的所有情况,然后lower_bound去找m 阅读全文

posted @ 2019-08-22 21:03 zsben 阅读(232) 评论(0) 推荐(0)

树形dp换根,求切断任意边形成的两个子树的直径——hdu6686

摘要: 换根dp就是先任取一点为根,预处理出一些信息,然后在第二次dfs过程中进行状态的转移处理 本题难点在于任意割断一条边,求出剩下两棵子树的直径: 设割断的边为(u,v),设down[v]为以v为根的子树的直径长度,up[v]为u所在的子树的直径长度,那么down[v]就是很常规的子树直径的换根dp的求 阅读全文

posted @ 2019-08-22 17:25 zsben 阅读(484) 评论(0) 推荐(0)

hdu第九场多校

摘要: 02:线段树两次扫描 #include<bits/stdc++.h> #include<vector> using namespace std; #define maxn 300005 struct Line{int x,y;char s[10];}a[maxn]; int n,m,K; int c 阅读全文

posted @ 2019-08-22 08:57 zsben 阅读(176) 评论(0) 推荐(0)

导航