一叹世间情太苦,为爱无奈泪双流。|

IOIAK_wanguan

园龄:2年5个月粉丝:2关注:0

2023-08-14 22:02阅读: 27评论: 0推荐: 0

CodeForces-1798#B 题解

正文

开个数组 lastk 统计 ai,j 最后买彩票的时间,再开一排桶 dayt 记录该天最后买彩票的有哪些人(即:有 p 满足 lastp=t 的集合)。

lastk 放入 dayt 中,判断 dayt 中是否存在空桶,若有则无解(因为没有人在当天是最后买彩票的)。

因为本题是 SPJ,对于每个桶 dayt,输出其中任意一个元素都是正确的,因此我们开桶的时候完全没必要用 vector,每个桶只需要存一个元素,用 C++ 内置数组完全够用。

因为懒,我将 lastkunordered_map 取代。

#include<iostream>
#include<cstring>
#include<unordered_map>
using namespace std;
const int N=5e4+7;
int t,m,n,a,day[N];
unordered_map<int,int> last;
int main(){
ios::sync_with_stdio(false),cin.tie(0);
cin>>t;
while(t--){
last.clear();
memset(day,0,sizeof day);
cin>>m;
for(int i=1;i<=m;i++){
cin>>n;
for(int j=1;j<=n;j++)
cin>>a,last[a]=i;
}
int M=m;//统计还有多少桶是空的
for(auto &i: last){//将last放入桶中
if(!day[i.second]) M--;
day[i.second]=i.first;
}
if(M) cout<<-1;
else for(int i=1;i<=m;i++) cout<<day[i]<<' ';
cout<<'\n';
}
}

AC 记录

后附

日志

v1.0 on 2023.08.14: 发布

本文作者:wanguan

本文链接:https://www.cnblogs.com/wanguan/p/17629910.html

版权声明:本作品采用 BY-NC-SA 4.0 许可协议进行许可。

posted @   IOIAK_wanguan  阅读(27)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起