当前位置:网站首页>D - Draw Your Cards(模拟)
D - Draw Your Cards(模拟)
2022-08-01 13:22:00 【Harris-H】
D - Draw Your Cards(模拟)
用一个set维护当前所有堆对应的堆顶数。
每次lowerbound找,如果有则用链表插到表头。开一个数组记录cnt。
如果cnt=k,则遍历更新答案,然后从set里删掉堆顶。
每个元素最多遍历一次删除一次。
时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn)
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int n,k,ans[N],cnt[N],to[N];
set<int>s;
int main()
{
scanf("%d%d",&n,&k);
memset(ans,-1,sizeof(ans));
for(int i=1,x;i<=n;i++)
{
scanf("%d",&x);
auto it=s.lower_bound(x);
if(it==s.end())s.insert(x),cnt[x]=1;
else cnt[x]=cnt[*it]+1,to[x]=*it,s.erase(it),s.insert(x);
if(cnt[x]==k)
{
for(int j=x;j;j=to[j])ans[j]=i;
s.erase(s.find(x));
}
}
for(int i=1;i<=n;i++)printf("%d\n",ans[i]);
return 0;
}
边栏推荐
猜你喜欢
随机推荐
Efficiency tools to let programmers get off work earlier
Why does the maximum plus one equal the minimum
PAT1166 Summit(25)
软件测试之发现和解决bug
10年稳定性保障经验总结,故障复盘要回答哪三大关键问题?|TakinTalks大咖分享
LeetCode_位运算_简单_405.数字转换为十六进制数
tensorflow2.0手写数字识别(tensorflow手写体识别)
程序员的浪漫七夕
制售假劣农资、非法占用耕地……公安部公布十起危害粮食生产安全犯罪典型案例
PAT 1163 Dijkstra Sequence(30)
关于Request复用的那点破事儿。研究明白了,给你汇报一下。
如何将第三方服务中心注册集成到 Istio ?
软件设计师考点汇总(室内设计师个人总结)
How to Integrate Your Service Registry with Istio?
论文详读《基于改进 LeNet-5 模型的手写体中文识别》,未完待补充
Js手写函数之new的模拟实现
Multi-threaded cases - blocking queue
Istio投入生产的障碍以及如何解决这些问题
Do wildcard SSL certificates not support multiple domains?
什么是元编程








