BZOJ 4216 Pig 分块乱搞
题意:id=4216">链接
方法:分块以节约空间。
解析:
这题坑的地方就是他仅仅有3M的内存限制,假设我们开longlong前缀和是必死的。
所以考虑缩小这个long long数组的大小。
然后想到分块
最好还是以15为大小进行分块,事实上不T再大一点也行,可是算内存的话15是差点儿相同的吧。
然后记录每一个块内的和,然后询问的时候整块直接拿,非整块暴力枚举。顶多30个点。
所以时间上能过,然后内存上也就2.6MB左右。能够过。
可是有个问题啊,千万别打using namespace std;
这个执行自己主动申请700kb内存。太坑辣!
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 500005
#define M 33335
#define K 16
typedef long long ll;
int a[N];
ll sum[M];
int n,m,jd,blockl,blockr,cntblock,l,r;
ll ans;
void calc(int l,int r)
{
blockl=l>>4;
blockr=r>>4;
ans+=sum[blockr-1]-sum[blockl];
for(int i=l;i>>4==blockl&&i>0&&i<=n;i++)
{
ans+=a[i];
}
for(int i=r;i>>4==blockr&&i>0&&i<=n;i--)
{
ans+=a[i];
}
}
int main()
{
scanf("%d%d%d",&n,&m,&jd);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
sum[i>>4]+=a[i];
}
cntblock=n>>4;
for(int i=1;i<=cntblock;i++)sum[i]+=sum[i-1];
for(int i=1;i<=m;i++)
{
if(ans<0)ans=-ans;
scanf("%d%d",&l,&r);
if(jd)
{
l=(l^ans)%n+1;
r=(r^ans)%n+1;
if(l>r)
l^=r^=l^=r;
}
ans=0;calc(l,r);
printf("%lld\n",ans);
}
}
BZOJ 4216 Pig 分块乱搞的更多相关文章
- BZOJ 4216: Pig [分块]
传送门 询问区间和...内存3M 分块前缀和... 我连swap都是这么l=l^r , r=l^r , l=l^r写的.... #include <cstdio> typedef long ...
- HDU 4638 Group 【树状数组,分块乱搞(莫队算法?)】
根据题目意思,很容易得出,一个区间里面连续的段数即为最少的group数. 题解上面给的是用树状数组维护的. 询问一个区间的时候,可以一个一个的向里面添加,只需要判断a[i]-1 和 a[i]+1是否已 ...
- bzoj 2217 [Poi2011]Lollipop 乱搞 贪心
2217: [Poi2011]Lollipop Time Limit: 15 Sec Memory Limit: 64 MBSec Special JudgeSubmit: 383 Solved ...
- BZOJ - 2500 树形DP乱搞
题意:给出一棵树,两个给给的人在第\(i\)天会从节点\(i\)沿着最长路径走,求最长的连续天数\([L,R]\)使得\([L,R]\)为起点的最长路径极差不超过m 求\(1\)到\(n\)的最长路经 ...
- [luoguP2325] [SCOI2005]王室联邦(树分块乱搞)
传送门 想了半小时,没什么思路.. 看了题解,是个叫做树分块的奇奇怪怪的操作.. 题解 树分块的研究 #include <cstdio> #include <cstring> ...
- BZOJ 2456: mode(乱搞)
挺神奇的一道题,被1M内存坑了好久= =,这道题得记录当前众数以及众数与其他数的差,如果现在读入的这个数与众数相等,就加1,否则减一,如果差为0就替代掉他,可以证明如果众数存在的话这样一定能找出来 C ...
- bzoj 4260: REBXOR Trie+乱搞
题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=4260 题解: 啊啊啊. 被这种SB题坑了半天. 求出异或前缀和后 从n到1枚举\(r_1 ...
- bzoj 1050: [HAOI2006]旅行comf(codevs.cn 1001 舒适的路线) 快排+并查集乱搞
没用的话:好像很久没发博客了,主要是懒太蒟找不到水题.我绝对没弃坑...^_^ 还用些话:本文为博主原创文章,若转载请注明原网址和作者. 进入正题: 先pa网址: bzoj :http://www.l ...
- BZOJ 1011--[HNOI2008]遥远的行星(乱搞)
1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec Memory Limit: 162 MBSec Special JudgeSubmit: 5684 Solved ...
随机推荐
- mysql创建用户后无法登陆
创建用户后登陆失败的原因是存在匿名用户: root@controller:~# mysql -h localhost -uaa -ppassword ERROR 1045 (28000): Acces ...
- 【linux高级程序设计】(第十一章)System V进程间通信 4
共享内存 共享内存主要用于实现进程间大量数据传输. 共享内存的数据结构定义: 系统对共享内存的限制: 共享内存与管道的对比: 可以看到,共享内存的优势: 1.共享内存只需复制2次,而管道需要4次 2. ...
- java Iterable
Iterable
- PDF审计工具peepdf
PDF审计工具peepdf PDF是Portable Document Format(便携式文档格式)的缩写.它是Adobe公司推出的文件格式规范.现在,PDF是网络电子书籍的主流格式.由于PDF ...
- [CF232E]Quick Tortoise
题目大意: 给你一个$n\times m(n,m\leq 500)$的格子,有一些是障碍物.从一个格子出发只能向下或向右走,有$q$组询问,每次询问从一个点是否能够到达另一个点. 思路: 分治. 两点 ...
- Apache2 httpd.conf 配置详解
Apache2 httpd.conf 配置详解 <第一部分> 常用配置指令说明 1. ServerRoot:服务器的基础目录,一般来说它将包含conf/和logs/子目录,其它配置文件的相 ...
- .Net中的不可变集合(Immutable Collection)简介
今天发现MS在Nuget上发布了一个Immutable Collection的程序集,提供了对不可变对象的集合的支持. 简单的看了一下,貌似支持的还比较全: ImmutableArray<T&g ...
- 把我的漫画浏览器后台程序迁移到GAE上了
这两天看了一下Python和GAE相关资料,作为练手,把我以前写的Windows 8下看漫画的程序的后台解析算法迁移到了GAE上了. 之前由于没有后台服务器,很多东西在本地实现起来不是很方便,现在拿G ...
- linux之ssh命令
ssh命令用于远程登录上Linux主机. 常用格式:ssh [-l login_name] [-p port] [user@]hostname更详细的可以用ssh -h查看. 不指定用户: ssh 1 ...
- debian下QT4编程环境的建立
转:http://moosewoler.blog.163.com/blog/static/6986605200801013442336/ QT是一款跨平台的C++编程framework.QT的主要特性 ...