网上大片的莫队算法题解,先orz一下莫队
什么不会莫队?没事我来篇低端的
分块大法好啊,我们知道对于区间[l,r]答案是S/P P是一下子可以算出来的,S=∑(pj-1)*pj/2 pj表示区间内颜色为j的数目
先记录ans[i,j]表示第i块到第j块之间的S
然后再记录颜色g[i,j]表示到第i块颜色为j的数目
然后暴力统计不在整块内颜色对答案的贡献即可
20分钟就1A了,非常好写
虽然理论复杂度和莫队差不多O(nsqrt(n))
但是实际上似乎被莫队完败了,但是没关系,毕竟我们这是在线算法啊

 var f:array[..,..] of longint;
g:array[..,..] of longint;
be,c,s:array[..] of longint;
size,p,t,i,n,m,x,y:longint; function gcd(a,b:longint):longint;
begin
if b= then exit(a)
else exit(gcd(b,a mod b));
end; procedure prework;
var i,j:longint;
begin
for i:= to n do
inc(g[c[i],be[i]]);
for i:= to p do
for j:= to t do
inc(g[i,j],g[i,j-]);
for i:= to t do
begin
for j:=(i-)*size+ to n do
begin
if j mod size= then f[i,be[j]]:=f[i,be[j]-];
inc(f[i,be[j]],s[c[j]]);
inc(s[c[j]]);
end;
fillchar(s,sizeof(s),);
end;
end; procedure clear(l,r:longint);
var i:longint;
begin
for i:=l to r do
s[c[i]]:=;
end; procedure ask(x,y:longint);
var i,a,b,d:longint;
begin
b:=int64(y-x+)*int64(y-x) div ;
a:=;
if be[x]=be[y] then
begin
for i:=x to y do
begin
a:=a+s[c[i]];
inc(s[c[i]]);
end;
clear(x,y);
end
else begin
a:=f[be[x]+,be[y]-];
for i:=x to be[x]*size do
begin
if s[c[i]]= then s[c[i]]:=g[c[i],be[y]-]-g[c[i],be[x]];
a:=a+s[c[i]];
inc(s[c[i]]);
end;
for i:=(be[y]-)*size+ to y do
begin
if s[c[i]]= then s[c[i]]:=g[c[i],be[y]-]-g[c[i],be[x]];
a:=a+s[c[i]];
inc(s[c[i]]);
end;
clear(x,be[x]*size);
clear((be[y]-)*size+,y);
end;
d:=gcd(a,b);
writeln(a div d,'/',b div d);
end; begin
readln(n,m);
size:=trunc(sqrt(n));
for i:= to n do
begin
read(c[i]);
if c[i]>p then p:=c[i];
be[i]:=(i-) div size+;
end;
t:=i div size;
if i mod size<> then inc(t);
prework;
for i:= to m do
begin
readln(x,y);
ask(x,y);
end;
end.

bzoj2038的更多相关文章

  1. 【bzoj2038】 小Z的袜子(hose)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2038 (题目链接) 转自:http://blog.csdn.net/bossup/article/d ...

  2. BZOJ2038 2009国家集训队 小Z的袜子(hose) 【莫队】

    BZOJ2038 2009国家集训队 小Z的袜子(hose) Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼 ...

  3. 【BZOJ2038】小Z的袜子(莫队)

    题意: 给定n个数a1, a2…… an与m个询问(L,R).对于每个询问,从aL, aL+1…… aR这R-L+1个数中随机取出两个数,求这两个数相同的概率. 数据范围:1<=n,m,ai&l ...

  4. BZOJ2038 (莫队)

    BZOJ2038: 小Z的袜子 Problem : N只袜子排成一排,每次询问一个区间内的袜子种随机拿两只袜子颜色相同的概率. Solution : 莫队算法真的是简单易懂又暴力. 莫队算法用来离线处 ...

  5. BZOJ2038 小Z的袜子 (莫队算法)

    题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=2038 专题练习: http://acm.hust.edu.cn/vjudge/conte ...

  6. [bzoj2038][2009国家集训队]小Z的袜子(hose)_莫队

    小Z的袜子 hose 2009-国家集训队 bzoj-2038 题目大意:给定一个n个袜子的序列,每个袜子有一个颜色.m次询问:每次询问一段区间中每种颜色袜子个数的平方和. 注释:$1\le n,m\ ...

  7. 【bzoj2038】[2009国家集训队]小Z的袜子(hose)(细致总结)

    [bzoj2038][2009国家集训队]小Z的袜子(hose)(细致总结) Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z ...

  8. BZOJ2038 小Z的袜子 莫队

    BZOJ2038 题意:q(5000)次询问,问在区间中随意取两个值,这两个值恰好相同的概率是多少?分数表示: 感觉自己复述的题意极度抽象,还是原题意有趣(逃: 思路:设在L到R这个区间中,x这个值得 ...

  9. 【填坑向】bzoj2038小Z的袜子 莫队

    学莫队必做题,,,但是懒得写.今天来填个坑 莫队水题 莫队实际上就是按一个玄学顺序来离线计算询问,保证复杂度只会多一个n1/2,感觉是玄学(离线算法都很玄学) 易错点:要开long long(卡我半天 ...

  10. bzoj2038小z的袜子

    用平面曼哈顿距离最小生成树或者莫队算法都可以吖QwQ~ 然而显然后者更好写(逃~) 莫队怎么写就看图吧QwQ~ 话说我一开始没开long long然后拍了3000组没拍出错交上去Wa了QAQ #inc ...

随机推荐

  1. ASP.NET问题处理---“数据请求超时错误“”

    数据请求超时,一般有2中解决方式: 1.页面AJAX处理数据时延长时间: 2.后台数据库连接取数据时延长时间. 由于我的后台数据库连接取数据为循环读取数据,所以不存在超时问题,这里具体说说如何修改AJ ...

  2. works-er

  3. oracle级联删除 触发器

    CREATE TABLE STUDENT( --创建学生表  ID NUMBER(10) PRIMARY KEY,   --主键ID  SNAME VARCHAR2(20),  CLASSNAME V ...

  4. java web-----servelet

    1,定义servlet: 2,servlet生命周期: 3,HttpServlet常用方法: 4,servlet常用接口: 一,servlet定义: servlet是一个继承HttpServlet类的 ...

  5. OI路上-NOIP100天冲刺计划

    学OI已经9个月了,可是自己水平还是那样的弱QWQ. 现在离NOIP还有差不多100天的时间. 晚上辗转反侧发现了自己的一些问题: (1)DP还经常没思路. (2)搜索恶心题还不想写. (3)有时候也 ...

  6. asmdisk 丢失问题一次记录

    环境 vm12 workstation ,11.2R 在安装RAC 第二台机器不显示磁盘的是问题 , oracleasm listdisks 查询没有结果 , 于是执行 oracleasm scand ...

  7. PAT 1065 A+B and C (64bit) (20)

    1065. A+B and C (64bit) (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 HOU, Qiming G ...

  8. 安装交叉编译arm-linux-gcc环境

    设置好交叉编译的执行文件路径贴加到环境变量PATH 设置如下 export PATH=$PATH:/XXX/XXX/bin /etc/profile /~/.bashrc source  /etc/p ...

  9. 数据添加到DataTable

    DataTable tblDatas = new DataTable("Datas");            DataColumn dc = null;              ...

  10. easyui之combotree

    这几天时间比较空闲的我把easyui中比较难的控件回顾一遍 这次的总结是easyui中的combotree easyui的中文文档上说:combotree结合选择控制和下拉树,类似于combobox只 ...