上一页 1 2 3 4 5 6 7 8 9 ··· 11 下一页
摘要: 题解的简单写法。 看到值域很小,而且限制我们快速求出贡献的是区间最大值,我们不妨枚举这个区间最大值 \(i\) ,位置是\(p_i\)。 假如 \(i\) 只有一个的话,那么 \(r\) 一定大于等于 \(p_i\),\(l\) 一定小于等于 \(p_i\)。 假如有多个的话,运用扫描线的思想,然后 阅读全文
posted @ 2023-11-07 19:43 Zlc晨鑫 阅读(30) 评论(0) 推荐(0)
摘要: here 首先根据题意,我们不难有数字是连续的这种感悟。 而且限制是值域上的,从下标入手发现难以突破,便从值域上入手。 从小到大考虑每个数字,然后dp,可以参考这篇题解。 至于方案的输出,有两种情况。 只有自己\(i\)和\(i-1\),直接输出即可。 有自己和\(i-1\)的环,定义print输出 阅读全文
posted @ 2023-11-07 18:44 Zlc晨鑫 阅读(28) 评论(0) 推荐(0)
摘要: 贪心题,先假设全部都是w[i],然后你发现最多可以放电之咒个数的两倍,贪心加上这么多w[i](从大到小),但是你发现不能全是电之咒。 后面的限制不好用数据结构维护,考虑让数据结构维护的东西天然满足这个限制,那么直接删去一个电之咒然后选就行了。 那么肯定删去最小的电之咒。 维护的东西有: \[\sum 阅读全文
posted @ 2023-11-07 11:41 Zlc晨鑫 阅读(17) 评论(0) 推荐(0)
摘要: DFS搜索树上有返祖边,等价于图中至少存在一个环。 充分性显然,必要性。 如果是无向图,那就只有树边和返祖边,不存在横插边,没有返祖边那就是一棵树,与图中有环矛盾。 有向图多了横叉边,但是这样不是环,是个DAG,也矛盾。 这个结论常用于深搜判环。 在Fish Graph一题中,dfs只能找到一个任意 阅读全文
posted @ 2023-11-07 09:48 Zlc晨鑫 阅读(66) 评论(0) 推荐(0)
摘要: 这篇题解中也只能找出任意环。 here 每次会把环上的后继加进去,所以刚好每个点都被加入一次。 hn[1]是终点x,然后是它的第一个邻居。 调整的证明看魏老师题解,然后这个操作: 就是找到环上第一个与x直接相连的点,然后调整环为这个环。 反证容易证明这个环是极小的。 他就是按照两条红线(任意一个)的 阅读全文
posted @ 2023-11-06 21:36 Zlc晨鑫 阅读(23) 评论(0) 推荐(0)
摘要: 杨表…… 阅读全文
posted @ 2023-11-06 16:37 Zlc晨鑫 阅读(20) 评论(0) 推荐(0)
摘要: 是我见识少了,真没见过这种的…… 传送门 如果看成有序排列的\((x,y)\)配对,那么可以写成\(r_x-l_y\)。(因为如果是负数,会在\(y,x\)的时候被枚举到,这样就不用考虑max和绝对值了)。 于是,就是分成恰好长度为\(\frac{n}{2}\)的两组,一组贡献为\(r_i\),一组 阅读全文
posted @ 2023-11-06 09:57 Zlc晨鑫 阅读(14) 评论(0) 推荐(0)
摘要: 线段树合并 空间复杂度,一般是根据操作次数来计算的,或者按照题目的空间,算出最大开多少数组。 根据感性理解,线段树的深度是\(\lceil log_2n\rceil\)的,反正\(d = \lfloor log_2n\rfloor+1\)肯定够。 那\(m\)次操作,注意这个操作不一定是原题中的询问 阅读全文
posted @ 2023-11-05 21:45 Zlc晨鑫 阅读(34) 评论(0) 推荐(0)
摘要: 今天写线段树合并的时候,忽然想到可以用vector存树,这样就不用算空间了。 然后有了下面代码: void modify(int& u,int l,int r,int p,int k) { if (!u) u=newnode(); if (l==r) { tr[u].max+=k; tr[u].id 阅读全文
posted @ 2023-11-05 13:32 Zlc晨鑫 阅读(29) 评论(0) 推荐(0)
摘要: 想象一下,冒泡排序交换的两个数一定是原数组的逆序对(反证容易证明:如果不是逆序对,相遇之后不会交换。两个数只有在相遇的时候才会使得下标相对大小互换,相遇之前一定是左的在左,右的在右。而不是逆序对的话,相遇的时候也不会交换,所以就一直不会交换)。 因为有序数组一定没有逆序对,所以逆序对一定换完了,所以 阅读全文
posted @ 2023-11-03 09:58 Zlc晨鑫 阅读(24) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 ··· 11 下一页