2019年7月1日

树上莫比乌斯反演+分层图并查集——cf990G

摘要: /* 树上莫比乌斯反演 求树上 满足 d|gcd(au,av) gcd(au,av)的对数f(d) 如何求: 建立200000层新图,即对于每个数建立一个新图 在加边时,给gcd(au,av)的约数层的图的uv加边 f[i]表示第i层的满足条件 i | gcd(a[u],a[v]) 的对数,那么求一遍并查集,在合并过程中更新f[i]即可, 同时要注... 阅读全文

posted @ 2019-07-01 22:55 zsben 阅读(341) 评论(0) 推荐(0)

构造流量图+乱搞——cf990F

摘要: /* 结论1:有解的充要条件是所有点权之和为0 结论2:删掉环上的一条边,只要将这个环上的其余边都减去这条边的边权,那么这个图仍是等价的 从原图网络中构造出一棵带权值的树即可,其他边权都设置为0 通过dfs建立一棵搜索树 要注意处理边的方向 */ #include using namespace std; #define maxn 200005 struct Edge{int to,nxt,w... 阅读全文

posted @ 2019-07-01 19:15 zsben 阅读(280) 评论(0) 推荐(0)

树形dp经典换根法——cf1187E

摘要: 假设以u为根时结果是tot,现在转换到了以u的儿子v为根,那么结果变成了tot-size[v]+(sizetot-size[v]) 根据这个转移方程,先求出以1为根的tot,然后dfs一次转移即可 阅读全文

posted @ 2019-07-01 16:50 zsben 阅读(422) 评论(0) 推荐(0)

线段树逆序对(偏序)——cf1187D好题!

摘要: /* 排除掉所有不可能的情况,剩下的就是可行的 1.数的数量不相同 2.对任意一个区间进行排序,等价于可以交换任意逆序对, 那么从1到n扫描b数组,判断是否可以将a数组中等于b[i]的值所在的位置j交换到位置i,等价于判断区间a[i,j]是否存在 #include using namespace std; #define maxn 300005 #define inf 0x3f3f3f3... 阅读全文

posted @ 2019-07-01 16:45 zsben 阅读(295) 评论(0) 推荐(0)

导航