线段树之(三) hdu 1698Just a Hook
来源:互联网 发布:户口本打印软件 编辑:程序博客网 时间:2024/05/18 00:47
应该算简单的一种!!
#include<iostream>
using namespace std;
const int NO = -1;
const int N=100000;
int n,Q;
struct seg_tree
{
int l,r;
int tag;
}tree[4*N];
void make_tree(int cnt,int left,int right)
{
tree[cnt].l = left;
tree[cnt].r = right;
tree[cnt].tag = 1;
if(left+1 == right)
return ;
int mid = (left + right) / 2;
make_tree(2*cnt,left,mid);
make_tree(2*cnt+1,mid,right);
}
void updata(int cnt,int left,int right,int flag)
{
if(tree[cnt].tag == flag)
return;
if(left==tree[cnt].l && right == tree[cnt].r)
{
tree[cnt].tag = flag;
return ;
}
if(tree[cnt].tag != NO)
{
tree[2*cnt].tag = tree[cnt].tag;
tree[2*cnt+1].tag = tree[cnt].tag;
}
tree[cnt].tag = NO;
int mid = (tree[cnt].l+tree[cnt].r) / 2;
if(mid<=left)
updata(cnt*2+1,left,right,flag);
else if(mid>=right)
updata(cnt*2,left,right,flag);
else
{
updata(cnt*2,left,mid,flag);
updata(cnt*2+1,mid,right,flag);
}
}
int find_ans(int cnt,int left,int right)
{
if(tree[cnt].tag != NO)
return (tree[cnt].r-tree[cnt].l) * tree[cnt].tag;
int mid = (left + right)/2;
return find_ans(cnt*2,left,mid) + find_ans(cnt*2+1,mid,right);
}
int main()
{
int cas;
int i,j,k;
cin >> cas;
for(k=1;k<=cas;k++)
{
cin >> n >>Q;
make_tree(1,1,n+1);
int beg,end,flag;
while(Q--)
{
scanf("%d %d %d",&beg,&end,&flag);
updata(1,beg,end+1,flag);
}
printf("Case %d: The total value of the hook is %d./n",k,find_ans(1,1,n+1) );
}
return 0;
}
- 线段树之(三) hdu 1698Just a Hook
- HDU 1698 Just a Hook 线段树
- [hdu]1698 Just a Hook -- 线段树
- hdu 1698 Just a Hook 线段树
- HDU 1698 JUST A HOOK(线段树)
- HDU 1698 Just a Hook 线段树
- HDU 1698 Just a Hook(线段树)
- HDU 1698 just a hook 线段树
- HDU 1698 Just a Hook(线段树)
- hdu 1698 - Just a Hook(线段树)
- HDU 1698 Just a Hook (线段树)
- hdu 1698 Just a Hook 线段树
- hdu 1698 Just a Hook 线段树
- Just a Hook - HDU 1698 线段树
- hdu 1698 Just a Hook(线段树)
- hdu 1698 Just a Hook(线段树)
- HDU - 1698 Just a Hook(线段树)
- hdu 1698 Just a Hook 线段树
- 数据库设计技巧系列(一)——设计数据库之前
- 线段树之(二) hdu1754 I Hate It
- fastReport里面的自定义纸张设置
- sIEve中文使用手册【自己翻译的】
- 用setInterval轮换图片的问题。
- 线段树之(三) hdu 1698Just a Hook
- Delphi 动态调整打印机纸张大小
- 增加规格自定义纸张
- Delphi中票据凭证的精确打印
- 服务器RAID配置全程与RAID基础知识
- Android APN设置及获得手机号
- 线段树之(四) hdu 1166敌兵布阵
- How to Solve a Mathematics Problem?
- 腾讯和盛大都拥有一个宠大的用户群!