网上大片的莫队算法题解,先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. Android SDK目录含义介绍

    Android SDK目录的具体结构: 1.add-ons:该目录下存放第三方公司为Android平台开发的附加功能系统. 2.build-tools:编译工具.保存着一些通用工具,比如aapt.ai ...

  2. 学习笔记_过滤器详细(过滤器JavaWeb三大组件之一)

    过滤器详细 1 过滤器的生命周期 我们已经学习过Servlet的生命周期,那么Filter的生命周期也就没有什么难度了! (l)  init(FilterConfig):在服务器启动时会创建Filte ...

  3. JavaScript高级程序设计(二):在HTML中使用JavaScript

    一.使用<script>元素 1.<script>元素定义了6个属性: async:可选.表示应该立即下载脚本,但不应该妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本 ...

  4. facebook登录(集成FBSDKLoginKit) result的isCancelled总是YES token为nil

    只需要在AppDelegate如下函数添加: - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDict ...

  5. stm32中.bss和.data段是在哪里初始化的

    https://segmentfault.com/q/1010000004829859/a-1020000004850311 Q: STM32的启动文件startup_stm32f10x_hd.s中的 ...

  6. UVA 10881 Piotr's Ants(等效变换 sort结构体排序)

    Piotr's AntsTime Limit: 2 seconds Piotr likes playing with ants. He has n of them on a horizontal po ...

  7. ubuntu 下的 ftp (gftp)

    功能和 windows 下的 ftp 一样 gftp安装方法apt-get install gftp启动方法:gfpt

  8. svn命令操作

    非超级用户:sudo 命令 svn info 查看svn地址 svn co 地址 检出仓库

  9. php会话控制cookie/session

    设置cookie PHP设置Cookie最常用的方法就是使用setcookie函数,setcookie具有7个可选参数,我们常用到的为前5个: name( Cookie名)可以通过$_COOKIE[' ...

  10. MySQL字符串中数字排序的问题

    1.select * from table where 1   order by id*1 desc; 2.select * from table where 1 order by id+0 desc ...