cogs2264 魔法传输

2264. 魔法传输

★★★   输入文件:magics.in   输出文件:magics.out   简单对比
时间限制:1 s   内存限制:256 MB

【题目描述】

自从看了《哈利波特》,小Y就十分渴望获得魔法值。于是他和一群向往魔法的孩子(当然这些孩子们都是不会魔法的)来到了哈利波特的家,大家坐成一排。哈利波特会不时的给大家传输魔法。

哈利每次会选择一个区间,给这个区间里的孩子们传输魔法:最左边的孩子给一点,第二个给两点……哈利有时会突然问你某一个孩子已经有了多少魔法。

【输入格式】

第一行两个正整数 N,M,表示有 N 个孩子,哈利有 M 次操作。

接下来 M 行,每行代表一个操作。第一个字符为 ci,若 ci=‘C’则此次操作为传送魔法操作,接下来会有两个整数Li,Ri,表示此次送魔法值的区间。若 ci=‘Q’则此次操作为询问操作,接下来一个整数xi,表示询问第xi个孩子当前的魔法值。

【输出格式】

对于每组询问输出一行,仅包含一个整数,表示答案对 1,000,000,007 取模(mod)的结果。

【样例输入】

3 4
C 1 3
Q 2
C 2 3
Q 2

【样例输出】

2
3

【提示】

【数据规模】

对于 30%的数据,N,M≤1,000;

对于 100%的数据,N,M≤100,000。

【来源】

在此键入。

区间修改的模板题啊。。。难度竟然给那么高。。。我贴这道题主要不是它有多难..而是我的解法好像和大众不太一样

贴上我的代码

#include<bits/stdc++.h>
#define ll long long
#define mid ((l+r)>>1)
#define ls o<<1
#define rs o<<1|1
using namespace std;
const int ma=100005;
const int mod=1000000007;
ll n,m,f[ma<<2],lazy1[ma<<2],lazy2[ma<<2];
void change1(ll l,ll r,ll o,ll L,ll R,ll x){
	if(l>=L&&r<=R){
		lazy1[o]+=x;
		lazy1[o]%=mod;
		return ;
	}
	if(mid>=L)change1(l,mid,ls,L,R,x);
	if(mid<R)change1(mid+1,r,rs,L,R,x);
}
void change2(ll l,ll r,ll o,ll L,ll R,ll x){
	if(l>=L&&r<=R){
		lazy2[o]+=x;
		lazy2[o]%=mod;
		return ;
	}
	if(mid>=L)change2(l,mid,ls,L,R,x);
	if(mid<R)change2(mid+1,r,rs,L,R,x);
}
ll q(ll l,ll r,ll o,ll x,ll sum1,ll sum2){
	if(l==r){
		return (l*(lazy1[o]+sum1)%mod-(lazy2[o]+sum2)%mod+mod)%mod;
	}
	if(mid>=x)return q(l,mid,ls,x,(sum1+lazy1[o])%mod,(sum2+lazy2[o])%mod)%mod;
	else return q(mid+1,r,rs,x,(sum1+lazy1[o])%mod,(sum2+lazy2[o])%mod)%mod;
}
int main()
{
	freopen("magics.in","r",stdin);
	freopen("magics.out","w",stdout);
//	freopen("1.txt","r",stdin);
	scanf("%lld%lld",&n,&m);
	for(int i=1;i<=m;i++){
		char s[10];
		ll x,y;
		scanf("%s",s);
		if(s[0]==‘C‘){
			scanf("%lld%lld",&x,&y);
			change1(1,n,1,x,y,1);
			change2(1,n,1,x,y,x-1);
		}
		else {
			scanf("%lld",&x);
			printf("%lld\n",q(1,n,1,x,0,0));
		}
	}
	return 0;
}

  大家好像解法分为两大阵营吧,差分+线段树区间修改,分块

我这完全就没用到差分。。。我觉得我应该跑的很快才对啊,,结果榜都上不了

对于任意一个点,我们维护两个lazy值,第一个记录当前区间被若干次修改,每次修改左端点的值之和,第二个记录这个点被加了多少次,对于任意一次查询,我们只需要用他 对应坐标*lazy2-lazy1,即可得到被修改后的值

突然就想到这个奇怪的解法...反正后来看评论区是没看到跟我一样的..旁边的cmath用我一倍长的代码跑的比我慢了一倍

时间: 2024-12-15 05:55:52

cogs2264 魔法传输的相关文章

用Flask实现视频数据流传输

Flask 是一个 Python 实现的 Web 开发微框架.这篇文章是一个讲述如何用它实现传送视频数据流的详细教程. 我敢肯定,现在你已经知道我在O’Reilly Media上发布了有关Flask的一本书和一些视频资料.在这些上面,Flask框架介绍的覆盖面是相当完整的,出于某种原因,也有一小部分的功能没有太多的提到,因此我认为在这里写一篇介绍它们的文章是一个好主意. 这篇文章是专门介绍流媒体的,这个有趣的功能让Flask应用拥有这样一种能力,以分割成小数据块的方式,高效地为大型请求提供数据,

应用层/安全层/传输层如何进行协议选型?

系统设计,协议先行. 大部分技术人没有接触协议的设计细节,更多的是使用已有协议进行应用层的编码,例如: (1)使用http作为载体,设计get/post/cookie参数 (2)使用dubbo框架,而不用去深究内部的二进制包头包体,以及序列号反序列化的细节 无论如何,了解协议设计的原则,对深入理解系统通信非常有帮助.今天就以即时通讯(后称im)为例,讲讲应用层的协议选型. 一.im协议的分层设计 所谓"协议"是双方共同遵守的规则,例如:离婚协议,停战协议.协议有语法.语义.时序三要素.

微信文件传输助手文件夹在哪?一起来找找

微信文件传输助手是微信电脑版与手机微信之间相互传输图片等文件的好工具,但很多童鞋都找不到微信文件传输助手文件夹在哪,就让我们一起找找吧 1.先说说手机微信文件传输助手文件夹在哪吧 文件夹路径为/Tencent/MicroMsg/Download/ 2.电脑版微信文件传输助手文件夹在:/微信安装保存目录/wechat files/微信号/ 也可以点击接收到的图片下载保存到相应位置即可

笔记:Jersey REST 传输格式

通常REST接口会以XML或JSON作为主要传输格式,同时 Jersey 也支持其他的数据格式,比如基本类型.文件.流等格式. 基本类型 Java的基本类型又叫原生类型,包括4种整数(byte.short.int.long).2种浮点类型(float.double).Unicode编码的字符(char)和布尔类型(boolean),Jersey 支持全部的基本类型,还支持与之相关的引用类型,示例代码如下: REST 服务代码 @POST @Path("b") public String

bzoj 3669: [Noi2014]魔法森林

3669: [Noi2014]魔法森林 Time Limit: 30 Sec  Memory Limit: 512 MB 动点spfa Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士.魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M.初始时小E同学在号节点1,隐士则住在号节点N.小E需要通过这一片魔法森林,才能够拜访到隐士. 魔法森林中居住了一些妖怪.每当有人经过一条边的时候,这条边上的妖怪就会对其发起攻击.幸运的

MINA快速传输文件

最近的项目使用MNA进行文件传输,只能传输到5~7MB/s:但是使用FTP等软件其实可以达到11MB/s,后来使用MINA原生传输,发现可以达到11MB/s,后来发现有以下两点可以需要注意优化: 1.直接用iobuffer传递,减少协议解析损耗: 2.fileaccess不要每次都创建:

TCP传输协议

1.TCP中一些名词解释 (1)MSS(maximum segment size) TCP的最大报文段大小,在TCP报文段中有一个16位的部分用于放置该值,因此最大为65535,可以利用setsockopt() 和getsockopt设置和获取TCP_MAXSEG来影响MSS: (2)MSL(maximum segment lifetime) IP报文段能在网络中存在的最长时间,这个是系统级的参数,没有接口修改,windows上可以通过注册表修改,通常为2分钟,最低为30秒,linux上面没法修

详解“FTP文件传输服务”安装配置实例

"FTP文件传输服务"安装配置实例 家住海边喜欢浪:zhang789.blog.51cto.com 目录 简介 ftp工作原理 常见的FTP服务 Vsftpd服务器的安装 Vsftpd.conf配置文件详解 配置FTP服务器实例 实例:配置匿名用户 实例:配置本地用户登录 实例:配置虚拟用户登录(MySQL认证) 实例:控制用户登录 实例:设置欢迎信息 分析vsftpd日志管理 FTP服务器配置与管理 简介 FTP 是File Transfer Protocol(文件传输协议)的英文简

网络传输协议

网络传输协议 1.常见协议 1.HTTP.HTTPS 超文本传输协议 2.FTP 文件传输协议 3.SMTP 简单邮件传输协议 2.http协议 超文本传输协议(HTTP,HyperText Transfer Protocol) 网站是基于HTTP协议的, 例如网站的图片.CSS.JS等都是基于HTTP协议进行传输的. HTML Hypertext Markup Language HTTP协议是由从客户机到服务器的请求(Request)和从服务器到客户机的响应(Response)进行了约束和规范