摘要: f[i]表示第i个在自己位置上的最大值则f[i]=max(f[j])+1其中j j-a[j]=0j-a[j]>=0发现后两项可以推出第一项,所以是一个LIS问题,排序后树状数组优化DP即可,时间复杂度$O(n\log n)$。#include#include#define N 100010int n... 阅读全文
posted @ 2015-07-01 23:53 Claris 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 论文题。随便取个关键点,求出最短路树。求出所有关键点组成的虚树,将两端都在虚树上的边保留。对剩下的边求出最小生成树即可得到一组可行解。#include#includeconst int N=5010,M=500010,inf=~0U>>1;int n,m,p,i,x,f[N],id[N],ans,c... 阅读全文
posted @ 2015-07-01 22:05 Claris 阅读(429) 评论(2) 推荐(0) 编辑
摘要: 砝码从小到大放最优,二分答案mid,转化为判定前mid小的砝码能否放完。从大到小考虑砝码,依次扫描每个容器,能放就放。由于砝码重量都成倍数关系,所以最多只有$O(\log n)$种不同的数字,所以总复杂度为$O(n\log^2n)$。#include#include#define N 100010i... 阅读全文
posted @ 2015-07-01 21:32 Claris 阅读(362) 评论(0) 推荐(0) 编辑