首页 > 编程语言 >2024牛客寒假算法基础集训营1 K 牛镇公务员考试 题解

2024牛客寒假算法基础集训营1 K 牛镇公务员考试 题解

时间:2024-02-04 19:44:06浏览次数:30  
标签:int 题解 2024 maxn 答案 牛镇 集训营 节点

Question

2024牛客寒假算法基础集训营1 K 牛镇公务员考试

给出一张试卷有 \(n\) 道单选题,每道题用一个整数 \(a_i\) 和一个长度为 \(5\) 的字符串 \(s_i\) 表示,其中第 \(i\) 道题的题面为:

第 \(a_i\) 道题的答案是 ()

A. \(s_1\)

B. \(s_2\)

C. \(s_3\)

D. \(s_4\)

E. \(s_5\)

问:正确完成全部 \(n\) 道题的答案有多少种

Solution

我们发现第 \(i\) 个问题的答案制约了第 \(a_i\) 个问题的答案,那么显然第 \(a_i\) 个问题的答案也制约着第 \(i\) 个问题的答案

我们利用 \(i\rightarrow a_i\) 的这种关系建边,得到了一个基环树森林,对于每一棵基环树:

  • 非环上的节点是没有意义的,因为我们可以从非环链上连接环的那个节点的答案把这条链的答案反推出来
  • 对于环上的节点,我们随便令一个节点为起点,暴力枚举 \(A\sim E\),转一圈下来看看是否满足,那么每棵基环树的方案树就是 \(0\sim 5\)

最后的答案就是所有树的答案相乘

Code

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
typedef long long LL;
struct node{int x;char s[10];}a[maxn];
const LL TT = 998244353;
vector<int> G[maxn];
int du[maxn],n;
LL ans = 1;

void topo(){
    queue<int> q;
    for(int i=1;i<=n;i++)
        if(!du[i]) q.push(i);
    while(!q.empty()){
        int x = q.front(); q.pop();
        du[a[x].x]--;
        if(!du[a[x].x]) q.push(a[x].x);
    }
}

int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d%*c%s",&a[i].x,a[i].s);
        du[a[i].x]++;
    }
    topo();
    for(int i=1;i<=n;i++) if(du[i]){
        LL now_ans = 0;
        for(int k=0;k<5;k++){
            int p = a[i].x, op = a[i].s[k]-'A';
            while(p != i){
                op = a[p].s[op]-'A', p = a[p].x;
            }
            now_ans += (op == k);
        }
        ans = (ans * now_ans) % TT;
        du[i] = 0;
        for(int p=a[i].x;p!=i;p=a[p].x)
            du[p] = 0;
    }
    printf("%lld\n",ans);
    return 0;
}

标签:int,题解,2024,maxn,答案,牛镇,集训营,节点
From: https://www.cnblogs.com/martian148/p/18006894

相关文章

  • 杂记 2024-02-04 农历腊月25,立春
    1.2024-02-04立春。立春,为二十四节气之首。立,是“开始”之意;春,代表着温暖、生长。时至立春,在我国的北回归线(黄赤交角)及其以南一带,可明显感觉到早春的气息。北回归线是一条重要纬线,其自西向东穿过中国云南、广西、广东、福建(海域)、台湾五省区。《立春》宋·白玉蟾东风吹散梅梢雪......
  • [CF383E] Vowels 题解
    [CF383E]Vowels题解思路要求的这个东西一看就没什么性质,考虑枚举所有元音子集。如果我们能够求出\(f_s\)表示\(s\)集合作为元音时有多少个单词至少包含一个元音。难求,正难则反,考虑\(f_s\)表示\(s\)集合作为元音时有多少个单词全都由非元音字母组成,由于对称性,我们只......
  • SNOI 2024 幽默记
    先贴个我之前写的幽默NOIP游记吧!T1开考看了一眼,随便想了一会就有思路了。用stl搞了一下,大概开考后20min过掉所有大样例。然后就对着剩下三道题沉默了一整场考试。感觉T3是个数据结构,长得比较眉清目秀,就先去看了T3,但是越看越迷惑,没什么思路,就扔了去想T2。理解了一......
  • 2024年生成式AI芯片市场规模将达500亿美元
    1月24日,德勤发布《2024科技、传媒和电信行业预测》中文版报告,2024年是科技、传媒和电信行业关键的一年,不少科技公司正利用生成式AI升级软件和服务,预计今年全球生成式人工智能芯片销售额可能达到500亿美元以上。 2024年将有许多软件公司在产品中嵌入生成式AI,有些企业的产品将......
  • Luogu「Daily OI Round 3」Simple 题解
    #include<iostream>#include<cstdio>#include<queue>#include<algorithm>#include<cstring>#include<string>#include<string.h>#include<vector>#defineintlonglong#definerep(a,b,c)for(autoa=b;a......
  • Hello 2024C. Grouping Increases(贪心)
    我们只需要记录每个数结尾的数是多少(有点最长上升子序列的味道)这种子序列的题目很多都是这样的,因为不需要连续很多时候我们只记录最后一个元素是多少。\(记s为较大子序列结尾当前的数,t为较小子序列结尾的数,下面分类讨论\)\(当a[i]<=t<s时\)我们将a[i]既可以放进t所在的子序列,......
  • 2024年:用OKR管理你的生活
    在科技高速发展的时代,越来越多的企业和团队开始采用OKR(ObjectivesandKeyResults)管理方法来设定目标并跟踪进度。你是否想过,将OKR理念引入个人生活,以更有效地实现人生目标?本文将探讨如何在2024年运用OKR管理你的人生。一、明确人生目标首先,要明确自己的人生目标。这需要你思考......
  • [ARC114D] Moving Pieces on Line 题解
    题目链接点击打开链接题目解法有点牛的题,前面的转化感觉很妙首先一个显然的性质是:一个棋子不可能走回头路,不然前面的路就白走了下面是最妙的一步:我们令\(st_i\)为\(i-1\toi\)和\(i\toi+1\)的颜色是否相同,那么问题可以转化成:选择\(\{p_i\}\),一开始所有点颜色为\(0\)......
  • (2024.1.29-2024.2.4)C语言学习小结
    本周主要围绕《HeadfirstC》这本书展开C语言学习,按照计划,我学习了的内容。基本内容这周学习的内容像是上学期最后的内容的扩展、延申、深入,高级函数那块有点绕但慢慢啃下来还可以接受。以下是思维导图:遇到的问题与解决、经验教训等问题0(上周的问题这周才解决):看到书里......
  • 20240204打卡
    当我发这篇博客时,代表我的项目已经做完了,接下来几天我将会对AndroidStudio项目做一些总结当涉及到AndroidStudio和Kotlin的相关知识时,有很多方面可以讨论。以下是一些基本的概念和代码示例:  1.Kotlin基础 变量和常量varmyVariable:Int=10//可变变量valmyConstant......