当前位置: 首页 > 编程日记 > 正文

【BZOJ】3542: DZY Loves March

题意

\(m * m\)的网格,有\(n\)个点。\(t\)个询问:操作一:第\(x\)个点向四个方向移动了\(d\)个单位。操作二:询问同行同列其他点到这个点的曼哈顿距离和。强制在线。(\(n \le 10^5,m \le 10^{18}\)

分析

没啥好分析的,就是推一下能推出每行每列的一个式子来,然后套两个区间维护的结构就行了。

题解

set + 线段树

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mo=1e9+7, N=100005;
int n;
ll x[N], y[N];
template<class T>
inline void fix(T &x) {if(x>=mo || x<=-mo) x%=mo;if(x<0) x+=mo;
}
struct dat {int s, sum1, sum2;void init() {s=sum1=sum2=0;}void add(int _s, int go) {s+=_s;sum1+=(ll)go*go%mo*_s; fix(sum1);sum2+=go*_s; fix(sum2);}
};
dat operator + (const dat &a, const dat &b) {static dat x;x.s=a.s+b.s;x.sum1=a.sum1+b.sum1; fix(x.sum1);x.sum2=a.sum2+b.sum2; fix(x.sum2);return x;
}
struct node *null;
struct node {node *c[2];dat d;void up() {d=c[0]->d+c[1]->d;}void init() {d.init();c[0]=c[1]=null;}
}Po[5000005], *iT=Po, *bin[5000005], **iTbin=bin;
node *newnode() {node *x;if(iTbin!=bin) x=*(--iTbin);else {if(iT==Po+5000000) x=new node;else x=iT++;}x->init();return x;
}
void delnode(node *&x) {*iTbin=x;iTbin++;x=null;
}
void seginit() {null=newnode();null->init();
}
void update(int p, int s, int go, int l, int r, node *&x) {if(x==null) {x=newnode();}if(l==r) {x->d.add(s, go);if(x->d.s==0) {delnode(x);}return;}int mid=(l+r)>>1;if(p<=mid) {update(p, s, go, l, mid, x->c[0]);}else {update(p, s, go, mid+1, r, x->c[1]);}x->up();if(x->d.s==0) {delnode(x);}
}
dat ask(int L, int R, int l, int r, node *x) {static dat nul={0, 0, 0};if(x==null) {return nul;}if(L<=l && r<=R) {return x->d;}int mid=(l+r)>>1;dat ret;ret.init();if(L<=mid) {ret=ask(L, R, l, mid, x->c[0]);}if(mid<R) {ret=ret+ask(L, R, mid+1, r, x->c[1]);}return ret;
}
map<ll, node *> X, Y;
void add(ll x, int s, int go, int id, map<ll, node *> &a) {if(a.find(x)==a.end()) {a[x]=null;}node *&it=a[x];update(id, s, go, 1, n, it);if(it==null) a.erase(a.find(x));
}
dat ask(ll x, int L, int R, map<ll, node *> &a) {return ask(L, R, 1, n, a[x]);
}
int main() {seginit();int m;scanf("%d%d", &n, &m);for(int i=1; i<=n; ++i) {ll _x, _y;scanf("%lld%lld", &_x, &_y);x[i]=_x;y[i]=_y;fix(_x);fix(_y);add(x[i], 1, _y, i, X);add(y[i], 1, _x, i, Y);}int T, ans=0;scanf("%d", &T);while(T--) {char s[5];int pos;scanf("%s%d", s, &pos);pos^=ans;if(s[0]=='Q') {int L, R;scanf("%d%d", &L, &R);dat d1, d2;d2=ask(x[pos], L, R, X);d1=ask(y[pos], L, R, Y);ans=0;ll ans1=0, ans2=0, tx=x[pos], ty=y[pos];fix(tx);fix(ty);ans1=-((tx*d1.sum2%mo)<<1)+tx*tx%mo*d1.s+d1.sum1;ans2=-((ty*d2.sum2%mo)<<1)+ty*ty%mo*d2.s+d2.sum1;fix(ans1);fix(ans2);ans=ans1+ans2;fix(ans);printf("%d\n", ans);}else {ll d;scanf("%lld", &d);ll _x=x[pos], _y=y[pos];if(s[0]=='U') y[pos]+=d;if(s[0]=='D') y[pos]-=d;if(s[0]=='R') x[pos]+=d;if(s[0]=='L') x[pos]-=d;add(_x, -1, _y%mo, pos, X);add(_y, -1, _x%mo, pos, Y);add(x[pos], 1, y[pos]%mo, pos, X);add(y[pos], 1, x[pos]%mo, pos, Y);}}return 0;
}

相关文章:

Gin源码解析和例子——路由

Gin是一个基于golang的net包实现的网络框架。从github上&#xff0c;我们可以看到它相对于其他框架而言&#xff0c;具有优越的性能。本系列将从应用的角度来解析其源码。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 本文我们将分析其路由的原理。先看个例…

一文讲透推荐系统提供web服务的2种方式

作者丨gongyouliu编辑丨zandy来源 | 大数据与人工智能&#xff08;ID: ai-big-data&#xff09;推荐系统是一种信息过滤技术&#xff0c;通过从用户行为中挖掘用户兴趣偏好&#xff0c;为用户提供个性化的信息&#xff0c;减少用户的找寻时间&#xff0c;降低用户的决策成本&am…

jQuery遍历json数组怎么整。。。

{"options":"[{\"text\":\"王家湾\",\"value\":\"9\"},{\"text\":\"李家湾\",\"value\":\"10\"},{\"text\":\"邵家湾\",\"value\":\"13\…

述说C#中的值类型和引用类型的千丝万缕

关于值类型和引用类型方面的博客和文章可以说是汗牛充栋了&#xff0c;今天无意中又复读了一下这方面的知识&#xff0c;感觉还是有许多新感悟的&#xff0c;就此时间分享一下&#xff1a; CLR支持两种类型&#xff1a;值类型和引用类型&#xff0c;看起来FCL的大多数类型是引用…

Gin源码解析和例子——中间件(middleware)

在《Gin源码解析和例子——路由》一文中&#xff0c;我们已经初识中间件。本文将继续探讨这个技术。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; Gin的中间件&#xff0c;本质是一个匿名回调函数。这和绑定到一个路径下的处理函数本质是一样的。 再以Engin…

DNS简单配置

DNS的原理就不说了&#xff0c;这里只是做个简单的配置&#xff0c;也是方便自己记忆&#xff0c;在这里还要十分感谢redking老大的教程&#xff01;要安装的bind* 、caching-nameserver 包1、/var/named/chroot/etc/named.conf这个文件需要自己创建options { listen-on…

关系抽取论文整理,核方法、远程监督的重点都在这里

来源 | CSDN 博客作者 | Matt_sh&#xff0c;编辑 | Carol来源 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;本文是个人阅读文章的笔记整理&#xff0c;没有涉及到深度学习在关系抽取中的应用。笔记中一部分来自个人解读&#xff0c;一部分来自原文&#xff0…

freemarker内建函数介绍

Sequence的内置函数1.sequence?first 返回sequence的第一个值。2.sequence?last 返回sequence的最后一个值。3.sequence?reverse 将sequence的现有顺序反转&#xff0c;即倒序排序4.sequence?size 返回sequence的大小5.sequence?sort 将sequence中的对象转化为字符串后顺序…

PowerBuilder 11.x 的重要进步和不足

PowerBuilder 11&#xff08;以下简称PB&#xff09;出来有一段时间了&#xff0c;但很多用户对PB11的到底有哪些进步还不是很清楚&#xff0c;由于对PB11缺乏了解和信心&#xff0c;目前用PB11做出像样应用的用户不多&#xff0c;这确实非常遗憾&#xff0c;这里我讲一下我对P…

超赞的PyTorch资源大列表,GitHub标星9k+,中文版也上线了

点击阅读原文&#xff0c;快速报名&#xff01;作者 | 红色石头来源 | AI有道&#xff08;ID: redstonewill&#xff09;自 2017 年 1 月 PyTorch 推出以来&#xff0c;其热度持续上升。PyTorch 能在短时间内被众多研究人员和工程师接受并推崇是因为其有着诸多优点&#xff0c;…

C++拾取——Linux下实测布隆过滤器(Bloom filter)和unordered_multiset查询效率

布隆过滤器是一种判定元素是否存在于集合中的方法。其基本原理是使用哈希方法将数据映射到一个很长的向量上。在维基百科上&#xff0c;它被称为“空间效率和查询时间都远远超过一般的算法”的方法。由于它只保存散列的数据&#xff0c;所以对于很长的数据有着良好的压缩特性&a…

递归思想解决输出目录下的全部文件

刚刚了解了下递归思想 递归就是在方法内调用本方法 下面说一个实际的应用 输出目录下的全部文件&#xff0c;当目录中还有目录时&#xff0c;则进入目录输出里面的文件 import java.io.*; class ShowFile{public static void showfile(File files){if(files.isDirectory()){Fi…

实战之网马解密之shellcode篇

今天上卡卡社区发现里面发了个网马解密的链接,呵呵 顺便试试看能解出来不.呵呵. 相信各位已经对网马有点了解了吧.一般网马都是加密了的.关于什么是网马以及怎么防止网马也不是本文的重点.本文是实战shellcode网马解密.以后的博文会放出常见的网马及其解密.以及常见的解密工具的…

机器学习中的线性回归,你理解多少?

作者丨algorithmia编译 | 武明利&#xff0c;责编丨Carol来源 | 大数据与人工智能&#xff08;ID: ai-big-data&#xff09;机器学习中的线性回归是一种来源于经典统计学的有监督学习技术。然而&#xff0c;随着机器学习和深度学习的迅速兴起&#xff0c;因为线性&#xff08;多…

Golang反射机制的实现分析——reflect.Type类型名称

现在越来越多的java、php或者python程序员转向了Golang。其中一个比较重要的原因是&#xff0c;它和C/C一样&#xff0c;可以编译成机器码运行&#xff0c;这保证了执行的效率。在上述解释型语言中&#xff0c;它们都支持了“反射”机制&#xff0c;让程序员可以很方便的构建一…

设计模式----组合模式UML和实现代码

2019独角兽企业重金招聘Python工程师标准>>> 一、什么是组合模式&#xff1f; 组合模式(Composite)定义&#xff1a;将对象组合成树形结构以表示‘部分---整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性. 类型&#xff1a;结构型模式 顺口…

Golang反射机制的实现分析——reflect.Type方法查找和调用

在《Golang反射机制的实现分析——reflect.Type类型名称》一文中&#xff0c;我们分析了Golang获取类型基本信息的流程。本文将基于上述知识和经验&#xff0c;分析方法的查找和调用。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 方法 package mainimpor…

太狠!33岁年薪50万:“复工第一天,谢谢裁掉我!” 网友:有底气!

最近脉脉一则帖子炸锅了&#xff1a;某HR发帖称公司以按时下班为由裁员。这种情况下很多人都慌了&#xff0c;大家纷纷把“副业救国”奉为神律。可是你有没有认真的想过&#xff0c;为什么现在大家都需要副业&#xff1a;意外裁员后&#xff0c;房贷能够按时还上不至于“回收”…

SEO内部链接优化的技巧

内部链接是搜索引擎优化中的重要因素之一。思亿欧做的SEO调查发现&#xff0c;国内大部分网站都没有怎么做内部链接优化。这可能是网站管理员并不知晓SEO或者是对内部链接优化不够重视。 内部链接的设计不能是单纯的为了SEO的目的而作内部链接&#xff0c;同时要注意规划一个良…

Ubuntu 15.10安装ns2.35+nam

2019独角兽企业重金招聘Python工程师标准>>> Step1: 更新系统sudo apt-get update #更新源列表sudo apt-get upgrade #更新已经安装的包sudo apt-get dist-upgrade #更新软件&#xff0c;升级系统Step2:安装ns2需要的几个包sudo apt-get install build-essentialsu…

bug诞生记——不定长参数隐藏的类型问题

这个bug的诞生源于项目中使用了一个开源C库。由于对该C库API不熟悉&#xff0c;一个不起眼的错误调用&#xff0c;导致一系列诡异的问题。最终经过调试&#xff0c;我们发现发生了内存覆盖问题。为了直达问题根节&#xff0c;我将问题代码简化如下&#xff08;转载请指明出于br…

yahoo註冊.com 域名1.99$/年

yahoo註冊.com 域名1.99$/年趕快去註冊吧http://order.sbs.yahoo.com/ds/reviewplanoption?.pYD1&mdom&.srcsbs&.promoBESTDEAL&dzzhen an.com支持paypal付款一個yahoo帳戶只能註冊一個如果覺得續費比較貴&#xff0c;可在註冊兩個月後轉出到godaddy.转载于:h…

Excel弱爆了!这个工具30分钟完成了我一天的工作量,零基础、文科生也能学!...

在大数据浪潮当中&#xff0c;数据分析是这个时代的不二“掘金技能”。我们每一个人&#xff0c;每天无时无刻都在生产数据&#xff0c;一分钟内&#xff0c;微博上新发的数据量超过10万&#xff0c;b站的视频播放量超过600万......这些庞大的数字&#xff0c;意味着什么&#…

Myeclipse快捷键的使用

存盘 Ctrls(肯定知道) 注释代码 Ctrl/ 取消注释 Ctrl\(Eclipse3已经都合并到Ctrl/了) 代码辅助 Alt/ 快速修复 Ctrl1 代码格式化 CtrlShiftf 整理导入 CtrlShifto 切换窗口 Ctrlf6 <可改为ctrltab方便> ctrlshiftM 导入未引用的包 ctrlw 关闭单个窗口 F3 跳转到类、变量的…

PL/SQL三种集合类型的比较

PL/SQL三种集合类型的比较<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />集合是指在一个程序变量中包含多个值。PL/SQL提供的集合类型如下&#xff1a;Associative Array:TYPE t IS TABLE OF something INDEX BY PLS_INTEGER;N…

夺得WSDM Cup 2020大赛金牌的这份参赛方案,速来get!

近日&#xff0c;在美国休斯敦闭幕的第13届网络搜索与数据挖掘国际会议&#xff08;WSDM 2020&#xff09;上&#xff0c;华为云语音语义创新Lab带领的联合团队&#xff0c;摘得WSDM Cup 2020大赛“论文引用意图识别任务”金牌&#xff08;Gold Medal&#xff09;。WSDM被誉为全…

bug诞生记——信号(signal)处理导致死锁

这个bug源于项目中一个诡异的现象&#xff1a;代码层面没有明显的锁的问题&#xff0c;但是执行时发生了死锁一样的表现。我把业务逻辑简化为&#xff1a;父进程一直维持一个子进程。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 首先我们定义一个结构体Pro…

Linux下SVN服务器支持Apache的http和svnserve独立服务器

2019独角兽企业重金招聘Python工程师标准>>> 说明 服务器操作系统&#xff1a;CentOS 6.6 关闭防火墙&#xff0c;SElinux 实现 1、在服务器上安装配置SVN服务&#xff1b; 2、SVN服务支持svnserve独立服务模式访问&#xff1b; 3、SVN服务支持Apache的http模式访问…

AWS攻略——使用CodeCommit托管代码

除了我们熟悉的github&#xff0c;各大云厂商也有自己的代码托管服务。本文讲解如何在Amazon的CodeCommit中托管代码。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 根账户登录 AWS有两种账户登录界面。 IAM账户登录界面 根账户登录界面我们先使用根…

使用alterMIME实现添加message footer功能

1. 安装alterMIME tar zxvf altermime-0.3.8.tar.gz cd altermin3-0.3.8 make make install altermine将被编译安装到/usr/local/bin/2. 使用必备条件&#xff1a;一个运行且配置正常的邮件服务器3. 配置AlterMIME3.1 为altermine创建一个系统帐号&#xff0c;如下&#x…