HYSBZ 2743 采花
来源:互联网 发布:知乎账号注册 编辑:程序博客网 时间:2024/04/28 02:09
题意:给出一个数列,每个询问查询[L,R]中至少出现两次的数字有多少种?
思路:(1)记录每个位置i的数字的前一个相同数字出现的位置pre[i],没有前一个相同的pre[i]为0。
(2)询问按照R升序。
(3)开始计算:枚举i从1到m(m为询问个数),对于某个位置x,将pre[pre[x]]+1增加1,pre[x]+1减少1,这样做的原因在于任意一个出现两次的数字在任意一段区间中最多只插入一次。然后统计左区间之前的和即可。
#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int MAXN = 1000010;struct Node{ int l, r, id; Node() {} Node(int t_l, int t_r, int t_id) : l(t_l), r(t_r), id(t_id) {} bool operator < (const Node &p) const { if(r == p.r) return l < p.l; return r < p.r; }}node[MAXN];int Tree[MAXN], pre[MAXN], head[MAXN], ans[MAXN], a[MAXN], n, c, m;inline int lowbit(int x){ return x & (-x);}void modify(int x, int value){ for(int i = x; i <= n; i += lowbit(i)) { Tree[i] += value; } return ;}int getsum(int x){ int ret = 0; for(int i = x; i > 0; i -= lowbit(i)) { ret += Tree[i]; } return ret;}int main(){ //freopen("aa.in", "r", stdin); //freopen("bb.out", "w", stdout); scanf("%d %d %d", &n, &c, &m); for(int i = 1; i <= n; ++i) { scanf("%d", &a[i]); pre[i] = head[a[i]]; head[a[i]] = i; } for(int i = 1; i <= m; ++i) { scanf("%d %d", &node[i].l, &node[i].r); node[i].id = i; } sort(node + 1, node + m + 1); int now = 1; for(int i = 1; i <= m; ++i) { while(now <= node[i].r) { modify(pre[pre[now]] + 1, 1); modify(pre[now] + 1, -1); now++; } ans[node[i].id] = getsum(node[i].l); } for(int i = 1; i <= m; ++i) { printf("%d\n", ans[i]); } return 0;}
- HYSBZ-2743-采花
- HYSBZ 2743 采花
- 【BZOJ 2743】 [HEOI2012]采花
- bzoj-2743 采花
- 2743: [HEOI2012]采花
- bzoj 2743 [HEOI2012]采花
- BZOJ 2743 [HEOI2012]采花
- 2743: [HEOI2012]采花
- 2743: [HEOI2012]采花
- 2743: [HEOI2012]采花
- BZOJ 2743: [HEOI2012]采花
- bzoj 2743 [HEOI2012]采花 题解
- BZOJ 2743 HEOI2012 采花 树状数组
- BZOJ 2743 HEOI 2012 采花 树状数组
- BZOJ 2743 [HEOI2012]采花 离线+线段树
- bzoj 2743: [HEOI2012]采花 树状数组
- BZOJ 2743 采花(树状数组)
- [BZOJ 2743]采花(树状数组+离线)
- 设计模式
- 浅析政府网站群构建新标准
- oracle exp/imp 空表不能导出的问题
- Oracle的存储结构关系(随便看)
- 上传本地代码到github
- HYSBZ 2743 采花
- 关于WebView的addJavascriptInterface方法的安卓版本问题
- 黑马程序员--交通灯管理系统
- 《Head First Java》读书笔记——超强力方法
- 【好东西】android 手机集成支付宝 开发分享
- Eclipse NDK 配置
- cocos2d-x坐标系统
- [剑指offer][面试题36]数组中的逆序对
- stdio.h