Just a Hook

2023-11-08

http://acm.hdu.edu.cn/showproblem.php?pid=1698

Problem Description
In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes. The hook is made up of several consecutive metallic sticks which are of the same length.



Now Pudge wants to do some operations on the hook.

Let us number the consecutive metallic sticks of the hook from 1 to N. For each operation, Pudge can change the consecutive metallic sticks, numbered from X to Y, into cupreous sticks, silver sticks or golden sticks.
The total value of the hook is calculated as the sum of values of N metallic sticks. More precisely, the value for each kind of stick is calculated as follows:

For each cupreous stick, the value is 1.
For each silver stick, the value is 2.
For each golden stick, the value is 3.

Pudge wants to know the total value of the hook after performing the operations.
You may consider the original hook is made up of cupreous sticks.
 

Input
The input consists of several test cases. The first line of the input is the number of the cases. There are no more than 10 cases.
For each case, the first line contains an integer N, 1<=N<=100,000, which is the number of the sticks of Pudge’s meat hook and the second line contains an integer Q, 0<=Q<=100,000, which is the number of the operations.
Next Q lines, each line contains three integers X, Y, 1<=X<=Y<=N, Z, 1<=Z<=3, which defines an operation: change the sticks numbered from X to Y into the metal kind Z, where Z=1 represents the cupreous kind, Z=2 represents the silver kind and Z=3 represents the golden kind.
 

Output
For each case, print a number in a line representing the total value of the hook after the operations. Use the format in the example.
 

Sample Input
  
  
1 10 2 1 5 2 5 9 3
Sample Output
  
  
Case 1: The total value of the hook is 24.
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
简单的区间求和,改变方式是替换,并不是在原来基础上相加;
#include<stdio.h>
#define NN 250000
struct node
{
	int l,r,ans,flag;
}g[NN*3];
void build_tree(int l,int r,int h)
{
	g[h].l=l;g[h].r=r;g[h].flag=0;
	if(l==r)
	{
		g[h].ans=1;
		return ;		
	}
	int mid=(g[h].l+g[h].r)/2;
	build_tree(l,mid,h+h);
	build_tree(mid+1,r,h+h+1);
	g[h].ans=g[h+h].ans+g[h+h+1].ans;
}
void update(int l,int r,int h,int add)
{
	if(l==g[h].l&&g[h].r==r)
	{
		g[h].flag=add;
		g[h].ans=(g[h].r-g[h].l+1)*g[h].flag;
		return;
	}
	if(g[h].flag)
	{
		g[h+h].flag=g[h+h+1].flag=g[h].flag;
		g[h+h].ans=(g[h+h].r-g[h+h].l+1)*g[h].flag;
		g[h+h+1].ans=(g[h+h+1].r-g[h+h+1].l+1)*g[h].flag;
		g[h].flag=0;
	}
	int mid=(g[h].l+g[h].r)/2;
	if(r<=mid)
	update(l,r,h+h,add);
	else if(l>mid)
	update(l,r,h+h+1,add);
	else
	{
		update(l,mid,h+h,add);
		update(mid+1,r,h+h+1,add);
	}
	g[h].ans=g[h+h].ans+g[h+h+1].ans;	
}
int quire(int l,int r,int h)
{
	if(l==g[h].l&&r==g[h].r)
	{
		return g[h].ans;
	}
	if(g[h].flag)
	{
		g[h+h].flag=g[h+h+1].flag=g[h].flag;
		g[h+h].ans=(g[h+h].r-g[h+h].l+1)*g[h].flag;
		g[h+h+1].ans=(g[h+h+1].r-g[h+h+1].l+1)*g[h].flag;
		g[h].flag=0;
	}
	int mid=(g[h].l+g[h].r)/2;
	if(r<=mid)
	return quire(l,r,h+h);
	else if(l>mid)
	return quire(l,r,h+h+1);
	else 
	return quire(l,mid,h+h)+quire(mid+1,r,h+h+1);
}
int main()
{
	int i,j,k,m,n,a,b,c,ncase,ww;
	scanf("%d",&ncase);
	for(ww=1;ww<=ncase;ww++)
	{
		scanf("%d%d",&m,&n);
	    build_tree(1,m,1);
	    while(n--)
	    {
    		scanf("%d%d%d",&a,&b,&c);
    		update(a,b,1,c);
    	}
    	printf("Case %d: The total value of the hook is %d.\n",ww,quire(1,m,1));
	}
	return 0;
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Just a Hook 的相关文章

  • Mercurial hook 的操作类似于“changegroup”,但仅在推送时?

    我们已经构建了一个变更集传播机制 但它依赖于捆绑和解除捆绑新变更集 如果我们要使用changegroup钩子 那么它会导致循环行为 因为钩子是运行的在拉 推或解绑期间 http mercurial selenic com wiki Hook
  • 键盘挂钩获取组合键(WPF)

    我尝试在这里使用这篇文章 在 WPF C 中使用全局键盘钩子 WH KEYBOARD LL https stackoverflow com questions 1639331 using global keyboard hook wh ke
  • 二叉树实现C++

    二叉树插入 include stdafx h include
  • 用 pandas 查找树中叶节点的所有祖先

    我有一个表 有两列 父 和 子 这是从 SAP ERP 下载的 SETNODE 表 需要在 python 中创建一个数据框 其中每个级别作为其自己的列 相对于其父级和之前的所有级别 在Python 3 中 完整关系的级别数量未知 或始终变化
  • 整数构造变体

    大家好 我遇到了一个有趣的事件 正在寻找解释 在 Java 1 6 中 Integer a new Integer 5 Integer b new Integer 5 System out println a b Integer c 5 I
  • 在 Python 中删除表达式树及其每个子表达式树中第一个元素周围的括号

    目标是实现简化操作 删除表达式树及其每个子表达式树中第一个元素周围的括号 其中表达式作为括在各个括号中的字符串输入给出 这必须适用于任意数量的括号 例如 12 3 45 6 gt 123 45 6 删除 12 周围的括号 然后删除 45 周
  • 任何人都知道 JQuery 插件可以生成类似于 geni.com 上的树形菜单

    大家好 我花了几个小时寻找一个 Jquery 插件来生成像 geni com 上那样的树形菜单模块 如果有人知道 Jquery 中的这样的插件或脚本 请让我知道或指导我如何使用 Jquery 开发这样的功能 请检查我正在寻找什么http w
  • 低级挂钩/SetWindowsHookEx lParam 自动重复?

    在这里阅读 Windows PC 上如何实现键盘自动重复 https stackoverflow com questions 876852 how is keyboard auto repeat implemented on a windo
  • C# - 挂钩现有 COM 对象

    假设我们有一个现有进程 或应用程序 它从 ocx 文件 例如 MyCOMLibrary ocx 调用 COM 对象 有没有办法编写一个 C 库来精确复制 ocx 文件 这样原始应用程序就可以调用您的 C 代码而不是原始 COM 对象 当然
  • 非二叉树的中序树遍历

    对于比二叉树更宽的树 术语 中序遍历 是否有明确定义的含义 或者 前 和 后 顺序是唯一有意义的 DFS 类型吗 我的意思是与n每个节点 gt 2 个子节点 我猜是为了n这甚至可能意味着之后要转到 根 n 2孩子们 但这曾经这样使用过吗 那
  • 在关系数据库中存储树结构的已知方法有哪些? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我可以在C中直接比较int和size_t吗?

    我可以比较一个int and a size t像这样的变量 int i 1 size t y 2 if i y Do something 或者我必须输入其中之一 只要满足以下条件 它就是安全的int为零或正数 如果它是负数 并且size t
  • Silverlight 中的图形可视化

    我有一个表示有向图的数据结构 我正在寻找一个好的 Silverlight 可视化 以允许我从一个节点导航到另一个节点 最好带有一些漂亮的动画 有谁知道这种显示有什么好的 UI 控件或框架吗 甚至是来自另一个领域的样本 也许是社交网络 我的图
  • 删除 woocommerce 店面主页标题 php

    我正在使用 woocommerce 的店面主题 我需要用 php 删除主页标题 h1 我知道 css 解决方案 但我不想使用它 因为我想将 h1 添加到该页面的其他位置 并且在一个页面中包含 2 个 h1 对 seo 不利页 我也知道删除页
  • 如何在PL/SQL中模拟32位有符号整数溢出?

    您知道如何在 Oracle PL SQL 中模拟 32 位整数溢出吗 例如 2147483647 1 2147483648 or 2147483648 1 212147483647 我尝试了 PLS INTEGER 但它引发了溢出异常 我终
  • 将2-3-4树转换为红黑树

    我正在尝试将 2 3 4 树转换为 java 中的红黑树 但我无法弄清楚它 我将这两个基本类编写如下 以使问题简单明了 但不知道从这里到哪里去 public class TwoThreeFour
  • 使用 SetWindowsHookEx() 阻止窗口鼠标单击

    我编写了一个应用程序 将某些过程挂接到新进程上 以监视鼠标按下事件并禁用新进程上的鼠标按下事件 截至目前 我能够捕获进入此进程的鼠标按下事件 并且我正在尝试将所有鼠标按下事件作为 POC 禁用 这就是我目前在钩子程序中所做的事情 exter
  • 是什么导致 Java(冰雹序列)在我的程序中崩溃

    我制作了一个执行 通常称为 冰雹序列的程序 该程序基本上执行以下操作 创建一个int 值 并为其分配一个值 如果 int 是偶数 则将其除以二 如果 int 为奇数 则将其乘以三并加一 继续这个过程 直到 n 等于 1 它似乎适用于大多数数
  • 整数除法性质

    下面的整数算术性质成立吗 m n l m n l 起初我以为我知道答案 不成立 但现在不确定 它适用于所有数字还是仅适用于某些条件 即n gt l 该问题涉及计算机算术 即q n m q m n 忽略溢出 Case1 assume m kn
  • Python中非常大的整数的math.pow是错误的[重复]

    这个问题在这里已经有答案了 我试图通过计算一个整数的非常大的幂来打印一个非常大的数字 尽管我的代码是正确的 但我没有观察到所需的输出 一般来说 Python解释器可以打印系统内存支持的非常大的整数 考虑到这个假设 下面是我正在运行的代码 a

随机推荐

  • 多机docker部署fisco-bcos区块链

    0 首先每台机器安装docker sudo yum install docker 展示一下机器环境 一共5台机器 111 203 104 97 111 203 104 113 111 203 104 114 111 203 104 116
  • 随想012:断言

    C 标准库提供了名为 assert 的断言宏 C 语言提供了名为 Debug Assert 的断言方法 Java 语言提供名为 assert 的断言关键字 主流编程语言不约而同的在语言层面上提供了 断言 机制 David R Jamson
  • linux-0.12内核之内存管理(1)

    1 内存分页管理机制 内存分页管理是通过页目录表和内存页表所组成的二级表组成的 其中页目录表和页表的结构是一样的 表项结构也相同 页目录表中的每个表项 4B 来寻址一个页表 而每个页表项 4B 来指定一页物理内存页 因此 当指定了一个页目录
  • ansys时间步长怎么设置_ANSYS瞬态动力学分析中的时间步长的选择

    对于瞬态动力学分析问题 如何选取合适的时间步长 才能保证得到正确的计算结果呢 这是我们在瞬态动力学分析中需要关注的一个问题 积分时间步长的选取决定了瞬态动力学问题的求解精度 时间步长越小 则计算精度越高 太大的时间步长会导致高阶模态的响应出
  • centos7下rpm方式安装mysql

    一 CentOS下通过rpm方式安装MySQL CentOS版本 CentOS 7 MySQL版本 MySQL 5 6 22 在网上搜了一下 Linux下安装MYSQL有三种方式 1 通过yum命令在线下载安装 2 下载离线rpm安装包安装
  • Qt应用程序的语言切换

    Qt实现软件界面显示不同的语言 是通过加载字库文件实现的 因此有三个对应的问题需要解决 如何制作字库文件 创建Qt应用程序后 在 pro文件中添加一行代码 TRANSLATIONS qmain zh ts 2 使用QtCreator菜单中的
  • Python工程或Flask项目整体加密——so加密

    python代码加密的方法有很多种 可以先进行混淆再加密 我们一般会对Flask项目或python项目的核心代码进行加密 加密方式采用so 编写一个工程加密的工具类 过程如下 1 安装依赖库 pip3 default timeout 100
  • C语言——水仙花数

    今日笔者突然有了兴致 便写一个很简单的适合于C语言初学者的程序 水仙花数定义 一个三位数i它的百位十位个位分别为a b c 若是i a 3 b 3 c 3那么该数称为水仙花数 输出100 999以内的水仙花数 代码如下 include
  • 通信OFDM相关知识总结

    子载波长度 一个OFDM symbol的时域长度 一个OFDM symbol共有64个子载波 如果按照20M的发射带宽计算的话 那么64个子载波的时域长度为64 20 3 2us 再加上保护间隔 GI guard interval 的长度为
  • Finetune方式总结

    方式一 使用Pretrain模型做约束 具体包括 直接使用Pretrain模型作为约束 使用Pretrain模型的中间层作为约束 使用Pretrain模型对不同特征注意力强度作为约束 Explicit inductive bias for
  • Leetcode 环形链表 -- 快慢指针

    0 题目描述 leetcode原题链接 环形链表 最容易想到的是哈希表解法 遍历所有节点 每次遍历到一个节点时 判断该节点此前是否被访问过 但是空间复杂度为 O n O n O n 有以下更优的解法实现空间复杂度为
  • vue 在自定义指令的时候警告[Vue warn]: Property or method "v" is not defined on the instance but referenced...

    话不多说 看警告 好 渲染也都没问题 这警告看着很不舒服 我是用的pug模板引擎 先看一下pug 好 再看看解释后的HTML 注意那个v focus 因为在将一个空属性传给pug时在纯HTML中会解释成attribute attribute
  • 基于Vue的动态通用table表格及dialog对话框处理技巧总结

    前言 采用vue并结合element ui制作网页端管理系统中的表格是不难的 对应的form table dialog基本都有现成的样例 再结合vue基于数据的方式 很轻松就可以实现一个表格展示并进行动态添加 那么问题来了 如果一个管理系统
  • CSDN如何导出为pdf文档?

    CSDN如何导出为pdf文档 1 打开要打印的csdn文章 2 按F12进入浏览器调试模式 在小箭头处粘贴以下三个代码中的任意一个并回车 可以每一个都尝试一下 总有一个适合你 方式一 推荐 对原文中的代码有增加 去掉了背景图片 其中的doc
  • 【Linux之Shell脚本实战】检查文件是否被修改脚本

    Linux之Shell脚本实战 检查文件是否被修改脚本 一 脚本要求 二 本地环境介绍 三 配置脚本注释模板 1 编辑 vimrc 文件 2 检查模板生效情况 四 编写shell脚本 1 创建脚本目录 2 编辑shell脚本 五 测试脚本功
  • IELTS Writing Line graph-Energy Consumption by Fuel

    The line graph above illustrates consumption of energy in the USA since 1980 with projections until 2030 As an overall t
  • 用Java实现一个简单的考试系统

    用Java实现一个简单的考试系统 需求分析 设计思路 编码实现 需求分析 该考试系统可以实现的功能和系统要求应该包括 学生 登录 考试 考试后查看成绩 老师 出题目 往题库中添加新题目 批阅卷子 同时打分 考试系统 学生的登录校验 存储学生
  • [Unity] 使用Mathf函数实现平滑移动物体的7种方法

    Unity中要利用Mathf中的函数实现物体的平滑运动 有以下7种方法 使用Mathf PingPong 函数在初始位置和X 311之间往复运动 rectTransform anchoredPosition new Vector2 Math
  • R数据分析:孟德尔随机化实操

    好多同学询问孟德尔随机化的问题 我再来尝试着梳理一遍 希望对大家有所帮助 首先看下图1分钟 盯着看将下图印在脑海中 上图是工具变量 不知道工具变量请翻之前的文章 的模式图 明确一个点 我们做孟德尔的时候感兴趣的是x和y的关系 也就是小b 但
  • Just a Hook

    http acm hdu edu cn showproblem php pid 1698 Problem Description In the game of DotA Pudge s meat hook is actually the m