题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698

现有n个金属(编号1---n),每个金属的材质都是铜,有m个操作,每个操作都是把编号 L 到 R 区间的金属变成(铜,银,金)三种中的一种,其中三种材质的代号和价值是(铜1,银2, 金3);最后求n个金属的所有价值总和;

#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include <vector>
#include <algorithm>
#include <string>
using namespace std; #define N 100010
#define MOD 1000000007
#define met(a, b) memset(a, b, sizeof(a))
#define INF 0x3f3f3f3f typedef long long LL; #define Lson r<<1
#define Rson r<<1|1 struct Tree
{
int L, R, sum;
int Mid() { return (L+R)/; }
int len() { return (R-L+); }
}a[N<<]; void Build(int r, int L, int R)
{
a[r].L = L , a[r].R = R, a[r].sum = ;
if(L == R)return;
Build(Lson, L, a[r].Mid());
Build(Rson, a[r].Mid()+, R);
}
void Down(int r)
{
if(a[r].sum && a[r].L != a[r].R)
{
a[Lson].sum = a[Rson].sum = a[r].sum;
a[r].sum = ;
}
} void Update(int r, int L, int R, int num)
{
if(a[r].sum == num) return; Down(r); if(a[r].L == L && a[r].R == R)
{
a[r].sum = num;
return;
}
if(R <= a[r].Mid())
Update(Lson, L, R, num);
else if(L > a[r].Mid())
Update(Rson, L, R, num);
else
{
Update(Lson, L, a[r].Mid(), num);
Update(Rson, a[r].Mid()+, R, num);
}
} int Query(int r)
{
if(a[r].sum !=)
return a[r].sum*a[r].len();
int ans = ;
ans += Query(Lson);
ans += Query(Rson);
return ans;
}
int main()
{
int T, n, m, t = ;
scanf("%d", &T);
while(T--)
{
scanf("%d %d", &n, &m);
Build(, , n);
while(m--)
{
int L, R, num;
scanf("%d %d %d", &L, &R, &num);
Update(, L, R, num);
}
int ans = Query();
printf("Case %d: The total value of the hook is %d.\n", t++, ans);
}
return ;
}

Just a Hook---hdu1698(线段树---区间处理)的更多相关文章

  1. hdu1698 线段树区间更新

    Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  2. Just a Hook(线段树区间更新)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698 In the game of DotA, Pudge’s meat hook is actual ...

  3. hdu1698(线段树区间替换模板)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1698 题意: 第一行输入 t 表 t 组测试数据, 对于每组测试数据, 第一行输入一个 n , 表示 ...

  4. 题解报告:hdu 1698 Just a Hook(线段树区间修改+lazy懒标记的运用)

    Problem Description In the game of DotA, Pudge’s meat hook is actually the most horrible thing for m ...

  5. HDU 1698 Just a Hook(线段树区间替换)

    Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  6. HDU 1698 Just a Hook (线段树区间更新)

    题目链接 题意 : 一个有n段长的金属棍,开始都涂上铜,分段涂成别的,金的值是3,银的值是2,铜的值是1,然后问你最后这n段总共的值是多少. 思路 : 线段树的区间更新.可以理解为线段树成段更新的模板 ...

  7. hdoj 1698 Just a Hook 【线段树 区间更新】

    题目大意:有一段链子.初始的时候是铜的(价值为1),n代表有n段(1~n),输入a, b, c三个数分别表示将从a到b的链子的价值改为c, 最后问你经过多次改变之后的总价值. 策略:这道题是简单的线段 ...

  8. 暑期训练狂刷系列——Hdu 1698 Just a Hook (线段树区间更新)

    题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=1698 题目大意: 有一个钩子有n条棍子组成,棍子有铜银金三种组成,价值分别为1,2,3.为了对付每场 ...

  9. hdu1698线段树区间更新

    题目链接:https://vjudge.net/contest/66989#problem/E 坑爹的线段树照着上一个线段树更新写的,结果发现有一个地方就是不对,找了半天,发现是延迟更新标记加错了!! ...

  10. HDU 1698 Just a Hook(线段树区间覆盖)

    线段树基本操作练习,防手生 #include <cstdio> #include <cstring> #include <cstdlib> #define lson ...

随机推荐

  1. mysql5.7 编码统一utf-8

    查看mysql数据库编码: show variables like 'character%'; mysql> show variables like 'character%'; +------- ...

  2. 【Rmarkdown rmysql】

    http://stackoverflow.com/questions/21167070/how-to-query-multiple-times-and-close-the-connection-at- ...

  3. TODO的用法

    visual studio提供//TODO标记,不过不会在右边标记处明显标识,需要你选择菜单栏的视图进行查看.方法如下: 1.首先在你还未完成的地方打上TODO标记,以下方式均可: 1)//TODO: ...

  4. day23<File类递归练习>

    File类递归练习(统计该文件夹大小) File类递归练习(删除该文件夹) File类递归练习(拷贝) File类递归练习(按层级打印) 递归练习(斐波那契数列) 递归练习(1000的阶乘所有零和尾部 ...

  5. HTML&CSS精选笔记_CSS高级技巧

    CSS高级技巧 CSS精灵技术 需求分析 CSS精灵是一种处理网页背景图像的方式.它将一个页面涉及到的所有零星背景图像都集中到一张大图中去,然后将大图应用于网页,这样,当用户访问该页面时,只需向服务发 ...

  6. swift - 各种手势用法大全

    UIGestureRecognizer有许多子类,用于监听一些常见的手势事件,这些子类主要有: 1.首先创建几个view,来用于手势的检测 let view1 = UIView() let view2 ...

  7. Nginx(三)-- 配置文件之日志管理

    1.日志文件的默认存放位置 默认的日志文件存放位置在:nginx/logs/ 文件夹下,logs文件夹下有:access.log   error.log   nginx.pid 文件 2.nginx. ...

  8. 第十五篇:关于TCP通信程序中数据的传递格式

    前言 在之前的回射程序中,实现了字符串的传递与回射.幸运的是,字符串的传递不用担心不同计算机类型的大小端匹配问题,然而,如果传递二进制数据,这就是一个要好好考虑的问题.在客户端和服务器使用不同的字节序 ...

  9. Activity、Window和View三者间的关系有一定的见解

    一.简述如何将Activity展现在手机上 Tips: Activity本身是没办法处理显示什么控件(view)的,是通过PhoneWindow进行显示的 换句话说:activity就是在造Phone ...

  10. Android的读写文件及权限设置

    drwx read write excute openFileOutput(name,drwx); 用系统api读取文件 设置文件生成的权限:    public static boolean sav ...