CF840D. Destiny
CF840D. Destiny
Solution
发现问题只有询问没有修改,且要维护类似众数的东西,瞟了一眼数据范围n,m≤3e5n,m\leq 3e5n,m≤3e5,果断莫队,一点不虚,写到一半发现删除不好直接维护,用setsetset会多一个logloglog,必然TLETLETLE,于是果断回滚莫队,维护所有数的出现次数以及出现次数最多的五个数即可。
时间复杂度:大常数 O(nn)O(n\sqrt n)O(nn)。
CFCFCF实测1600ms1600ms1600ms,优秀!
Code
#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <ctime>
#include <cassert>
#include <string.h>
//#include <unordered_set>
//#include <unordered_map>
//#include <bits/stdc++.h>#define MP(A,B) make_pair(A,B)
#define PB(A) push_back(A)
#define SIZE(A) ((int)A.size())
#define LEN(A) ((int)A.length())
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define fi first
#define se secondusing namespace std;template<typename T>inline bool upmin(T &x,T y) { return y<x?x=y,1:0; }
template<typename T>inline bool upmax(T &x,T y) { return x<y?x=y,1:0; }typedef long long ll;
typedef unsigned long long ull;
typedef long double lod;
typedef pair<int,int> PR;
typedef vector<int> VI;const lod eps=1e-11;
const lod pi=acos(-1);
const int oo=1<<30;
const ll loo=1ll<<62;
const int mods=998244353;
const int MAXN=600005;
const int INF=0x3f3f3f3f;//1061109567
/*--------------------------------------------------------------------*/
inline int read()
{int f=1,x=0; char c=getchar();while (c<'0'||c>'9') { if (c=='-') f=-1; c=getchar(); }while (c>='0'&&c<='9') { x=(x<<3)+(x<<1)+(c^48); c=getchar(); }return x*f;
}
int a[MAXN],cnt[MAXN],Ans[MAXN],mx[10],Mx[10];
struct Qnode{ int l,r,x,id; } Q[MAXN];
void add(int x)
{cnt[x]++;for (int j=0;j<5;j++) if (mx[j]==x) return;int mn=0;for (int j=1;j<5;j++) if (cnt[mx[j]]<cnt[mx[mn]]) mn=j;if (cnt[mx[mn]]<cnt[x]) mx[mn]=x;
}
void Add(int x)
{cnt[x]++;for (int j=0;j<5;j++) if (Mx[j]==x) return;int mn=0;for (int j=1;j<5;j++) if (cnt[Mx[j]]<cnt[Mx[mn]]) mn=j;if (cnt[Mx[mn]]<cnt[x]) Mx[mn]=x;
}
int get(int x)
{int ans=INF;for (int j=0;j<5;j++)if (cnt[mx[j]]>=x) upmin(ans,mx[j]);if (ans==INF) return -1;return ans;
}
int Get(int x)
{int ans=INF;for (int j=0;j<5;j++)if (cnt[Mx[j]]>=x) upmin(ans,Mx[j]);if (ans==INF) return -1;return ans;
}
signed main()
{int n=read(),m=read(),sz=floor(sqrt(n));for (int i=1;i<=n;i++) a[i]=read();for (int i=1;i<=m;i++) Q[i]=(Qnode){read(),read(),read(),i};sort(Q+1,Q+m+1,[&](Qnode x,Qnode y){ return ((x.l-1)/sz<(y.l-1)/sz)||((x.l-1)/sz==(y.l-1)/sz&&x.r<y.r); });Q[0].l=-sz;for (int i=1,l,r;i<=m;i++){if ((Q[i].l-1)/sz!=(Q[i-1].l-1)/sz) {for (int j=1;j<=n;j++) cnt[j]=0;for (int j=0;j<5;j++) mx[j]=0;l=((Q[i].l-1)/sz+1)*sz,r=l-1;}if ((Q[i].r-1)/sz==(Q[i].l-1)/sz){for (int j=Q[i].l;j<=Q[i].r;j++) add(a[j]);Ans[Q[i].id]=get((Q[i].r-Q[i].l+1)/Q[i].x+1);for (int j=Q[i].l;j<=Q[i].r;j++) cnt[a[j]]--;continue;}while (r<Q[i].r) r++,add(a[r]);for (int j=0;j<5;j++) Mx[j]=mx[j];for (int j=Q[i].l;j<l;j++) Add(a[j]);Ans[Q[i].id]=Get((Q[i].r-Q[i].l+1)/Q[i].x+1);for (int j=Q[i].l;j<l;j++) cnt[a[j]]--;}for (int i=1;i<=m;i++) printf("%d\n",Ans[i]);return 0;
}
CF840D. Destiny相关推荐
- double java 精度丢失_java中double和float精度丢失问题及解决方法
在讨论两位double数0.2和0.3相加时,毫无疑问他们相加的结果是0.5.但是问题总是如此吗? 下面我们让下面两个doubles数相加,然后看看输出结果: @Test public void te ...
- BCVP开发者说第一期:Destiny.Core.Flow
沉静岁月,淡忘流年 1 项目简介 Destiny.Core.Flow Destiny.Core.Flow是基于.NetCore平台,轻量级的模块化开发框架,Admin管理应用框架,旨在提升团队的快速开 ...
- Control your destiny, or someone else will
6条rules,来自GE 1. Control your destiny, or someone else will. 2. Face reality as it is, not as it was ...
- 命运2登录服务器中断,命运2错误代码:与命运断开连接解决步骤Error Codes: Disconnected From Destiny...
错误代码:与命运断开连接 与命运断开连接的玩家将收到一条错误消息,该消息的底部可能包含错误代码.每个错误代码都表示断开连接的类型不同,并用于帮助Bungie,平台合作伙伴和玩家跟踪导致受影响的玩家失去 ...
- Slumdog Millionaire is destiny
贫民窟的百万富翁,这部影片能够获得奥斯卡金像奖感觉还是有点意外的 并不是非常有故事性的叙事影片,但有几句话是比较震撼人的 把社会的黑暗以素描的方式展现在眼前,每个贫民窟的孩子是那么无能为力,在一个自己 ...
- python自动发送微信公众号_使用python一步一步搭建微信公众平台(四)----将小黄鸡引入微信自动回复...
通过前三篇的教程,相信大家基本上了解了微信开发的基本流程,先判断用户传入数据的类型MsgType,然后再获取用户输入的内容content,再对content进行处理,再返回给用户 现在我们来加点料,在 ...
- anki_Anki如何挽救我的工程生涯
anki by Jeffrey Shek 通过Jeffrey Shek Anki如何挽救我的工程生涯 (How Anki saved my Engineering Career) I was burn ...
- hic染色体构想_了解微服务:从构想到起点
hic染色体构想 by Michael Douglass 迈克尔·道格拉斯(Michael Douglass) 了解微服务:从构想到起点 (Understanding Microservices: F ...
- 谈论源码_6,000名自由职业者谈论金钱,幸福和对未来的希望
谈论源码 More than 6,000 US-based freelancers responded to a new in-depth survey. I dug through the data ...
最新文章
- 您会让自己的小孩将来从事软件研发吗?
- 【ACM】杭电OJ 1106 函数atoi
- python如何调用文件进行换位加密_Python换位密码
- segment fault
- c语言文件指针ab命令,C语言试题,~库(完整版~).doc
- 恒压板框过滤实验数据处理_高考化学实验中:那些不常见的【特殊仪器】与装置,难得的资料...
- ado.net 操作mysql_ADO.NET操作数据库(一)
- bzoj 3396: [Usaco2009 Jan]Total flow 水流(最大流)
- Django自定义分页、bottle、Flask
- 微服务系统和分布式系统的区别
- 台达JAVA_wplsoft下载(台达plc编程软件)
- MATLAB/Simulink双馈风机调频模型,风电调频模型,基于三机九节点搭建含双馈风机的电力系统模型
- 《软件工程》-软件质量管理
- 磊科linux无线网卡驱动安装步骤,磊科nw360无线网卡安装教程(附磊科nw360驱动下载)...
- F4驱动WM8978“前奏
- 线性回归方程b保留几位小数_简单线性回归分析(python)
- 惠普打印机如何取消任务
- android清理空间,安卓手机如何清理系统空间
- 如何修改CryEngine5.5着色器
- Temporal Pyramid Network for Action Recognition(CVPR2020)
热门文章
- access 子窗体 鼠标滚动不工作_Python GUI项目实战(五)明细信息窗体的完善
- 送什么给女朋友最致命?
- 大牛逝世 = 新人上位 = 科学进步?新研究表明确实如此
- 数学特级教师:数学除了做题目,我还必须让他们看这些!
- 机器学习都需要有哪些数学知识?
- 荐书 | 攻克世纪难题,拒绝领取菲尔兹奖的孤独数学天才的一生
- 大数据财税与python应用_大数据跟python
- python 空指针_Python&CType空指针错误
- php curl实现get请求,PHP中使用curl实现Get和Post请求 | 严佳冬
- python核心数据类型_Python核心数据类型——列表