主要是判断该序列中有无元素个数为奇数的轮换序列,可以用并查集来找,这里另外写一种方法

ACcode

// #pragma GCC optimize (2)
// #pragma G++ optimize (2)
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
#include <unordered_map>
#include <map>
#include <bitset>
#include <set>
#define endl '\n'
#define int long long
const double esp = 1e-5;
using namespace std;
void TLE() { ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); }
const int INF=2e9;
const int N=1e5+10;
const int mod=998244353;
int a[N];
bool st[N];
int qmi(int a,int b)
{int res=1%mod;while(b){if(b&1)res=res*a%mod;a=a*1LL*a%mod;b>>=1;}return res;
}
void solve()
{int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];int ans=0;for(int i=1;i<=n;i++){if(st[i])continue;int u=i,res=1;while(i!=a[u]){res++;u=a[u];st[u]=true;}if(res&1){cout<<0<<endl;return;}else ans++;}cout<<qmi(2,ans)<<endl;
}
signed main()
{TLE();int T;T = 1;//int T;cin>>T;while (T--)solve();return 0;
}

ACcode(并查集)

// #pragma GCC optimize (2)
// #pragma G++ optimize (2)
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
#include <unordered_map>
#include <map>
#include <bitset>
#include <set>
#define endl '\n'
#define int long long
#define lowbit(x) x &(-x)
#define rep(i, a, n) for (int i = a; i <= n; i++)
const double esp = 1e-5;
using namespace std;
void TLE() { ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); }
const int INF = 2e9;
const int N = 1e5 + 10;
const int mod= 998244353;
typedef pair<int, int> PII;
int a[N];int p[N];int sz[N];
int qmi(int a,int b)
{int res=1%mod;while(b){if(b&1)res=res*a%mod;a=a*1LL*a%mod;b>>=1;}return res;
}
int find(int x)
{if (x != p[x])p[x] = find(p[x]);return p[x];
}
void merge(int a, int b)
{a = find(a), b = find(b);if (a != b){p[a] = p[b];sz[b] += sz[a];}
}
void solve()
{int n;cin >> n;for (int i = 1; i <= n; i++){p[i] = i;sz[i] = 1;}for (int i = 1; i <= n; i++){cin >> a[i];merge(i, a[i]);}int res = 0;for (int i = 1; i <= n; i++){if (p[i] == i){if (sz[i] % 2 == 1){cout << "0" << endl;return;}elseres++;}}cout << qmi(2,res) << endl;
}
signed main()
{TLE();int T;T = 1;// int T;cin>>T;while (T--)solve();return 0;
}

E - Ginger的染色(并查集 + 轮换序列)相关推荐

  1. AT2675 [AGC018F] Two Trees (构造+二分图染色+并查集)

    description 戳我看题目 solution 正解说是欧拉回路,但是于私而言非常难懂,如果有兴趣可以看香香mm的博客 定义一个点如果有偶数个儿子,就为奇点:如果有奇数个儿子,就为偶点 对于一个 ...

  2. BZOJ 2303: [Apio2011]方格染色 [并查集 数学!]

    题意: $n*m:n,m \le 10^6$的网格,每个$2 \times 2$的方格必须有1个或3个涂成红色,其余涂成蓝色 有一些方格已经有颜色 求方案数 太神了!!!花我三节课 首先想了一下只有两 ...

  3. 4075. 染色 并查集的运用 并查集运用的小细节

    题目 题解思路 这题思路还是比较明显的,将颜色需要相同的气球全部并查起来,在搜索集合中颜色最多的颜色,将其他的也染成这个.这样贪心就能保证使用的染色最少. 时间复杂度为On,看起来这样复杂很高,实际上 ...

  4. CF1444C Team-Building(可持久化并查集)(二分图)

    解析 容易想到补集思想,寻找那些组之间不能形成二分图 二分图一般的两个判定方法: 染色 并查集 这里考虑并查集(看题解似乎染色也可做) 先把所有组内的边合并并查集 如果某个组自己内部就有奇环,显然不能 ...

  5. BZOJ 2303 方格染色(带权并查集)

    要使得每个2*2的矩形有奇数个红色,如果我们把红色记为1,蓝色记为0,那么我们得到了这2*2的矩形里的数字异或和为1. 对于每个方格则有a(i,j)^a(i-1,j)^a(i,j-1)^a(i-1,j ...

  6. 专题突破三之并查集Ⅱ——星球大战,In Touch,方格染色,Junk-Mail Filter,关押罪犯,Silver Woods,Must Be Rectangular!

    文章目录 [JSOI2008]星球大战 In Touch 方格染色 Junk-Mail Filter [NOIP2010 提高组] 关押罪犯 Silver Woods Must Be Rectangu ...

  7. cdoj 1328 卿学姐与诡异村庄 Label:并查集 || 二分图染色

    卿学姐与诡异村庄 Time Limit: 4500/1500MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit  ...

  8. acdream 1725 哗啦啦的小彭玉染色问题 离散化并查集

    哗啦啦的小彭玉染色问题 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acdream.info/problem?pid=1725 Descri ...

  9. 4075 染色(并查集)

    1. 问题描述: 有 n 个气球(编号 1∼n),其中第 i 个气球的颜色为 ci.气球一共有 k 种颜色(编号 1∼k),每个气球的颜色 ci 都满足 1 ≤ ci ≤ k.接下来要进行 m 次询问 ...

最新文章

  1. SAP WM初阶之IM层面货物移动后WM层面自动完成TO创建和确认
  2. USB和串口(COM)的区别,以及相互转换
  3. android 退出app代码_uniapp退出APP应用(IOS+安卓)
  4. SpringBoot中使用yml配置文件以及配置类实现文件上传下载路径的修改
  5. android menu item属性,menuitem - Android 4.3菜单项showAsAction =“always”被忽略
  6. 织梦图集php,织梦图集在首页、列表页、内容页调用图集所有图片及注释的方法...
  7. 如何解决SAP Structure CMST_SI_ENQ的DDIC_TYPE_INCONSISTENCY问题
  8. Unity3D 4.x 使用Mecanim实现动画控制
  9. Jquery中用offset().top和offsetTop的比较
  10. mysql重复添加计数_从MySQL中的单个列获取重复值的计数?
  11. kali下搭建WiFi钓鱼热点
  12. unix域套接字UDP网络编程
  13. HZOI20190903模拟36 字符,蛋糕,游戏
  14. java生成pdf文件带页码_java(itext) 简单PDF表格生成工具(带页码)
  15. 商品详情页html手机,商品详情页.html
  16. 论巴西世界杯带给移动互联网产品的契机!
  17. 农业银行查询开户支行的方法
  18. Git rm和rm --cached区别
  19. pytorch 中的torch.bmm
  20. bug记录-socket hang up

热门文章

  1. 不要迷恋哥,哥只是个传说……
  2. vue elementui table组件内容换行
  3. 【Qt入门第36篇】 网络(六)UDP
  4. 弘辽科技:适合淘宝新手的三种基础引流技巧
  5. 西语中的幸运怎么表达哒
  6. 本地破解WINDOWS XP 系统的登陆密码
  7. C++类与对象_简单练习题
  8. 【数理知识】极坐标与笛卡尔坐标转换
  9. mysql 逗号分割字符串当做 in 的条件
  10. 简化生活之让AI以指定格式输出