考虑每一个位置最多开6次左右就会变成1,然后操作就没有意义了,因此对线段树维护区间和和一个标记,表示是否全部都是1,然后对于修改,如果区间标记不是1就暴力下去,是1就不用操作,复杂度为$o(6nlogn)$ 1 #include<bits/stdc++.h> 2 using namespace st ...
分类:
其他好文 时间:
2019-11-10 09:20:13
阅读次数:
75
问题描述 "LG4556" 题解 对于每一个结点,建立一棵动态开点线段树。 然后自低向上合并线段树。 同时维护整个值域的最大值和最大值位置。 $\mathrm{Code}$ ...
分类:
其他好文 时间:
2019-11-10 09:19:24
阅读次数:
93
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=1e5+10; 4 int a[maxn]; 5 int sum[maxn<<2],exc[maxn<<2]; 6 void maintain(int k) 7 { 8 ...
分类:
其他好文 时间:
2019-11-09 23:28:29
阅读次数:
88
description analysis 如果把所有大小关系连成边,小的往大的连,就可以直接上拓扑 暴力连边时间复杂度$O(n^2)$,然而连边的过程,考虑用线段树优化 线段树上的所有儿子节点向父亲节点连$0$边, 每个操作被分成$k+1$个小区间,然后该操作的编号向$k$个区间最大值连$1$边 对 ...
分类:
其他好文 时间:
2019-11-09 16:00:11
阅读次数:
85
"[IOI2007] sails 船帆" 线段树或者其他数据结构维护贪心 分析问题,其实就是要合理安排旗子使得每一行的旗子个数较平均,答案就是$\sum{cnt[i] (cnt[i] 1)/2}$ 考虑高度较低的旗杆放旗子比较不灵活(?),所以我们先让较低的放,不齐的由较高的旗杆补 对于$h,k$, ...
分类:
其他好文 时间:
2019-11-09 14:06:54
阅读次数:
85
"CF280D k Maximum Subsequence Sum" 线段树维护贪心 要取$k$次,考虑贪心策略如下 先取最大的连续子段,然后有两种决策: ? 1.从原来的某一段已经被取的连续子段中取一段最小的断开那个子段 ? 2.另取一个子段 ~~(非常有道理对吧)~~ 接下来考虑用线段树优化这个 ...
分类:
其他好文 时间:
2019-11-09 12:05:41
阅读次数:
92
pyy整队 线段树 问题描述: 众所周知pyy当了班长,服务于民。一天体育课,趁体育老师还没来,pyy让班里n个同学先排好 队。老师不在,同学们开始玩起了手机。站在队伍前端玩手机,前面的人少了,谁都顶不住。于是陆陆 续续有人往队伍最后躲去,但大家都沉迷某骗氪手游,忘记了老师说前面位置有空缺要补齐的要 ...
分类:
其他好文 时间:
2019-11-09 09:31:02
阅读次数:
125
摘自《算法竞赛进阶指南》。 线段树是一种基于分治思想的二叉树结构,用于在区间上进行信息统计。 线段树的基本特征:1.线段树的每个节点都代表一个区间。2.线段树具有唯一的根节点,代表的区间是整个统计范围,如[1,N]。3.线段树的每个叶节点都代表一个长度为1的元区间[x,x]。4.对于每个内部节点[l ...
分类:
其他好文 时间:
2019-11-08 20:41:50
阅读次数:
107
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 题目分析:对于给出的一个很长的区间,对其进行单点更新值和区间求最大值的操作,由于查询的区间很大,且查询次数多,这里用线段树求解将是十分合适的 注意点:1.对于存放线段树的数组大小需要开大一些 2. ...
分类:
其他好文 时间:
2019-11-07 15:00:10
阅读次数:
65