bnu 49100:超级线段树

来源:互联网 发布:画家知一作品图片 编辑:程序博客网 时间:2024/04/30 13:19

超级线段树

Time Limit: 5000ms
Memory Limit: 65536KB
64-bit integer IO format: %lld      Java class name: Main
Prev 
Submit Status Statistics Discuss
 Next
Type: 
None
 

whalyzh是一个数据结构弱渣,于是他决定恶补一下。众所周知,线段树可以实现对一个[L,R]区间进行一些操作,比如加上一个数或者求最值等等……一天,whalyzh遇到一道题,需要对一个序列进行M次区间操作,由于操作的种类很多,做着做着whalyzh就晕了。现在,他只想知道M次操作后序列中每个数最后一次被执行的操作是什么?

Input

输入数据有多组。

第一行输入一个整数T(T≤10),表示数据组数。

每组数据第一行为两个整数N(N≤10^6)、M(M≤10^6),分别代表序列长度和操作次数。

接下来M行每行三个整数L、R、P(1≤L≤R≤N, 1≤P≤10^6),代表对区间[L,R]执行了操作P。

Output

每组数据输出N行,第i行输出表示序列第i个数最后执行的操作,如果没有执行过操作输出0。

Sample Input

13 21 2 11 1 2

Sample Output

210
仰慕Q神。

先写线段树,被T掉。。。。

从后往前染色,每个点维护到最右端被染色的点,这样从后往前的时候对要操作的点如果被染色了,不能管他,直接跳到最右端没有被染色的点。使用并查集维护。

代码:

#pragma warning(disable:4996)#include <iostream>#include <functional>#include <algorithm>#include <cstring>#include <vector>#include <string>#include <cstdio>#include <cmath>#include <queue>#include <stack>#include <deque>#include <set>#include <map>using namespace std;typedef long long ll;#define INF 0x33ffffff#define eps 1e-8const ll mod = 1000000007;const int maxn = 1e6 + 5;const double PI = acos(-1.0);struct no{int le;int ri;int p;}node[maxn];int n, m;int fa[maxn], col[maxn];stack<int>st;int getfa(int x){while (fa[x] != x){st.push(x);x = fa[x];}while (!st.empty()){fa[st.top()] = x;st.pop();}return x;}void uni(int x, int y){x = getfa(x), y = getfa(y);if (x == y)return;if (x < y){fa[x] = y;}else{fa[y] = x;}}void solve(){int i, j;scanf("%d%d", &n, &m);for (i = 1; i <= n; i++)fa[i] = i;for (i = 1; i <= m; i++){scanf("%d%d%d", &node[i].le, &node[i].ri, &node[i].p);}memset(col, 0, sizeof(col));for (i = m; i >= 1; i--){int le = node[i].le;int ri = node[i].ri;int p = node[i].p;if (col[le]){le = getfa(le) + 1;}while (le <= ri){col[le] = p;if (le > 1 && col[le - 1]){uni(le, le - 1);}if (le < n&&col[le + 1]){uni(le, le + 1);}le = getfa(le) + 1;}}for (i = 1; i <= n; i++){printf("%d\n", col[i]);}}int main(){int t;scanf("%d", &t);while (t--){solve();}return 0;}




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子脸上被蚊香烧了留下了疤怎么办 微信怎么修改支付密码忘了怎么办 去网鱼网咖上网没带身份证怎么办 淘宝买家号忘了账号和密码怎么办 80多岁的老人前列腺疼怎么办啊 新浪微博发二维码让我入群我怎么办 队友送的太崩了打野应该怎么办 该商品不支持在当前地区销售怎么办 此商品不支持在当前地区销售怎么办 村淘商品在淘宝没展现怎么办 qq音乐不小心充了会员怎么办 古奇的包五金磨掉色了怎么办 淘宝购物津贴买的东西退款怎么办 淘宝买的东西质量太差怎么办 咸鱼上买的东西有问题怎么办 咸鱼买到的东西有问题怎么办 天猫超市买的东西有问题怎么办 满白天的宝宝睡觉总哭怎么办 京东退货显示在售后检测要怎么办 装修公司定金交了公司关门怎么办 背冷、腰泠、屁股冷、大腿冷怎么办 买家退款把卖家地址写错了怎么办 退款编号写错了提交了怎么办 京东购物收到货第二天搞活动怎么办 玩王者荣耀来电话断网怎么办 苹果7p玩王者荣耀卡怎么办 手机丢了隐私空间里面的照片怎么办 微信内存满了打不开了怎么办 u盘内存满了打不开了怎么办 清算组出的报告书无法清算怎么办 手机停机了收不到快递取件码怎么办 买东西货到了不小心确认收货怎么办 不小心用了蚂蚁花呗怎么办 q微店忘记密码怎么办微忘记密 在优酷买了开通会员不想续费怎么办 微店怎么卖吃的要认证怎么办 在天猫买东西遇到不讲理卖家怎么办 天猫退货收到退款了卖家拒绝怎么办 申请退款保证金不够的情况下怎么办 发奖品把钱骗走了应该怎么办? 淘宝东西没到自动确认了收货怎么办