博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[洛谷P3709]大爷的字符串题
阅读量:6707 次
发布时间:2019-06-25

本文共 1959 字,大约阅读时间需要 6 分钟。

不用管它随机什么的,就用贪心的思想去想,

会发现这道题的实质是:求查询区间众数出现次数。

莫队即可解决。

注意字符集1e9,要离散化处理。

1 #include 
2 3 using namespace std; 4 5 #define re register 6 #define rep(i, a, b) for (re int i = a; i <= b; ++i) 7 #define repd(i, a, b) for (re int i = a; i >= b; --i) 8 #define maxx(a, b) a = max(a, b); 9 #define minn(a, b) a = min(a, b);10 #define LL long long11 #define INF (1 << 30)12 13 inline int read() {14 int w = 0, f = 1; char c = getchar();15 while (!isdigit(c)) f = c == '-' ? -1 : f, c = getchar();16 while (isdigit(c)) w = (w << 3) + (w << 1) + (c ^ '0'), c = getchar();17 return w * f;18 }19 20 const int maxn = 2e5 + 5;21 22 struct Query {23 int l, r, id, pos;24 } q[maxn];25 bool cmp(Query a, Query b) { return a.pos < b.pos || a.pos == b.pos && a.r < b.r; }26 27 struct Value {28 int v, id;29 } v[maxn];30 bool cmpv(Value a, Value b) { return a.v < b.v; }31 32 int a[maxn], b[maxn], l[maxn], cnt[maxn], n, m, size;33 34 int main() {35 n = read(), m = read();36 size = sqrt(n);37 rep(i, 1, n) v[i].v = read(), v[i].id = i;38 sort(v+1, v+n+1, cmpv);39 a[v[1].id] = 1;40 rep(i, 2, n) a[v[i].id] = a[v[i-1].id] + (v[i].v == v[i-1].v ? 0 : 1);41 42 rep(i, 1, m) q[i].l = read(), q[i].r = read(), q[i].id = i, q[i].pos = (q[i].l + size - 1) / size;43 sort(q+1, q+m+1, cmp);44 int pl = 1, pr = 0, ans = 0; l[0] = maxn;45 rep(i, 1, m) {46 while (pl < q[i].l) l[cnt[a[pl]]]--, l[cnt[a[pl]]-1]++, cnt[a[pl++]]--;47 while (pl > q[i].l) cnt[a[--pl]]++, l[cnt[a[pl]]]++, l[cnt[a[pl]]-1]--, maxx(ans, cnt[a[pl]]);48 while (pr < q[i].r) cnt[a[++pr]]++, l[cnt[a[pr]]]++, l[cnt[a[pr]]-1]--, maxx(ans, cnt[a[pr]]);49 while (pr > q[i].r) l[cnt[a[pr]]]--, l[cnt[a[pr]]-1]++, cnt[a[pr--]]--;50 while (!l[ans]) ans--;51 b[q[i].id] = ans;52 }53 rep(i, 1, m) printf("%d\n", -b[i]);54 return 0;55 }

 

转载于:https://www.cnblogs.com/ac-evil/p/10372001.html

你可能感兴趣的文章
《C++ 开发从入门到精通》——2.2 分析C++的程序结构
查看>>
《像计算机科学家一样思考Python》——3.12 为什么要有函数
查看>>
德国队的大数据策略|虽然被淘汰了但是人家准备很充分啊
查看>>
一个小型数据库的核心组件
查看>>
码农如何快速打造一个有设计感的网站
查看>>
你应该知道的人工智能三大分类
查看>>
《Unity 游戏案例开发大全》一6.2 游戏的策划及准备工作
查看>>
《JavaScript设计模式》——9.2 Module(模块)模式
查看>>
《企业大数据系统构建实战:技术、架构、实施与应用》一第3章 企业大数据解决方案3.1 企业大数据解决方案实现方式...
查看>>
Linux下的七个类Dropbox同步工具推荐
查看>>
非ROOT实现静默安装的一些思考与体会,AIDL获取IPackageManager,反射ServiceManager,系统签名...
查看>>
如何快速搭建钉钉微应用?
查看>>
《C语言及程序设计》实践参考——翻转数组
查看>>
Android 仿百合网超火爆社交app首页滑动效果
查看>>
Sublime Text 3 全程详细图文
查看>>
小心FOR IN遍历数组
查看>>
移动Web开发的bug及解决方案
查看>>
RabbitMQ(二) -- Work Queues
查看>>
Linux软件安装常用方法(转载)
查看>>
Java程序内存分析Java VisualVM(Visual GC)
查看>>