首页 > 其他分享 >CodeForces-1798#B 题解

CodeForces-1798#B 题解

时间:2023-08-14 22:11:55浏览次数:59  
标签:1798 last int 题解 CodeForces cin 彩票 include day

正文

开个数组 \(last_k\) 统计 \(a_{i,j}\) 最后买彩票的时间,再开一排桶 \(day_t\) 记录该天最后买彩票的有哪些人(即:有 \(p\) 满足 \(last_p=t\) 的集合)。

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

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

因为懒,我将 \(last_k\) 用 unordered_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: 发布

标签:1798,last,int,题解,CodeForces,cin,彩票,include,day
From: https://www.cnblogs.com/wanguan/p/17629910.html

相关文章

  • 题解 CF379D New Year Letter
    思路提供一种比较容易想到的做法。拿到题看数据范围发现都很小,所以放心大胆地暴力。容易发现\(s_i\)中AC的个数等于\(s_{i-2}\)中AC的个数加\(s_{i-1}\)中AC的个数再加上两者拼接处可能有的一个AC。所以\(s_1\)和\(s_2\)从第二个字符到倒数第二个字符这之间......
  • P4412 题解
    P4412题解传送门更好的阅读体验简化题意:一张无向图,给定一棵生成树,求最小的修改边权的代价使得这棵生成树是最小生成树,代价定义为修改前后一条边的边权变化量的绝对值。思路首先,发现让这棵树成为最小生成树不好直接处理,但是判定是否为最小生成树却相对更容易。判定的思路......
  • CF1845D Rating System 题解
    题面给定一个长度为\(n\)数列\(a\),保证每项都不为\(0\)。初始时\(x=0\),然后对于\(1\lei\len\),按顺序进行如下操作:如果\(x\gek\),则\(x\rightarrow\max(k,x+a_i)\),否则\(x\rightarrowx+a_i\)。你需要求出\(k\),使得\(x\)的值尽量大。题解如果我们不考虑\(k......
  • Ynoi2001 冷たい部屋、一人 题解
    \(\text{link}\),这题太毒瘤啦!难写难调还略微卡常。谁爱卡常谁卡吧。反正我先贺为敬了。——引用自洛谷别人的提交记录本人写了两天(两个\(case\)各一天),调崩溃了才调出来,太毒瘤了!看到颜色相同发现不弱于\(O(n\sqrtn)\),一眼根号分治,设阈值为\(B\)。case1对于颜色出现次......
  • 2023.08.12 codeforces round 892 div2
    年轻人的第三场div2(已完成:ABCDE)rank:1265solved:4ratingchange:+276newrating:1323A.UnitedWeStand题意:给定一个数列a,问是否能分成两个非空的数列b和c,使得c中任意一个数不是b中任意一个数的因子;若x是y的因子则有x<=y;因此不妨将数列的最大值放入c,把剩下的数放入b;注意数列中......
  • [ARC126C] Maximize GCD 题解
    题意给定一个序列\(A\),每次操作可以使\(A_i+1\)(\(i\in\left[1,n\right]\),\(K\)次操作的\(i\)可以不同),最多可以做\(K\)次。问\(\gcd{A_1,A_2,...,A_n}\)的最大值。题解首先,如果\(K\)可以把当前序列中所有的数都加到\(A_{\max}\),那就全部加到\(A_{\max}\),在......
  • [ABC215D] Coprime 2 题解
    题意给定数列\(A_N\)和一个正整数\(M\),求出所有的\(1\lek\leM\)满足\(\foralli\in\left[1,N\right],\gcd(k,A_i)=1\)。题解本题存在线性复杂度算法。记\(\operatorname{lpf}(n)=[1<n]\min\{p:p\midn\}+[1=n]\),即\(n\)的最小质因数。特别地,\(n......
  • [ARC126D] Pure Straight 题解
    题意给定一个有\(N\)个正整数的序列\(A=(A_1,A_2,\cdots,A_N)\),且\(A_i\in\left[1,K\right]\)。你可以对这个序列做如下操作若干次。交换两个相邻的元素,也就是选出\(i\)和\(j\)满足\(\lverti-j\rvert=1\)并交换\(A_i\)和\(A_j\)。找到最小的操作数使\(......
  • CF793F Julia the snail 题解
    题意有一个长为\(n\)的杆,上面有\(m\)条绳子,每条绳子可以让蜗牛从\(l_i\)爬到\(r_i\)(中途不能离开),保证\(r_i\)各不相同。蜗牛也可以自然下落。现在有\(q\)次询问,询问\(x\)出发,途中高度不能低于\(x\)或高于\(y\),问最高能爬到的位置。\(n,m,q\leq10^5\)。题解......
  • 【免费分享 图书】《阿里云天池大赛赛题解析——机器学习篇》-PDF电子书-百度云
    找这本书的资源简直要把我找吐了,各种网站压缩包一下下来就开始各种套路(比如要你充钱)为了防止还有我这样的受害者,这就把找到的PDF给大家分享一下。链接在文章最后如果这篇文章能够帮到您,麻烦帮我点个赞,并关注一下我,我有更多动力,持续分享更多有用图书给您!非常感谢,不胜感激!(点关......