首页 > 其他分享 >AtCoder Beginner Contest 367 题解(E~G)

AtCoder Beginner Contest 367 题解(E~G)

时间:2024-08-18 09:53:49浏览次数:10  
标签:AtCoder hash Contest 题解 基环树 哈希 367

E

转换关系看作有向边,\(n\) 点 \(n\) 边构成基环树森林,基环树森林k后继唯一,记 f[i][j] 为点 \(i\) 的 \(2^j\) 级祖先,随便倍增。

F

一眼哈希,不知道有没有不哈希的做法。

在这里我们不关心元素的顺序,只关心元素是否出现以及出现几次,考虑一个 \(n\) 位 \(n+1\) 进制数,\(a_i\) 出现一次就在 \(a_i\) 位上 \(+1\),最多加 \(n\) 次不会出现进位,最终得到的数就反映了元素的出现次数,并且是唯一的。在此基础上就和字符串哈希类似了,选两个素数 \(\ge n+1\) 当基数做双哈希就行了。

收集了一些 HL 群里的做法:

1.对原序列随机赋权,hash值是区间权值和(sum hash)或区间权值异或和(xor hash),还有人找到了原题(超级加强版)。

标签:AtCoder,hash,Contest,题解,基环树,哈希,367
From: https://www.cnblogs.com/xm-blog/p/18365318

相关文章

  • Atcoder Beginner Contest 367
    A.ShoutEveryday\(\text{Diff}43\)给你\(24\)小时制下的\(A,B,C\)三个时刻,问\(A\)是否在\([B,C]\)范围内考虑到先将\(B,C\)加上一个\(24\),假如\(C\)比\(B\)小,将\(C\)再加上一个\(24\),这样可以保证严格的\(A\ltB,C\),此时直接判断是否存在一个\(k\),使得......
  • [题解]CF76B Mice
    思路比较简单的贪心。对于可以选择两个奶酪的老鼠,我们先将它们忽略掉。现在所有老鼠所吃的奶酪是唯一确定的。考虑加上可以选择两个奶酪的老鼠如何选择。显然,如果它可以选择一个没有任何老鼠吃过的奶酪,它必然这样选择。其次,如果它可以选择的奶酪被吃掉的时间\(t\)与它到达奶......
  • Atcoder Beginner Contest 367 C-F
    AtcoderBeginnerContest367C-FC-EnumerateSequences题意按字典序升序输出所有满足下列条件的序列数量。长度为\(N\)。第\(i\)个元素介于\(1\)与\(R_i\)之间。所有元素之和是\(K\)的倍数。思路搜索即可。搜索时记录当前选了哪些数和元素之和,最后搜......
  • ABC 367 题解
    AtCoderBeginnerContest367题解:\(Problem\hspace{2mm}A-Shout\hspace{2mm}Everyday\)题目链接opinion:~~code:#include<bits/stdc++.h>#definelllonglong#definepiipair<int,int>usingnamespacestd;lla,b,c;intmain(){ i......
  • abc364 题解
    第一次场切A~F,写个题解纪念一下。比赛链接:https://atcoder.jp/contests/abc367A-ShoutEveryday题意:高桥每天\(B\)时刻睡觉,\(C\)时刻起床(\(B,C\)时刻也在睡觉),请问高桥\(A\)时刻是否没睡。思路:对于\(B<=C\)和\(B>C\)分别处理即可。代码:https://atcoder.jp/con......
  • AtCoder Beginner Contest 367
    A-ShoutEveryday(abc367A)题目大意高桥从\(A\)睡到\(B\),如果在\(C\)时,他醒着,他则会对章鱼烧发癫,问他今天是否发癫。解题思路由于只有\(24\)小时,直接枚举\(A\toB\),看看是否遍历到\(C\)即可。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=......
  • AtCoder Beginner Contest 367 补题记录(A~F)
    很Easy一场,共计用时\(34\)minAconstintN=1000100;signedmain(){strings;cin>>s;intcnt=0;intn=s.size();if(s[n-1]=='0'&&s[n-2]=='0'&&s[n-3]=='0'){s.pop_back();s.p......
  • AtCoder Beginner Contest 367
    喜欢我\(\log_210^{18}=18\)吗?A#include<bits/stdc++.h>#defineebemplace_back#defineepemplaceusingnamespacestd;usingll=longlong;inta,b,c;intmain(){ cin.tie(0)->sync_with_stdio(0); cin>>a>>b>>......
  • 题解:AtCoder Beginner Contest 367
    总体情况A题意在AtCoder王国,居民们每天都要在\(A\)点大声喊出他们对章鱼烧的热爱。住在AtCoder王国的高桥每天\(B\)点睡觉,\(C\)点起床(\(24\)小时钟)。他醒着的时候可以喊出对章鱼烧的爱,但睡着的时候却不能。判断他是否每天都能喊出对章鱼烧的爱。这里,一天有\(24......
  • P10886 【MX-S3-T2】「FeOI Round 1」Journey 题解
    我们肯定是要先求出来一个位置被加的次数,然后和权值乘一下就行。对于一个位置\(i\),右端点\(b\)肯定是随便选,一共\(n-i+1\)种情况。再是对于每一种步长\(c\),左端点\(a\)都有\(\left\lceil\dfrac{i}{c}\right\rceil\)种取值,暴力计算,时间复杂度\(O(n^2)\)。(提交记录)考虑......