bzoj2038: [2009国家集训队]小Z的袜子(hose)
来源:互联网 发布:2010nba总决赛数据 编辑:程序博客网 时间:2024/06/10 20:11
莫队算法
#include <cstdio>#include <cmath>#include <map>#include <algorithm>using namespace std;#define MAXN 50003#define MAXM 50003int sqrtn;struct qtype{int l, r, nu;bool operator< (const qtype &x)const{int k1 = l / sqrtn, k2 = x.l / sqrtn;return k1 < k2 || (k1 == k2 && r < x.r);}} q[MAXM];int n, m, a[MAXN];int ct[MAXN] = {0};map<int, int> hash;int cth = 0;long long gcd(long long a, long long b){while (b){long long c = a % b;a = b;b = c;}return a;}long long ans1[MAXM], ans2[MAXM];int main(){scanf("%d%d", &n, &m);sqrtn = sqrt(n);for (int i = 0; i < n; ++i)scanf("%d", &a[i]);for (int i = 0; i < n; ++i)if (hash.find(a[i]) == hash.end())a[i] = hash[a[i]] = cth++;elsea[i] = hash[a[i]];for (int i = 0; i < m; ++i){scanf("%d%d", &q[i].l, &q[i].r);q[i].nu = i;--q[i].l;}sort(q, q + m);int l = 0, r = 1;ct[a[0]]++;long long sum = 0;for (int i = 0; i < m; ++i){while (l < q[i].l){long long t = ct[a[l]];if (t > 1)sum -= t * (t - 1) / 2;if (t > 2)sum += (t - 1) * (t - 2) / 2;--ct[a[l++]];}while (l > q[i].l){long long t = ct[a[l - 1]];if (t > 1)sum -= t * (t - 1) / 2;if (t > 0)sum += t * (t + 1) / 2;++ct[a[--l]];}while (r < q[i].r){long long t = ct[a[r]];if (t > 1)sum -= t * (t - 1) / 2;if (t > 0)sum += t * (t + 1) / 2;++ct[a[r++]];}while (r > q[i].r){long long t = ct[a[r - 1]];if (t > 1)sum -= t * (t - 1) / 2;if (t > 2)sum += (t - 1) * (t - 2) / 2;--ct[a[--r]];}long long tmp = (long long)(r - l) * (r - l - 1) / 2;long long c = gcd(sum, tmp);ans1[q[i].nu] = sum / c;ans2[q[i].nu] = tmp / c;}for (int i = 0; i < m; ++i)#ifdef WINNTprintf("%I64d/%I64d\n", ans1[i], ans2[i]);#elseprintf("%lld/%lld\n", ans1[i], ans2[i]);#endifreturn 0;}
0 0
- bzoj2038: [2009国家集训队]小Z的袜子(hose)
- bzoj2038 [2009国家集训队]小Z的袜子(hose) (分块)
- bzoj2038: [2009国家集训队]小Z的袜子(hose)
- bzoj2038【2009国家集训队】小Z的袜子(hose)
- 【BZOJ2038】[2009国家集训队]小Z的袜子(hose)【莫队】
- 【bzoj2038】[2009国家集训队]小Z的袜子(hose) 莫队
- bzoj2038: [2009国家集训队]小Z的袜子(hose) 莫队
- BZOJ2038: [2009国家集训队]小Z的袜子(hose)
- bzoj2038 [2009国家集训队]小Z的袜子(hose)
- bzoj2038: [2009国家集训队]小Z的袜子(hose)
- 【bzoj2038】 [2009国家集训队]小Z的袜子(hose)
- 【bzoj2038】 [2009国家集训队]小Z的袜子(hose)
- [莫队] BZOJ2038: [2009国家集训队]小Z的袜子(hose)
- BZOJ2038 [2009国家集训队]小Z的袜子(hose) 莫队
- BZOJ2038: [2009国家集训队]小Z的袜子(hose)
- 【bzoj2038】[2009国家集训队]小Z的袜子(hose)
- BZOJ2038 [2009国家集训队][小Z的袜子(hose)]
- 【bzoj2038】[2009国家集训队]小Z的袜子(hose)
- 为KVM客户机添加virsh console支持
- 爱立信笔试题目-mutable关键字
- mybatis防止sql注入
- DICOM医学图像处理:利用fo-dicom发送C-Find查询Worklist
- 编程之美--2.6 精确表达浮点数
- bzoj2038: [2009国家集训队]小Z的袜子(hose)
- 与网页上相同的tab栏效果
- iOS获取屏幕的宽度和属性
- poj 1179 Polygon(动态规划:矩阵连乘加强)
- Swift静态属性
- C实现MD5算法
- 菜鸟系列之C/C++经典试题(六)
- C++ 中 make_pair 的简易实现
- Project Euler 8