线段树
QD演绎阿
这个作者很懒,什么都没留下…
展开
-
The 2021 ICPC Asia Regionals Online Contest (I) D Edge of Taixuan (补题)
原题链接题意:给出n,m。n代表村庄的个数(村庄编号1~n),接下来进行m次操作。每次操作给出l,r,w,给[l,r]内所有村庄两两连边,每连一条边的代价是w。进行m次操作后,可能仍然存在不所有村庄不连通的情况,或者所有村庄都连通了。若所有村庄实现连通,现在让你删除尽可能多权重的边,使得删除这些边后所有村庄均保持直接或间接连通,输出被删除边的总权重,否则输出一行错误提示。思路:线段树上贪心。对所有操作按边的权重降序排列,然后依次给线段树的区间赋新值(更小的值),这样总能保证线段树中的点是一直变小的。c原创 2021-09-27 22:08:52 · 139 阅读 · 0 评论 -
The 2021 ICPC Asia Regionals Online Contest (II) L Euler Function (补题)
原题链接题目描述:官网题解:附:欧拉函数总结my code:#include <bits/stdc++.h>using namespace std ;const int N = 1e5 + 10;const long long int Mod = 998244353 ;struct Node{ int l , r ; bool ex[100]; long long mul ; long long sum ;};Node tr[N*4] ;原创 2021-09-27 19:51:17 · 157 阅读 · 0 评论 -
A Busiest Computing Nodes
A Busiest Computing NodesYou have a computing cluster with a total of k computing nodes, labelled from 0 to k−1. The cluster can handle multiple requests at the same time, but each node can process at most one request at the same time.The rules for reque原创 2021-09-21 20:47:17 · 339 阅读 · 4 评论 -
洛谷 P3901 数列找不同(“求区间[L,R]中不重复元素的个数”模板)
求区间[L,R]中不重复元素的个数。思路:可持久化线段树,即对于每个历史版本,仅保留每个元素最靠右的位置。这样,对于每个历史版本有效位置在线段树中被标记为1,无效位置被标记为0,这是一种单点修改+区间查询的基本操作,线段树整体记录区间和。code:#include <bits/stdc++.h>using namespace std;const int N = 1e5+10 ;struct Node{ int l , r , sum ;};Node tr[N*40] ;原创 2021-09-10 15:17:20 · 194 阅读 · 0 评论 -
HDU 7116 Lowbit
原题链接题意:给出一个长度为n的数组a,每次可以进行如下操作。①选择一段区间[L,R] ,令[L,R]中每个数ai = ai + lowbit(ai) , lowbit同树状数组基本操作。②选择一段区间[L,R] ,输出区间和。思路:很容易想到要用线段树 ,难点在于对于线段树的任一子区间是否满足“区间内的任意数都等于它的lowbit值”,满足上述条件的区间我们称之为win(理想)区间。这样,如果一个区间中存在不理想的数,那就要进行必要的单点更新,否则直接对区间整体乘2就是新的区间和。code:原创 2021-09-05 11:35:16 · 126 阅读 · 0 评论