E - Ginger的染色(并查集 + 轮换序列)
主要是判断该序列中有无元素个数为奇数的轮换序列,可以用并查集来找,这里另外写一种方法
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的染色(并查集 + 轮换序列)相关推荐
- AT2675 [AGC018F] Two Trees (构造+二分图染色+并查集)
description 戳我看题目 solution 正解说是欧拉回路,但是于私而言非常难懂,如果有兴趣可以看香香mm的博客 定义一个点如果有偶数个儿子,就为奇点:如果有奇数个儿子,就为偶点 对于一个 ...
- BZOJ 2303: [Apio2011]方格染色 [并查集 数学!]
题意: $n*m:n,m \le 10^6$的网格,每个$2 \times 2$的方格必须有1个或3个涂成红色,其余涂成蓝色 有一些方格已经有颜色 求方案数 太神了!!!花我三节课 首先想了一下只有两 ...
- 4075. 染色 并查集的运用 并查集运用的小细节
题目 题解思路 这题思路还是比较明显的,将颜色需要相同的气球全部并查起来,在搜索集合中颜色最多的颜色,将其他的也染成这个.这样贪心就能保证使用的染色最少. 时间复杂度为On,看起来这样复杂很高,实际上 ...
- CF1444C Team-Building(可持久化并查集)(二分图)
解析 容易想到补集思想,寻找那些组之间不能形成二分图 二分图一般的两个判定方法: 染色 并查集 这里考虑并查集(看题解似乎染色也可做) 先把所有组内的边合并并查集 如果某个组自己内部就有奇环,显然不能 ...
- BZOJ 2303 方格染色(带权并查集)
要使得每个2*2的矩形有奇数个红色,如果我们把红色记为1,蓝色记为0,那么我们得到了这2*2的矩形里的数字异或和为1. 对于每个方格则有a(i,j)^a(i-1,j)^a(i,j-1)^a(i-1,j ...
- 专题突破三之并查集Ⅱ——星球大战,In Touch,方格染色,Junk-Mail Filter,关押罪犯,Silver Woods,Must Be Rectangular!
文章目录 [JSOI2008]星球大战 In Touch 方格染色 Junk-Mail Filter [NOIP2010 提高组] 关押罪犯 Silver Woods Must Be Rectangu ...
- cdoj 1328 卿学姐与诡异村庄 Label:并查集 || 二分图染色
卿学姐与诡异村庄 Time Limit: 4500/1500MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit ...
- acdream 1725 哗啦啦的小彭玉染色问题 离散化并查集
哗啦啦的小彭玉染色问题 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acdream.info/problem?pid=1725 Descri ...
- 4075 染色(并查集)
1. 问题描述: 有 n 个气球(编号 1∼n),其中第 i 个气球的颜色为 ci.气球一共有 k 种颜色(编号 1∼k),每个气球的颜色 ci 都满足 1 ≤ ci ≤ k.接下来要进行 m 次询问 ...
最新文章
- SAP WM初阶之IM层面货物移动后WM层面自动完成TO创建和确认
- USB和串口(COM)的区别,以及相互转换
- android 退出app代码_uniapp退出APP应用(IOS+安卓)
- SpringBoot中使用yml配置文件以及配置类实现文件上传下载路径的修改
- android menu item属性,menuitem - Android 4.3菜单项showAsAction =“always”被忽略
- 织梦图集php,织梦图集在首页、列表页、内容页调用图集所有图片及注释的方法...
- 如何解决SAP Structure CMST_SI_ENQ的DDIC_TYPE_INCONSISTENCY问题
- Unity3D 4.x 使用Mecanim实现动画控制
- Jquery中用offset().top和offsetTop的比较
- mysql重复添加计数_从MySQL中的单个列获取重复值的计数?
- kali下搭建WiFi钓鱼热点
- unix域套接字UDP网络编程
- HZOI20190903模拟36 字符,蛋糕,游戏
- java生成pdf文件带页码_java(itext) 简单PDF表格生成工具(带页码)
- 商品详情页html手机,商品详情页.html
- 论巴西世界杯带给移动互联网产品的契机!
- 农业银行查询开户支行的方法
- Git rm和rm --cached区别
- pytorch 中的torch.bmm
- bug记录-socket hang up