[2009国家集训队]小Z的袜子(hose)(莫队算法)
来源:互联网 发布:java message类 编辑:程序博客网 时间:2024/06/12 01:48
裸的莫队算法题目。区间[l,r]一共有
#include<cstdio>#include<algorithm>#include<cmath>#define MAXN 50010using namespace std;typedef long long LL;int a[MAXN],n,m,block;LL now,cnt[MAXN];struct fs{ LL fz,fm;}ans[MAXN];LL gcd(LL a,LL b){ return b==0?a:gcd(b,a%b);}struct Q{ int l,r,id; bool operator <(const Q &b)const { if(l/block == b.l/block) return r < b.r; return l < b.l; }}que[MAXN];void add(int x){ now -= cnt[x]*(cnt[x]-1)/2; cnt[x]++; now += cnt[x]*(cnt[x]-1)/2;}void del(int x){ now -= cnt[x]*(cnt[x]-1)/2; cnt[x]--; now += cnt[x]*(cnt[x]-1)/2;}int main(){ scanf("%d%d",&n,&m); block = sqrt(n); for(int i = 1; i <= n; i++) scanf("%d",&a[i]); for(int i = 0; i < m; i++) { scanf("%d%d",&que[i].l,&que[i].r); que[i].id = i; } sort(que,que+m); int currentL = 1,currentR = 0; for(int i = 0; i < m; i++) { while(que[i].l < currentL) add(a[--currentL]); while(que[i].l > currentL) del(a[currentL++]); while(que[i].r > currentR) add(a[++currentR]); while(que[i].r < currentR) del(a[currentR--]); if(que[i].l == que[i].r) { ans[que[i].id].fz = 0; ans[que[i].id].fm = 1; continue; } ans[que[i].id].fz = now; ans[que[i].id].fm = 1LL*(que[i].r-que[i].l)*(que[i].r-que[i].l+1)/2;//分母应该是长整形,调了半天QAQ LL d = gcd(now,ans[que[i].id].fm); ans[que[i].id].fz /= d; ans[que[i].id].fm /= d; } for(int i = 0; i < m; i++) printf("%lld/%lld\n",ans[i].fz,ans[i].fm);}
0 0
- BZOJ 2038([2009国家集训队]小Z的袜子(hose)-莫队算法序列)
- [2009国家集训队]小Z的袜子(hose)(莫队算法)
- BZOJ 2038 2009国家集训队 小Z的袜子(hose) 莫队算法
- bzoj2038: [2009国家集训队]小Z的袜子(hose) 莫队算法(分块)
- [BZOJ2038][2009国家集训队]小Z的袜子(hose) && 莫队算法
- 2038: [2009国家集训队]小Z的袜子(hose) 莫队算法
- kyeremal-bzoj2038-[2009国家集训队]-小z的袜子(hose)-莫队算法
- bzoj 2038: [2009国家集训队]小Z的袜子(hose) (莫队算法)
- 2038: [2009国家集训队]小Z的袜子(hose) 莫队算法
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose)|分块|莫队算法
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose)(莫队算法)
- BZOJ_P2038 [2009国家集训队]小Z的袜子(hose)(莫队算法)
- [2009国家集训队]小Z的袜子(hose)(莫队算法)
- bzoj 2038: [2009国家集训队]小Z的袜子(hose) 【莫队算法】
- bzoj 2038: [2009国家集训队]小Z的袜子(hose)(莫队算法)
- 莫队算法 (dsy)2038: [2009国家集训队]小Z的袜子(hose)
- 2038: [2009国家集训队]小Z的袜子(hose) (莫队算法)
- 2038: [2009国家集训队]小Z的袜子(hose) (莫队算法)
- 字符串匹配Sunday算法C++实现
- IOS 内部测试与开发账号
- 推荐算法学习笔记一
- Android学习笔记----在一个应用程序中启动另一个应用程序
- Java/Android中线程池的应用
- [2009国家集训队]小Z的袜子(hose)(莫队算法)
- 02-2016面试准备
- Java 通过JDBC连接Mysql数据库的方法和实例【图文说明】
- question_019-JAVA之Map之TreeMap案例
- border 属性
- 多线程通识
- 使用文本编辑器
- Apache shutdown unexpectedly启动错误解决方法
- C++时间相关ctime