P1494 小Z的袜子

  • 莫队板子题,对询问进行排序+分块,从而得到巧妙的复杂度
  • 对于L,R的询问。

    设其中颜色为x,y,z的袜子的个数为a,b,c...

    那么答案即为 (a*(a-1)/2+b*(b-1)/2+c*(c-1)/2....)/((R-L+1)*(R-L)/2)(a∗(a−1)/2+b∗(b−1)/2+c∗(c−1)/2....)/((R−L+1)∗(R−L)/2)

    化简得: (a^2+b^2+c^2+...x^2-(a+b+c+d+.....))/((R-L+1)*(R-L))(a2+b2+c2+...x2−(a+b+c+d+.....))/((R−L+1)∗(R−L))

    即: (a^2+b^2+c^2+...x^2-(R-L+1))/((R-L+1)*(R-L))(a2+b2+c2+...x2−(R−L+1))/((R−L+1)∗(R−L))

    我们需要解决的一个问题

    求一个区间内每种颜色数目的平方和。

  • 大佬博客
  • 代码:
#include <cstdio>
#include <iostream>
#include <cctype>
#include <algorithm>
#include <cmath>
using namespace std;typedef long long LL;
#define res register int
inline int read()
{int x(0),f(1); char ch;while(!isdigit(ch=getchar())) if(ch=='-') f=-1;while(isdigit(ch)) x=x*10+ch-'0',ch=getchar();return f*x;
}const int N=50005;
struct node{int x,y,z;LL p,q;}a[N];
int pos[N],c[N];
LL cnt[N];
int n,m,block;inline bool cmp1(const node &n1,const node &n2)
{if(pos[n1.x]==pos[n2.x]) return n1.y<n2.y;return n1.x<n2.x;
}
inline bool cmp2(const node &a,const node &b)
{ return a.z<b.z; }inline LL gcd(LL a,LL b) { return b?gcd(b,a%b):a; }LL ans;
inline void update(int i,int d)
{ans-=cnt[c[i]] * cnt[c[i]];cnt[c[i]]+=d;ans+=cnt[c[i]] * cnt[c[i]];
}inline void solve()
{ans=0;int l=1,r=0;for(res i=1 ; i<=m ; ++i){if(a[i].x==a[i].y) {a[i].p=0; a[i].q=1;continue;}for( ; r<a[i].y ; ++r) update(r+1,1);for( ; r>a[i].y ; --r)    update(r,-1);for( ; l<a[i].x ; ++l)    update(l,-1);for( ; l>a[i].x ; --l)  update(l-1,1);LL len=a[i].y-a[i].x+1;a[i].p=ans-len;a[i].q=len*(len-1);LL tmp=gcd(a[i].p,a[i].q);a[i].p/=tmp; a[i].q/=tmp;}
}
int main()
{n=read(); m=read();for(res i=1 ; i<=n ; ++i) c[i]=read();for(res i=1 ; i<=m ; ++i)a[i].x=read(),a[i].y=read(),a[i].z=i;block = sqrt(n);for(res i=1 ; i<=n ; ++i) pos[i]=(i-1)/block+1;sort(a+1,a+m+1,cmp1);solve();sort(a+1,a+m+1,cmp2);for(res i=1 ; i<=m ; ++i)printf("%lld/%lld\n",a[i].p,a[i].q);return 0;
}

  

转载于:https://www.cnblogs.com/wmq12138/p/10518089.html

P1494 小Z的袜子相关推荐

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

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

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

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

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

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

  4. (HYSBZ - 2038)小Z的袜子(hose)(莫队)

    题目链接:P1494 [国家集训队]小Z的袜子 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目是中文的,我在这就不解释题意了. 这道题目考察的是莫队算法,还是老样子,模板不再多 ...

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

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

  6. 2038: [2009国家集训队]小Z的袜子(hose)+莫队入门

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

  7. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) 分块

    分块大法好 2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 2938  Solved: 13 ...

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

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

  9. 莫队算法 BOJ 2038 [2009国家集训队]小Z的袜子(hose)

    题目传送门 1 /* 2 莫队算法:求出[l, r]上取出两只相同袜子的个数. 3 莫队算法是离线处理一类区间不修改查询类问题的算法.如果你知道了[L,R]的答案,可以在O(1)的时间下得到 4 [L ...

最新文章

  1. Html编辑器kindsoft
  2. 全网最全程序员效率工具及小技巧
  3. 微信好友特征数据分析及可视化
  4. linux mail.rc 端口,配置mail.rc 文件并使用mail发送邮件的详细配置
  5. 在Linux中创建静态库和动态库 (转)
  6. 一款好的折线图、饼图、柱形图
  7. 分库分表下极致的优化
  8. java怎样访问servlet_如何访问URL并从java servlet获取响应?
  9. 提高程序员职场价值的10大技巧
  10. JavaScript高阶函数快速入门
  11. 对象失去焦点时自己动提交数据
  12. 瑞士科学家造出了撞不坏的无人机丨Science Robitics
  13. Ubuntu16.04几分钟自动断网问题
  14. 实现简单的Java内存缓存
  15. 关于exe应用程序做成Windows服务爬过的坑
  16. kibana4 分析和搜索仪表板 安装和配置
  17. Xshell脚本学习
  18. 打造数字化转型IT生态系统的IT管理方法:IT4IT一瞥
  19. Unity+Vuforia实现AR图片识别应用
  20. ffmpeg命令行太多了_ffmpeg每帧请求的位数过多

热门文章

  1. 这些知名制药跨国企业都实施了SAP系统
  2. 自动驾驶国家标准将出台,2021年是L3级自动驾驶汽车元年?
  3. 一文读懂深度学习:这个AI核心技术被美国掌控,很危险
  4. 「SAP技术」SAP MM 委外加工采购流程里副产品的收货
  5. 嵌入式视觉领域的机器学习
  6. 谷歌将AutoML应用于Transformer架构,翻译结果飙升,已开源
  7. 教你如何运用可视化理解卷积神经网络(CNNs)的指南
  8. Python 之 Numpy (四)索引
  9. seq2seq中的beam search算法过程
  10. 诺奖10年,干细胞领域再突破!华大单细胞技术助力获得人类体外诱导全能干细胞...