首页 > 其他分享 >abc247_f Cards 题解

abc247_f Cards 题解

时间:2023-04-12 23:45:16浏览次数:48  
标签:dots 选边 le 卡片 int 题解 abc247 Cards dp

Cards

题意

有 \(N\) 张卡片,每张卡片上都写有两个数字,第 \(i\) 张卡片上的数字分别为 \(P_i, Q_i\)。

同时,\(P = (P_1, P_2, \dots, P_N)\) 和 \(Q = (Q_1, Q_2, \dots, Q_N)\) 都是 \((1, 2, \dots, N)\) 的全排列。

我们需要在 \(N\) 张卡片中选出一些卡片,并且 \(1, 2, \dots, N\) 都出现在至少一张选出的卡片上。

请求出选卡片的方法数,答案对 \(998244353\) 取模

数据范围

  • \(1 \le N \le 2 \times 10^5\)
  • \(1 \le P_i, Q_i \le N\),\(P\) 和 \(Q\) 是 \((1, 2, \dots, N)\) 的全排列。

思路

这题需要一定的联想能力。

首先,这些卡牌可以看作构成了一个图,每次将 \(P_i\) 和 \(Q_i\) 连边,可以发现必然会出现环,每个环的方案数就是选择环上的某些边使得环分成的每个连通块的大小都不小于 \(2\) 的方案数。

环与环之间都是独立的,所以要用乘法原理。

问题是,怎样求出每个环的方案数呢?

首先,我们有一个小小的环。

然后,我们先来整一个 dp

  • 环的大小为 \(i\),令大小为 \(i\) 的环的方案数为 \(f_i\)。
    • \(dp_{i,0}\),边 \(1\) 和边 \(i\) 都不选,不合法。
    • \(dp_{i,1}\),选边 \(i\) 而不选边 \(1\),\(dp_{i,1}=dp_{i-1,1}+dp_{i-2,1}\)。
    • \(dp_{i,2}\),选边 \(1\) 而不选边 \(i\),\(dp_{i,2}=dp_{i-1,3}\)
    • \(dp_{i,3}\),边 \(1\) 和 \(i\) 都选。\(dp_{i,3}=dp_{i-1,3}+dp_{i-2,3}\)
  • 那么,\(\color{red}{f_i=dp_{i,1}+dp_{i,2}+dp_{i,3}=dp_{i-1,1}+dp_{i-2,1}+dp_{i-1,3}+dp_{i-1,3}+dp_{i-2,3}=(dp_{i-1,1}+dp_{i-1,3}+dp_{i-1,2})+(dp_{i-2,1}+dp_{i-2,3}+dp_{i-3,3})=f_{i-1}+(dp_{i-2,1}+dp_{i-2,3}+dp_{i-2,2})=f_{i-1}+f_{i-2}}\)(备注:\(dp_{i-2,3}=dp_{i-1,2},dp_{i-3,3}=dp_{i-2,2}\))
  • 特别的,通过手推我们发现 \(f_1=1,f_2=3\)。

\(f_i\) 递推一下即可。

复杂度

  • 时间:\(O(n)\)
  • 空间:\(O(n)\)

Code

点击查看代码
#include <iostream>

using namespace std;

const int N = 2e5 + 10, mod = 998244353;

int n, a[N], b[N], f[N], dp[N];
long long ans = 1;

int dfs (int x) { // 找环
  if (f[x]) { // 找到重复点了
    return 0;
  }
  f[x] = 1;
  return dfs(b[x]) + 1;
}

int main () {
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
  }
  for (int i = 1; i <= n; i++) {
    cin >> b[a[i]];
  }
  dp[1] = 1, dp[2] = 3; // f数组的递推
  for (int i = 3; i <= n; i++) {
    dp[i] = (dp[i - 1] + dp[i - 2]) % mod; // 记得取模
  }
  for (int i = 1; i <= n; i++) {
    if (!f[i]) {
      ans = ans * dp[dfs(i)] % mod; // 乘法原理
    }
  }
  cout << ans;
  return 0;
}

标签:dots,选边,le,卡片,int,题解,abc247,Cards,dp
From: https://www.cnblogs.com/lw0-blog/p/17311509.html

相关文章

  • 2020计蒜之道预赛第二场-群星 题解
    题目描述蒜头君是一个P社玩家,每天从计蒜客下班回家之后的第一件事情就是打开《群星》,开始继续他的第四天灾之旅。这次他把注意力集中到了银河市场里面。银河市场里面商品的价格都通过以下公式计算:$$P=B*basePrice/S$$$$price=\displaystyle\frac{buy}{sell}*base......
  • 问题解决
    遇到的问题1.解决方法:将@RequestParam改为@PathVariable:@RequestParam接收的是?参数,@PathVariable接收直接参数2.Stream方法报红解决办法:jdk版本改为8版本及以上3.解决方法:导入以下依赖<plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifac......
  • Win7资源管理器自动关闭或者重启问题解决办法
    方法1:故障现象:提示win7资源管理器已停止工作解决办法:1.打开任务管理器,点“文件”,再点”新建任务”,在”打开”后面打上explorer.exe确定2.找到WinRAR,点”选项”,”设置”,”综合”,“把WinRAR整合到资源管理器中”的勾消除就行了方法2故障现象:Windows7出现资源管理器自......
  • 文件系统变成RAW问题解决
    问题描述对于打开分区提示需要格式化的情况,右击属性查看时,文件系统变成了RAW了,没有关系很好恢复,千万不要格式化。问题分析可以看到该分区说明分区表没有问题,这是由于DBR扇区(即启动扇区)损坏造成的。以上听不懂分析没有关系,对你的恢复影响不大。有两种方法恢复:1、用软件自动进......
  • YBTOJ 5.4例3 最长距离 题解
    挂大分!!!!!!1.一定要看清提干有没有多测2.多测不清空爆零两行泪3.同时线性更新最大值和次大值时记得最大值更新要同时把旧的最大值给次大值题解首先可以想到一个最暴力的暴力:对于每一个点暴力枚举所有的点跑LCA复杂度\(O(n^2logn)\)显然会炸然后就有一个优化一点的暴力:......
  • CF698F Coprime Permutation 题解
    题意给定一个未填满的数组\(p\),求有多少种\(1\simn\)的排列\(p\)满足对于任意\(i<j\),都有\([\gcd(i,j)=1]=[\gcd(p_i,p_j)=1]\),答案对\(10^9+7\)取模。题解部分参考这篇题解(感觉这篇题解应该是目前为止最详细的吧)。记\(P\)为\([1,n]\)中所有素数与\(1\)构成......
  • Codeforces Round 864 (Div. 2) 题解
    A.LiHuaandMaze题目保证了两个点的哈密顿距离至少为\(2\),所以他们不会相邻。只要有点在角上答案就是\(2\),在边上但不在角上就是\(3\),否则就是\(4\)。#include<bits/stdc++.h>#include<ext/pb_ds/assoc_container.hpp>#include<ext/pb_ds/tree_policy.hpp>#includ......
  • 「题解」ABC296Ex Unite
    考虑一行一行往下dp,一个状态需要记录每个格子是否是黑色,对于黑色还有记录其并查集。爆搜跑一下本质不同状态数不是很多,dp就行了。\(m=7\)的时候状态数只有324.#include<cstdio>#include<vector>#include<queue>#include<cstring>#include<iostream>#include<algorithm>......
  • CF1525F 题解
    题意有一个\(n\)个点的DAG,现在有\(k\)波进攻,第\(i\)波有\(i\)个人,它们每个人会选择一条DAG上的路径,并占领这个路径上的所有点,路径之间是不能相交的。第\(i\)波进攻前可以做一些准备,可以花\(1\)秒关闭某个点的所有入边,或关闭某个点的所有出边。第\(i\)波进攻有个......
  • COMP326问题解答
    COMP326Assignment2(15%ofthefinalmark)Due18thApril2023Pleasesubmityoursolutionselectronically(inPDFformat)onCanvasPleasebeawareoftheUniversityguidelinesonplagiarismandcollusion.Themarksforlatesubmissionswillbeaffectedin......