`

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

 
阅读更多

 

Just a Hook

Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1714 Accepted Submission(s): 700


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
#include<stdio.h>
struct Tree
{
	int zuo;
	int you;
	int date;
}hook[100000*3];
//int p[100000+10];
void build(int a,int b,int n=1)
{
	hook[n].zuo=a;
	hook[n].you=b;
	hook[n].date=1;
	if(a==b)return;
	int zhong=(a+b)>>1;
	build(a,zhong,2*n);
	build(zhong+1,b,2*n+1);
}
void change(int a,int b,int c,int n=1)
{
	if(c==hook[n].date)return;
	if(a==hook[n].zuo&&b==hook[n].you)
	{
		hook[n].date=c;
		return;
	}
	if(hook[n].date!=0)
	{
		hook[2*n].date=hook[2*n+1].date=hook[n].date;
		hook[n].date=0;
	}
	int zhong=(hook[n].zuo+hook[n].you)>>1;
	if(b<=zhong)change(a,b,c,2*n);
	else if(zhong<a)change(a,b,c,2*n+1);
	else 
	{
		change(a,zhong,c,2*n);
		change(zhong+1,b,c,2*n+1);
	}
}
int totle(int n=1)
{
	if(hook[n].date!=0)return((hook[n].you-hook[n].zuo+1)*hook[n].date);
	return(totle(2*n)+totle(2*n+1));
}
int main()
{
//	freopen("in.txt","r",stdin);
	int T;
	int n,m;
	int a,b,c;
	int i=1;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d",&n,&m);
		build(1,n);
		while(m--)
		{
			scanf("%d%d%d",&a,&b,&c);
			change(a,b,c);
		}
		printf("Case %d: The total value of the hook is %d.\n",i++,totle());
	}
	return(0);
}

 

 

 

 

分享到:
评论

相关推荐

    ACM hdu 线段树题目+源代码

    Hdu 1698 Just a Hook 是另一个典型的线段树题目,题目要求我们实现一个数据结构来维护一个数组的区间信息。 Hdu 3584 Cube Hdu 3584 Cube 是一个三维线段树题目,题目要求我们实现一个三维线段树来维护一个三维...

    hook git仓库自动更新脚本

    hook git仓库自动更新脚本,服务器自动更新部署

    Hook Api,hook ReadFile,hook WriteFile,hook LoadLibrary

    在IT行业中,Hook API是一种广泛使用的技术,它允许开发者拦截并控制特定函数的调用,以便在函数执行前后插入自定义的行为。这个技术在软件调试、性能监控、系统安全和功能扩展等方面都有重要应用。本篇文章将深入...

    HookAPI.rar_Hook Api rmxp_hook a_hook api_好学习Hook_注册表 hook

    "HookAPI.rar_Hook Api rmxp_hook a_hook api_好学习Hook_注册表 hook"这个压缩包似乎包含了一系列关于Hook API的实践教程和示例,特别关注于RMXP(RPG Maker XP)平台,以及注册表相关的Hook应用。 RMXP是一款流行...

    APIHook例子 hook api

    APIHook是一种技术,用于在应用程序调用特定API(应用程序编程接口)时,插入自定义代码以拦截、修改或增强原始API的功能。这个例子是关于如何Hook Windows Socket API,即Winsock,来监控或改变网络通信行为。让...

    各类的hook资料,新手学hook

    2. **JIT(Just-In-Time)Hook**:在函数调用的瞬间,将钩子函数插入到调用链中。 3. **VTable Hook**:在面向对象编程中,通过修改类的虚函数表来实现对成员函数的Hook。 4. **Inline Hook**:在汇编层面对函数入口...

    Hook MessageBox 全局Hook

    全局Hook是一种技术,它允许一个程序监控或修改其他程序的行为,而无需修改这些程序的代码。在本场景中,我们关注的是Hook MessageBox,也就是对Windows系统中的消息框函数MessageBox进行拦截。MessageBox是Windows ...

    Hook经典分析 关于QQ Hook的应用 钩子

    QQ Hook是一种技术手段,主要涉及计算机程序中的钩子(Hook)机制。钩子在编程领域中,是指一种允许开发者在特定事件发生时插入自定义处理代码的机制。它允许程序拦截并处理系统或应用程序级别的事件,例如键盘输入...

    易语言x64-hook模块源码+实列

    7. **wow64_hook 源码历史更新.txt**:这个文件记录了模块源码的更新历史,开发者可以通过查看这些变更,了解模块的改进过程和技术演进。 综合以上内容,这个资源包对于想要学习和实践易语言在x64环境下的Hook技术...

    微信Hook教程(易语言)

    ### 微信Hook教程(易语言) #### 一、Hook技术概述 Hook技术在软件开发领域扮演着重要的角色,尤其在实现特定功能扩展或者调试分析时。本教程将重点介绍如何利用易语言进行微信Hook操作。 #### 二、Hook原理简述...

    易语言 微信 hook 2.6

    《易语言微信hook 2.6技术解析及应用探索》 在信息技术日新月异的今天,编程语言的创新和应用不断推动着软件开发的进步。其中,“易语言”以其独特的汉字编程理念,降低了编程的门槛,让更多的人能够参与到程序设计...

    C#EasyHook_easyhook_

    【C# EasyHook】是一个强大的库,用于在.NET Framework中实现远程函数调用(RDI,Remote Function Invocation)和钩子技术。EasyHook为开发者提供了一种高效、稳定且易于使用的解决方案,允许他们在运行时拦截和修改...

    EasyHook-2.7.6270.0.zip_c# easy hook_easyhook_easyhook 2.7_eas

    EasyHook是一款强大的、开源的.NET库,用于在托管代码中实现远程函数钩子(Remote Function Hooking)。在标题和描述中提到的"EasyHook-2.7.6270.0.zip"是一个包含EasyHook库版本2.7.6270.0的压缩包,适用于C#开发者...

    HOOK 系统注册表 HOOK API SYSTEM REGISTRY

    HOOK 系统注册表 HOOK API SYSTEM REGISTRY 文件清单: PHookRegistry.exe HOOK管理主程序 PNtHOOK.dll HOOK API DLL 功能描述: 1. 只针对用户级别的程序API陷井式HOOK, 这里只对以下API进行HOOK: ...

    EasyHook远程进程注入并hook api的实现

    本篇将详细讲解如何利用EasyHook库实现远程进程API Hook。 EasyHook是一个开源的.NET库,它提供了一种在Windows平台上进行远程钩子(Hook)的技术。Hook技术允许开发者拦截系统调用或特定函数的执行,以便在调用...

    Inline Hook_inlinehook_x86_x64_64位HOOK_

    Inline Hook是一种技术,主要用于在程序运行时修改函数的行为。它涉及到计算机编程中的底层技术,特别是逆向工程和软件调试领域。Inline Hook的核心是通过在原函数的代码中插入额外的指令来实现对函数调用的拦截,...

    Hook函数任意地址 c++

    在IT行业中,Hook技术是一种非常重要的系统编程技巧,它允许开发者拦截和修改系统或应用程序的特定功能执行流程。本实例以"C++"为语言环境,实现了Hook函数在任意地址的功能,同时还提供了获取CPU寄存器内容的能力。...

    ApiHook.rar_APIHOOK.rar_DLL HOOK_api_hook.dll_dll_hook dll

    在标题"ApiHook.rar_APIHOOK.rar_DLL HOOK_api_hook.dll_dll_hook dll"中,我们可以看到"ApiHook"、"DLL HOOK"以及"api_hook.dll"等关键词,这些都是与API Hook密切相关的元素。描述中提到的"API Hook示例代码"是...

    hook编程,hook的使用

    Hook编程是一种在软件开发中广泛使用的技术,尤其是在Windows API、Android和React Native等环境中。它允许开发者拦截并修改系统函数调用或者特定程序的行为,从而实现功能扩展、调试、日志记录等多种目的。本篇文章...

    千寻hook收集特别版

    千寻hook收集特别版 千寻hook收集特别版 千寻hook收集特别版 千寻hook收集特别版 千寻hook收集特别版 千寻hook收集特别版 千寻hook收集特别版 千寻hook收集特别版 千寻hook收集特别版 千寻hook收集特别版 千寻hook...

Global site tag (gtag.js) - Google Analytics