vjudge上莫队专题

真的是要吐槽自己(自己的莫队手残写了2个bug)

  • s=sqrt(n) 是元素的个数而不是询问的个数(之所以是sqrt(n)使得左端点每个块左端点的范围嘴都是sqrt(n))
  • 在重载<是将q[i].l/s<q2[i].l/s 写成q1[i].l<s<q2[i].l<s 导致一下午都在调bug疯了

Sona

  • 比小Z的袜子简单,直接维护区间频度的^3
  • 需要离散化(离散化化的标号应提前准备好,如果用时在二分查找会增加复杂度)
  • 还有比较坑的一点是多case,但样例只有一个case;多case一定要注意那些结构需要清空

cf:221D Little Elephant and Array

  • 维护x=freq(x)的个数

Little Elephant and Array

  • 维护区间相异元素的个数(通过出现次数便可很好写[L,R]->[L-1,R]...的转移)
  • 转移有一种非常简单的写法:先减去关于元素q的信息,然后更新(可能删除或加上q),然后重新加上元素q相关信息

D-query

  • 维护区间\(s*freq(s)^2\),freq(s)是s出现的次数
  • 这里有个int溢出的坑(如注释所示)
inline void move(ll& now,int p,int v){

    now-=(ll)num[c[p]]*num[c[p]]*tmp[p];//不强制转换为ll会WA
num[c[p]]+=v;
now+=(ll)num[c[p]]*num[c[p]]*tmp[p];
//printf("db1 %lld %d %d %d %d\n",now,c[p],p,num[c[p]],v); /*
if(v==1){
now+=(1+2*num[c[p]])*tmp[p];//这种从数学上简化一步缩小增量大小,也可以
num[c[p]]++;
}
else{
now+=(1-2*num[c[p]])*tmp[p];
num[c[p]]--;
}
*/
/*
printf("db1 %lld %d %d %d\n",now,p,num[c[p]],v);
for(int i=1;i<=n;i++){
printf("%d\t",num[c[i]]);
}
printf("\n");
*/
}

Fast Queries

  • 比较卡时间,经时间证明 ,下面写法能卡过
struct Query{
int l,r,id;
bool operator < (const Query&a) const{
if(l / s != a.l / s) return l / s < a.l / s;
return r < a.r;
}
/*
void read(int i){
scanf("%d %d",&l,&r);
id = i;
}
*/
}ques[maxm];
  • 对运算符号重载的另一种写法不能卡过
struct Query{
int l,r,id;
inline friend bool operator <(const Query& q1,const Query&q2){
if(q1.l/s!=q2.l/s) return q1.l/s<q2.l/s;
return q1.r<q2.r;
}
}ques[maxn];

总结一下自己对这种裸的模板题的坑:

  • n,m的含义不要混淆
  • 分块s=sqrt(n)
  • 注意离散化开的数组含义,一起询问的l,r是下标,需要通过数组才能得到真正信息
  • 防止整形溢出
  • 运算重载的写法能优化速度

加油不要手残呀

Sona && Little Elephant and Array && Little Elephant and Array && D-query && Powerful array && Fast Queries (莫队)的更多相关文章

  1. Little Elephant and Array CodeForces - 220B (莫队)

    The Little Elephant loves playing with arrays. He has array a, consisting of npositive integers, ind ...

  2. codeforces 86D : Powerful array

    Description An array of positive integers a1, a2, ..., an is given. Let us consider its arbitrary su ...

  3. CodeForces 86D Powerful array(莫队+优化)

    D. Powerful array time limit per test 5 seconds memory limit per test 256 megabytes input standard i ...

  4. NBUT 1457 Sona(莫队算法+离散化)

    [1457] Sona 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Sona, Maven of the Strings. Of cause, she can play the ...

  5. D. Powerful array 莫队算法或者说块状数组 其实都是有点优化的暴力

    莫队算法就是优化的暴力算法.莫队算法是要把询问先按左端点属于的块排序,再按右端点排序.只是预先知道了所有的询问.可以合理的组织计算每个询问的顺序以此来降低复杂度. D. Powerful array ...

  6. codefroce D. Powerful array[初识块状数组]

    codefroce D. Powerful array[初识块状数组] 由于是初始所以,仅仅能先用别人的分析.囧... 题目: 给定一个数列:A1, A2,--,An,定义Ks为区间(l,r)中s出现 ...

  7. D. Powerful array

    D. Powerful array 题意 给定一个数列:a[i] (1<= i <= n) K[j]表示 在区间 [l,r]中j出现的次数.有t个查询,每个查询l,r,对区间内所有a[i] ...

  8. VS2013 error C2556: “const int &Array<int>::operator [](int)”: 重载函数与“int &Array<int>::operator [](int)”只是在返回类型上不同

    1,VS2013 错误 1 error C2556: “const int &Array<int>::operator [](int)”: 重载函数与“int &Array ...

  9. CF86D Powerful array

    题意翻译 题意:给出一个n个数组成的数列a,有t次询问,每次询问为一个[l,r]的区间,求区间内每种数字出现次数的平方×数字的值 的和. 输入:第一行2个正整数n,t. 接下来一行n个正整数,表示数列 ...

随机推荐

  1. 洛谷P1046 陶陶摘苹果

    题目描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出 101010 个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个 303030 厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳 ...

  2. Zend 官方框架增加 Swoole 协程支持 !

    前言 Zend Framework 是 PHP 的官方框架,随着 Zend-Expressive-Swoole 0.2.2 的发布,率先支持了 Swoole 4 的协程功能,现在可以仅通过一个配置即可 ...

  3. python第一周:python初识、流程控制

    编译性语言:在将源代码编译完毕生成一个可执行文件后才能运行 解释性语言:在代码的运行期间进行编译 动态类型语言:在运行期间才去做数据检查的语言,也就是说在使用动态类型语言时不用指定数据类型 静态类型语 ...

  4. 关于安卓sdk开发环境的的更新-Android SDK下载和更新失败

    由于特别原因,我们更新安卓sdk时不会成功.解决办法: 修改C:\Windows\System32\drivers\etc\hosts文件.添加一行:74.125.237.1       dl-ssl ...

  5. 带有public static void main方法的类,其中的成员变量必须是static的,否则main方法没法调用。除非是main里的局部变量。因为main方法就是static的啊。

    带有public static void main方法的类,其中的成员变量必须是static的,否则main方法没法调用.除非是main里的局部变量.因为main方法就是static的啊.

  6. getColor()方法过时的替代方法

    Android SDK 升級到 23 之後,getResource.getColor(R.color.color_name) 過時 使用新加入的方法 ContextCompat.getColor(co ...

  7. 【iOS开发-68】APP下载案例:利用tableView自带的cell布局+缓存池cell复用时注意button状态的检查

    (1)效果 (2)源码与资源下载 http://pan.baidu.com/s/1pJLo2PP (3)总结 --核心是利用UITableView里面自带的cell来制作样式同样的cell. 与之对应 ...

  8. Cocos2d-x3.0 RenderTexture(三)

    .h #include "cocos2d.h" #include "cocos-ext.h" #include "ui/CocosGUI.h" ...

  9. 0x12 队列

    感觉和栈那一讲一样简单啊.. poj2259 这个乱搞硬模拟吧...没更新last WA了N次...(叫你懒得写拍) #include<cstdio> #include<iostre ...

  10. caioj1497&&bzoj3125: CITY

    震惊!bzoj居然又被苏大佬D飞了... 这题煞笔模板题好吧. 然而bzojAC caiojWA%40??? 好强啊 今天早上发现是m打成n了囧 #include<cstdio> #inc ...