摘要: 原题链接 考察:线段树(扫描线) 通过本题终于稍微弄懂点扫描线了. 思路: 之前的HDU 1542 Atlantis.因为只要在修改前出现过一次就会被计入长度.且区间总是成对出现,也就是不用处理新的区间. 本题只有出现次数>1才会被记录有效长度,此时在修改前需要处理新出现的cnt>1的区间.即需要将 阅读全文
posted @ 2021-05-20 22:36 acmloser 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:线段树+剪枝 思路: 参考大佬的思路.线段树也能剪枝是我没想到的. 最大的数263最多开方6次就会变成1.考虑到这点可以考虑暴力.每次修改[l,r]实际转化为单点修改,但是要进行剪枝,如果当前区间的最大值已经 = 1,那么就没必要在往下搜. 时间复杂度最坏是O(6*4*N+1e5*l 阅读全文
posted @ 2021-05-20 16:06 acmloser 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:线段树 思路: 还是线段树染色问题.. 但还是和上一题有点区别,单以样例1来说: 5 0 4 4 > 1 5 5 0 3 1 > 1 4 2 3 4 2 > 4 5 3 0 2 2 > 1 3 3 0 2 3 > 1 3 4 颜色与我们定义线段树区间颜色表示相冲突,所以进行坐标偏移. 阅读全文
posted @ 2021-05-20 13:21 acmloser 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:线段树 线段树染色问题 思路: 每次张贴海报都是一次区间修改.而染色区间l,r范围过大.需要离散化.离散化后就可以定义线段树了. struct Node{ int l,r,c;//l,r左右端点.c为该区间的颜色,同时也是懒标记 }tr[N<<3]; 这里定义c为该区间颜色种类是不可 阅读全文
posted @ 2021-05-20 09:08 acmloser 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:线段树 or 模拟 模拟是很简单啦,主要考虑线段树怎么写,本题的线段树比较特殊. 思路: 基本是参考了大佬的题解.本题的懒标记过于特殊把我写懵了.... 操作 0:砍掉[l,r]区间的树与树苗 操作 1:种植[l,r]区间的树苗. 抽象到线段树操作就是 0: [l,r]区间 树数组- 阅读全文
posted @ 2021-05-20 00:36 acmloser 阅读(249) 评论(0) 推荐(1) 编辑