BZOJ3444 最后的晚餐【细节题+组合数学】*
BZOJ3444 最后的晚餐
Description
【问题背景】
高三的学长们就要离开学校,各奔东西了。某班n人在举行最后的离别晚餐时,饭店老板觉得十分纠结。因为有m名学生偷偷找他,要求和自己暗恋的同学坐在一起。
【问题描述】
饭店给这些同学提供了一个很长的桌子,除了两头的同学,每一个同学都与两个同学相邻(即坐成一排)。给出所有信息,满足所有人的要求,求安排的方案总数(这个数字可能很大,请输出方案总数取余989381的值,也可能为0)。
Input
输入有m+1行,第一行有两个用空格隔开的正整数n、m,如题所示。接下来的m行,每一行有两个用空格隔开的正整数,第i行为Ai和Bi,表示Ai的暗恋对象为Bi,保证Ai互不相等。
Output
输出只有一行,这一行只有一个数字,如题所示。
Sample Input
4 2
1 2
4 3
Sample Output
8
【数据范围】
100%的数据,0<n≤500000,1≤Ai,Bi≤n,0≤m≤n,保证没有人自恋。
这题首先是我们把关系看成无相边
这就来了一个问题,我们需要把重边去掉,可以用map搞一下
然后就是如果一个点的度数大于二不合法
其次是有大小大于2的环不合法
剩下的方案数就是2大于等于2的联通块数量∗(总联通块数量)!2^{大于等于2的联通块数量}*(总联通块数量)!2大于等于2的联通块数量∗(总联通块数量)!
#include<bits/stdc++.h>
using namespace std;
#define N 500010
#define Mod 989381
#define fu(a,b,c) for(int a=b;a<=c;++a)
struct Edge{int v,nxt;}E[N<<];
int head[N],tot=;
int n,m,d[N],bel[N],siz[N],mark[N];
map<int,bool> g[N];
void add(int u,int v){E[++tot]=(Edge){v,head[u]};head[u]=tot;}
void dfs(int u,int fa,int belong){
bel[u]=belong;
siz[belong]++;
for(int i=head[u];i;i=E[i].nxt){
int v=E[i].v;
if(v==fa)continue;
if(bel[v])mark[belong]=;
else dfs(v,u,belong);
}
}
int main(){
scanf("%d%d",&n,&m);
fu(i,,m){
int u,v;scanf("%d%d",&u,&v);
if(u>v)swap(u,v);
if(g[u][v])continue;
g[u][v]=;
add(u,v);
add(v,u);
d[u]++;d[v]++;
}
fu(i,,n)if(d[i]>){printf("");return ;}
int cnt=;
fu(i,,n)if(!bel[i])dfs(i,,++cnt);
int ans=;
fu(i,,cnt){
if(mark[i]&&siz[i]>){printf("");return ;}
ans=1ll*ans*i%Mod;
if(siz[i]>)ans=*ans%Mod;
}
printf("%d",ans);
return ;
}
BZOJ3444 最后的晚餐【细节题+组合数学】*的更多相关文章
- Codeforces Round #392 (Div. 2)-758D. Ability To Convert(贪心,细节题)
D. Ability To Convert time limit per test 1 second Cmemory limit per test 256 megabytes input standa ...
- 【线段树 细节题】bzoj1067: [SCOI2007]降雨量
主要还是细节分析:线段树作为工具 Description 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年的降雨量严格小 ...
- bzoj3444: 最后的晚餐(并查集+组合数学)
3444: 最后的晚餐 题目:传送门 题解: 考虑有解的情况: 直接上并查集,同一个联通块里的人一定要坐在一起的.不难发现其实对于每个联通块最多就只有两种排列方式,那就直接把大于等于两个人的联通块先去 ...
- BZOJ3444: 最后的晚餐
Description [问题背景] 高三的学长们就要离开学校,各奔东西了.某班n人在举行最后的离别晚餐时,饭店老板觉得十分纠结.因为有m名学生偷偷找他,要求和自己暗恋的同学坐在一起. [问题描述] ...
- zoj 3745 Salary Increasing(坑爹的细节题!)
题目 注意题目中的,引用绝望的乐园中的进一步解释如下: 这是一道浙大月赛的题,一如既往的坑爹,好好一道水题,被搞成一道坑题!!! //注意:r(i) < l(i+1) !细节啊细节! #incl ...
- 【交互 细节题 思维题】cf1064E. Dwarves, Hats and Extrasensory Abilities
第一次做交互真有趣……:挺好的细节思维题 This is an interactive problem. In good old times dwarves tried to develop extr ...
- bzoj1067——SCOI2007降雨量(线段树,细节题)
题目描述 我们常常会说这样的话:"X年是自Y年以来降雨量最多的".它的含义是X年的降雨量不超过Y年,且对于任意\(Y<Z<X\),Z年的降雨量严格小于X年.例如2002 ...
- Codeforces 571E - Geometric Progressions(数论+阿巴细节题)
Codeforces 题目传送门 & 洛谷题目传送门 u1s1 感觉此题思维难度不太大,不过大概是细节多得到了精神污染的地步所以才放到 D1E 的罢((( 首先我们对所有 \(a_i,b_i\ ...
- Han Move(细节题)
Problem 1609 - Han Move Time Limit: 1000MS Memory Limit: 65536KB Total Submit: 620 Accepted: 1 ...
随机推荐
- Decode Ways,编码方式数量求解。动态规划问题。
问题描述: A message containing letters from A-Z is being encoded to numbers using the following mapping: ...
- 基于usb4java实现的java下的usb通信
项目地址:点击打开 使用java开发的好处就是跨平台,基本上java的开发的程序在linux.mac.MS上都可以运行,对应这java的那句经典名言:一次编写,到处运行.这个项目里面有两种包选择,一个 ...
- led,key通用IO的端口
1 注意通用IO端口, GPBCON 只能控制一个GPBDAT位(对应的位),而GPBUP可以使能GPBCON.
- windows service 2008 内存吃尽解决方案
最近用windows2008,发现系统运行一段时间后,内存吃紧,赶紧打开资源查看器,发现当前运行的程序占有内存都很小,后经查资料,原来是被windows2008的文件缓存吃尽了,这是windows20 ...
- 身份证真实性校验js、mini ui身份证长度正则验证
身份证号码真实性校验 <input type="text" value="请输入身份证号" id="cards" ><bu ...
- 小练习:Two Sum
1.example Given nums = [, , , ], target = , Because nums[] + nums[] = + = , , ]. 2.solve class Solut ...
- Attach to process 的问题
Attach to process找不到W3WP选项怎么办?刷新它的一个网页
- [SQL]会引起全表扫描的10种SQL语句
1.模糊查询效率很低: 原因:like本身效率就比较低,应该尽量避免查询条件使用like:对于like ‘%...%’(全模糊)这样的条件,是无法使用索引的,全表扫描自然效率很低:另外,由于匹配算法的 ...
- 【fzu-2261】浪里个浪
TonyY是一个喜欢到处浪的男人,他的梦想是带着兰兰姐姐浪遍天朝的各个角落,不过在此之前,他需要做好规划. 现在他的手上有一份天朝地图,上面有n个城市,m条交通路径,每条交通路径都是单行道.他已经预先 ...
- 九、dbms_ddl(提供了在PL/SQL块中执行DDL语句的方法)
1.概述 作用:提供了在PL/SQL块中执行DDL语句的方法,并且也提供了一些DDL的特殊管理方法. 2.包的组成 1).alter_compile说明:用于重新编译过程.函数和包语法:dbms_dd ...