One Occurrence

为什么我半年前这么菜呀, 这种场只A三题。。。

我们在主席树 || 线段树上维护每个数的右边和它一样的数在哪里, 然后就变成了区间求最大值。

注意加进去的时候要把它右边一样的数的信息删掉。

我懒得离线数据就写了个主席树。

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define PLL pair<LL, LL>
#define PLI pair<LL, int>
#define PII pair<int, int>
#define SZ(x) ((int)x.size())
#define ull unsigned long long using namespace std; const int N = 5e5 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + ;
const double eps = 1e-;
const double PI = acos(-); int n, cnt, rt[N], b[N];
int Map[N]; struct node {
PII v;
int ls, rs;
} a[N * ]; void build(int l, int r, int& x) {
x = ++cnt;
if(l == r) {
a[x].v = mk(, l);
return;
}
int mid = l + r >> ;
build(l, mid, a[x].ls);
build(mid + , r, a[x].rs);
a[x].v = max(a[a[x].ls].v, a[a[x].rs].v);
} void update(int p, int val, int l, int r, int& x, int y) {
x = ++cnt; a[x] = a[y];
if(l == r) {
a[x].v.fi = val;
return;
}
int mid = l + r >> ;
if(p <= mid) update(p, val, l, mid, a[x].ls, a[y].ls);
else update(p, val, mid + , r, a[x].rs, a[y].rs);
a[x].v = max(a[a[x].ls].v, a[a[x].rs].v);
} PII query(int L, int R, int l, int r, int x) {
if(l >= L && r <= R) return a[x].v;
int mid = l + r >> ;
if(R <= mid) return query(L, R, l, mid, a[x].ls);
else if(L > mid) return query(L, R, mid + , r, a[x].rs);
else return max(query(L, R, l, mid, a[x].ls), query(L, R, mid + , r, a[x].rs));
} int main() {
scanf("%d", &n);
for(int i = ; i <= n; i++) scanf("%d", &b[i]);
for(int i = ; i <= ; i++) Map[i] = n + ;
build(, n, rt[n+]);
for(int i = n; i >= ; i--) {
update(i, Map[b[i]], , n, rt[i], rt[i + ]);
if(Map[b[i]] <= n) update(Map[b[i]], , , n, rt[i], rt[i]);
Map[b[i]] = i;
}
int q; scanf("%d", &q);
while(q--) {
int L, R; scanf("%d%d", &L, &R);
PII tmp = query(L, R, , n, rt[L]);
if(tmp.fi <= R) puts("");
else printf("%d\n", b[tmp.se]);
}
return ;
} /*
*/

最新文章

  1. android TextView多行文本(超过3行)使用ellipsize=&quot;end&quot;属性无效问题的解决方法
  2. Swift - 生成随机颜色(Extension UIColor)
  3. MAC安裝CocoaPods
  4. 开发一款高端大气上档次的android应用需要必备的知识——记于2013年末
  5. 巧用ViewPager 打造不一样的广告轮播切换效果
  6. Card objects
  7. 让人心动的jQuery插件和HTML5动画
  8. UVa Online Judge 工具網站
  9. Design Pattern ——Builder
  10. Mysql的JDBC
  11. JAVA开发中遇到的异常总结
  12. temp-重庆银行
  13. Vue+koa2开发一款全栈小程序(4.Koa入门)
  14. 【LeetCode每天一题】Combination Sum II(组合和II)
  15. js-day02
  16. Hadoop-2.8.0分布式安装手册
  17. BCTF2017 BabyUse
  18. 分类器评估方法:ROC曲线
  19. centos 6.5 双网卡 上网 virtualbox nat hostonly
  20. \G,sql中select 如果太长,可以在后面放\G,竖行显示~~~~

热门文章

  1. TCP/IP详解 卷1 第十九章 TCP的交互数据流
  2. u-boot移植(九)---代码修改---NAND
  3. ping不同网站总结
  4. luogu 2294 狡猾的商人 带权并查集
  5. WARN bzip2.Bzip2Factory: Failed to load/initialize native-bzip2 library system-native, will use pure-Java version
  6. BZOJ:1816 [Cqoi2010]扑克牌 (贪心或二分答案)
  7. 【SVN】svn使用方法
  8. 最小费用流(km的另一种使用思路)
  9. AutoML技术现状与未来展望
  10. Mysql被攻击