正题

评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P1494


题目大意

区间任意取两个数,求取到相同的数的概率。


解题思路

假设一个区间有x个y,那么两个都取到y的方案数是x∗(x−1)x*(x-1)x∗(x−1),那么取到相同总共方案数∑i=1nxi∗(xi−1)\sum_{i=1}^nx_i*(x_i-1)∑i=1n​xi​∗(xi​−1)。总共取的方案数(r−l+1)∗(r−l)(r-l+1)*(r-l)(r−l+1)∗(r−l),答案就是
∑i=1nxi∗(xi−1)(r−l+1)∗(r−l)\frac{\sum_{i=1}^nx_i*(x_i-1)}{(r-l+1)*(r-l)}(r−l+1)∗(r−l)∑i=1n​xi​∗(xi​−1)​
对于每个xix_ixi​,直接莫队就好了。
不过莫队要用分块优化一下


code

#include<cstdio>
#include<cmath>
#include<algorithm>
#define N 50010
#define ll long long
using namespace std;
struct node{ll l,r,id;
}a[N];
struct ans_node{ll x,y;
}ans[N];
ll n,m,w[N],l,r,now,id[N],t;
ll cnt[N];
inline bool cmp(node x,node y){if (id[x.l]==id[y.l]){if (id[x.l]&1==1) return x.r<y.r;else return x.r>y.r;    }else return id[x.l]<id[y.l];
}//分块优化莫队——排序
inline void add(ll x)//加一个数
{cnt[x]++;if(cnt[x]>1)now+=cnt[x]*(cnt[x]-1)-(cnt[x]-1)*(cnt[x]-2);
}
inline void del(ll x)//去掉一个数
{cnt[x]--;if(cnt[x]>0)now+=cnt[x]*(cnt[x]-1)-(cnt[x]+1)*cnt[x];
}
void get_ans(ll x,ll y,ll id)//计算答案
{if(!x)y=1;else{ll d=__gcd(x,y);x/=d;y/=d;}ans[id].x=x;ans[id].y=y;
}
int main()
{freopen("testdata.in","r",stdin);freopen("data.out","w",stdout);scanf("%lld%lld",&n,&m);t=sqrt(n);for(ll i=1;i<=n;i++)scanf("%lld",&w[i]),id[i]=(i-1)/t+1;for(ll i=1;i<=m;i++)scanf("%lld%lld",&a[i].l,&a[i].r),a[i].id=i;sort(a+1,a+1+m,cmp);l=a[1].l;r=a[1].r;for(ll i=l;i<=r;i++)add(w[i]);get_ans(now,(r-l+1)*(r-l),a[1].id);for(ll i=2;i<=m;i++){while(l<a[i].l) del(w[l++]);while(l>a[i].l) add(w[--l]);while(r<a[i].r) add(w[++r]);while(r>a[i].r) del(w[r--]);//边框移动get_ans(now,(r-l+1)*(r-l),a[i].id);}for(ll i=1;i<=m;i++)printf("%lld/%lld\n",ans[i].x,ans[i].y);
}

P1494-[国家集训队]小Z的袜子【分块优化莫队】相关推荐

  1. BZOJ 2038: [2009国家集训队]小Z的袜子(hose)【莫队算法裸题学习笔记】

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 9894  Solved: 4561 [Su ...

  2. BZOJ2038 : [2009国家集训队]小Z的袜子(hose)(莫队算法)

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MB Submit: 19269 Solved: 8851 [Sub ...

  3. [BZOJ 2038][2009国家集训队]小Z的袜子(hose)(莫队)

    Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只 ...

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

    题目传送门 强啊学了一发莫队. 解法: 刚看到这题没啥思路就只有一个n方的垃圾.. %题解说是莫队,学了一发. 莫队大概就是用来优化暴力的一个东西. 这道题的数学解法相必大家都会.. 在n个袜子里面选 ...

  5. P1494 [国家集训队]小Z的袜子/莫队学习笔记(误

    P1494 [国家集训队]小Z的袜子 题目描述 作为一个生活散漫的人,小\(Z\)每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小\(Z\)再也无法忍受这恼人的找袜子过程,于是他 ...

  6. P1494 [国家集训队]小Z的袜子

    P1494 [国家集训队]小Z的袜子 题意: 有一个长度为 n 的序列c[i] .现在给出 m个询问,每次给出两个数l,r ,从编号在 l 到 r 之间的数中随机选出两个不同的数,求两个数相等的概率. ...

  7. 洛谷P1494 [国家集训队]小Z的袜子

    P1494 [国家集训队]小Z的袜子 题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- ...

  8. 洛谷P1494 [国家集训队]小Z的袜子 莫队

    题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只袜子从1到N编 ...

  9. 洛谷 P1494 [国家集训队]小Z的袜子

    题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只袜子从1到N编 ...

  10. 并不对劲的bzoj2038:p1494:[国家集训队]小Z的袜子

    题目大意 有\(n\)(\(n\leq5*10^4\))个数\(a_1,a_2,...,a_n\)(\(\forall i\in[1,n], 1\leq a_i\leq n\)) \(m\)(\(m\ ...

最新文章

  1. vue-router点击切换路由报错
  2. 服务器硬盘属于计算机哪一类,服务器和电脑虽然都是计算机,但却有很大区别,千万不要用错了...
  3. 分库分表的类型和特点
  4. Jerry的SAP One Order框架重构的几版代码
  5. BZOJ 3513: [MUTC2013]idiots [FFT]
  6. 从零开始学前端:中括号代替点操作,获取对象,自定义标签属性 --- 今天你学习了吗?(JS:Day3)
  7. Python pipenv
  8. Java虚拟机层面的几种锁
  9. HTML5动画软件工具编辑器 HTML5动画分类 工具推荐
  10. [分组背包]Luogu1064 金明的预算方案
  11. IDEA下载并安装SVN教程
  12. 苹果手机设置导入喜欢的音乐作为铃声
  13. 微信公众号花式排版技巧分享
  14. 手机如何制作gif?简单三步在线合成gif动图
  15. LeetCode 41-50题
  16. 如何查询oracle 的版本
  17. 关于端口1433连接失败问题
  18. C语言中string函数库中的一些函数的用法
  19. R语言 读取csv文件 有关无法打开表格以及表格位置不对问题【已解决】
  20. photon磁力下载工具

热门文章

  1. c语言修改windows系统时间,c语言实现系统时间校正工具代码分享
  2. lunixs 常用命令c语言,常用Lunix命令 - osc_271igh42的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. php 鼠标小手,鼠标移动至少一次时创建PHP会话(Create PHP session when mouse moved at least once)...
  4. vue 离开页面事件_【必看】58 道 Vue 常见面试题集锦,涵盖入门到精通,自测 Vue 掌握程度...
  5. 算法题目——省份数量(dfs,bfs)
  6. 78. 子集022(回溯法)
  7. 1017 The Best Peak Shape (35 分)(最佳峰形)(思路+详解+翻译+题意分析)Come brather!!!!!!!!!
  8. 高等数学下-赵立军-北京大学出版社-题解-练习9.3
  9. The Water Bowls POJ - 3185(开关问题+暴力)
  10. Just a Hook HDU - 1698(查询区间求和+最基础模板)