BZOJ 4216: Pig [分块]
询问区间和...内存3M
分块前缀和...
我连swap都是这么l=l^r , r=l^r , l=l^r写的....
#include <cstdio>
typedef long long ll;
const int N=5e5+,M=1e4+;
int n,Q,type,a[N],l,r,block=,m;
ll s[M],last;
int main(){
freopen("in","r",stdin);
scanf("%d%d%d",&n,&Q,&type);
m=(n-)/block+;
for(int i=;i<=n;i++) scanf("%d",&a[i]),s[(i-)/block+]+=a[i];
for(int i=;i<=m;i++) s[i]+=s[i-];
while(Q--){
scanf("%d%d",&l,&r);
if(type){
if(last<) last=-last;
l=(l^last)%n+;r=(r^last)%n+;
if(l>r) l=l^r , r=l^r , l=l^r;
}
int pl=(l-)/block+,pr=(r-)/block+;
last=;
if(pl==pr)
for(int i=l;i<=r;i++) last+=a[i];
else{
last=s[pr-]-s[pl];
int _=pl==m ? n : pl*block;
for(int i=l;i<=_;i++) last+=a[i];
for(int i=(pr-)*block+;i<=r;i++) last+=a[i];
}
printf("%lld\n",last);
}
}
BZOJ 4216: Pig [分块]的更多相关文章
- BZOJ 4216 Pig 分块乱搞
题意:id=4216">链接 方法:分块以节约空间. 解析: 这题坑的地方就是他仅仅有3M的内存限制,假设我们开longlong前缀和是必死的. 所以考虑缩小这个long long数组 ...
- 【BZOJ 3343 】 分块
3343: 教主的魔法 Description 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息组每个英雄看.于是N个英雄们又一次聚集在了一起,这次他们排成了一列,被编号为1. ...
- Bzoj 2141: 排队 分块,逆序对,树状数组
2141: 排队 Time Limit: 4 Sec Memory Limit: 259 MBSubmit: 1310 Solved: 517[Submit][Status][Discuss] D ...
- bzoj 2141 : 排队 分块
题目链接 2141: 排队 Time Limit: 4 Sec Memory Limit: 259 MBSubmit: 1169 Solved: 465[Submit][Status][Discu ...
- bzoj 2724 蒲公英 分块
分块,预处理出每两个块范围内的众数,然后在暴力枚举块外的进行比较 那么怎么知道每一个数出现的次数呢?离散后,对于每一个数,维护一个动态数组就好了 #include<cstdio> #inc ...
- BZOJ 2724 蒲公英 | 分块模板题
题意 给出一个序列,在线询问区间众数.如果众数有多个,输出最小的那个. 题解 这是一道分块模板题. 一个询问的区间的众数,可能是中间"整块"区间的众数,也可能是左右两侧零散的数中的 ...
- BZOJ 2724蒲公英 (分块) 【内有块大小证明】
题面 luogu传送门 分析 先分块,设块大小为x(之后我们会证明块大小取何值会更优) 步骤1 把所有的数离散化,然后对每个值开一个vector pos[i],pos[i]存储数i出现的位置 我们设查 ...
- BZOJ 3585: mex(分块+莫队)
传送门 解题思路 首先直接莫队是能被卡的,时间复杂度不对.就考虑按照值域先进行分块再进行莫队,然后统计答案的时候就暴力扫所有的块,直到一个块内元素不满,再暴力扫这个块就行了,时间复杂度O(msqrt( ...
- bzoj 1086 树分块
将树分成一些块,做法见vfleaking博客. /************************************************************** Problem: 108 ...
随机推荐
- WEB 小案例 -- 网上书城(一)
距离上次写博客有两周了吧,最多的原因就是自己期末考试了,上课没听就只能在期末狠狠的复习了,毕竟已经挂科了.当然还是因为自己懒吧!!!废话不多说开始我们今天的正题,网上书城! 一. 新建数据表(MySQ ...
- Python 3 利用 Dlib 19.7 实现人脸识别和剪切
0.引言 利用python开发,借助Dlib库进行人脸识别,然后将检测到的人脸剪切下来,依次排序显示在新的图像上: 实现的效果如下图所示,将图1原图中的6张人脸检测出来,然后剪切下来,在图像窗口中依次 ...
- 从零开始学习前端开发 — 9、标签嵌套规则及CSS常用样式覆盖
1. 块级元素可以包含内联元素或某些块级元素,但内联元素却不能包含块级元素,它只能包含其它的内联元素: <div><h1></h1><p></p& ...
- java final关键字的详解
final可以修饰成员变量.局部变量.方法.和类 1.final修饰成员变量时,必须在定义时初始化或者在构造方法中初始化 表示该成员变量无法在该类中被更改,但是可以被继承.如果子类不再定义相同名字的成 ...
- 如何制作gif图片
制作Gif图片的方法很多,大多数情况下都会选择利用PS中的ImageReady插件来制作.其实还有其它更好的选择来制作Gift图片,其中一款软件就是利用Flash来实现.下面小编就给大家展示一下如何利 ...
- php(ThinkPHP)实现微信小程序的登录过程
源码也在我的github中给出 https://github.com/wulongtao/think-wxminihelper 下面结合thinkPHP框架来实现以下微信小程序的登录流程,这些流程是结 ...
- 《并行程序设计导论》——MPI(Microsoft MPI)(1):Hello
=================================版权声明================================= 版权声明:原创文章 禁止转载 请通过右侧公告中的“联系邮 ...
- eclipse怎么修改工作空间路径
1.打开eclipse,在eclipse界面中的菜单栏中点击“文件”,如果您的eclipse是英文版,那么应该是file,打开后点击“切换工作空间" 2.如果您的eclipsehi英文版,则 ...
- SpringMvc4.x--Spring MVC的常用注解
//下列代码显示用到的对象public class DemoObj { private Long id; private String name; public DemoObj() { //① sup ...
- crontab执行带参数的php脚本,并取得参数[转]
现在越来越喜欢用linux了,程序当中也去掉了很多触发性判断,改用了借用linux的crontab的特性来进行,这样程序效率确实是高了很多. 比如我们每月1号清空月点击,比如每天凌晨统计上一天的访问报 ...