摘要: 没啥可说的,就是一边属性一边道具建二分图,把两个属性都连到道具上,然后枚举匹配,如果无法匹配就输出,时间戳优化 cpp include include include using namespace std; const int N=1000005; int n,x,y,h[N],cnt,lk[N] 阅读全文
posted @ 2018-07-28 22:39 lokiii 阅读(145) 评论(0) 推荐(0)
摘要: 设[f[i][j]为1到i,开头数字是j并且是山峰的方案数 注意到当数字j和j 1不相邻时,交换它们会得到一个新的符合要求的序列,所以f[i][j]+=f[i][j 1]; 如果相邻,那么j是山峰,j 1是山谷,这样就是求1到i 1,开头数字是j 1并且是山谷的方案数,也就是f[i][j]+=f[i 阅读全文
posted @ 2018-07-28 22:18 lokiii 阅读(115) 评论(0) 推荐(0)
摘要: 是贪心 先把两个数组排序,然后贪心的选让a数组占优的(如果没有就算输),这是最大值,最小值是2n 贪心选b数组占优 cpp include include include using namespace std; const int N=100005; int n,a[N],b[N],w,ans1, 阅读全文
posted @ 2018-07-28 21:50 lokiii 阅读(120) 评论(0) 推荐(0)
摘要: 总之就是找前面所有点的斜率都严格小于这个点的这样的点的个数 不管是询问还是修改都非常线段树啊,而且相当眼熟~~是不是和hotel有点像啊~~,大概就是区间内记一个len一个max,分别是当前区间答案和区间最大斜率,然后合并区间的时候用右区间递归,分情况讨论更新左区间 这样是两个log…… cpp i 阅读全文
posted @ 2018-07-28 21:41 lokiii 阅读(121) 评论(0) 推荐(0)
摘要: 一眼最大权闭合子图,然后开始构图,画了画之后发现~~我其实是个智障~~网络流满足不了m,于是发现正确的打开方式应该是一眼树上dp 然后仔细看了看性质,发现把依赖关系建成图之后是个奇环森林,这个显然不能直接dp 发现这个环要选的话只能选整个环,所以tarjan缩一下点,然后再跑树上背包就行了 cpp 阅读全文
posted @ 2018-07-28 20:40 lokiii 阅读(112) 评论(0) 推荐(0)
摘要: 常数巨大,lg上开o2才能A 首先预处理出运输计划的长度len和lca,然后二分一个长度w,对于长度大于w的运输计划,在树上差分(d[u]+1,d[v]+1,d[lca] 2),然后dfs,找出所有覆盖所有边的边的边权最大值,然后用最长运输计划减去最大值看是否符合要求即可 upt:我怕不是个傻子…… 阅读全文
posted @ 2018-07-28 20:36 lokiii 阅读(183) 评论(0) 推荐(0)