[bzoj3444] 最后的晚餐

  显然只有当暗恋关系是链的时候才能塞进座位里。

  一人连着>2人的话就无解,小心重边。

  一条链本身有两种方案,假设总共有n个联通块,其中m条链,答案就是n!*2^m

  一开始因为重边炸了几发

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<algorithm>
 5 #define ll long long
 6 using namespace std;
 7 const int maxn=500233,modd=989381;
 8 int fa[maxn],deg[maxn],sz[maxn],to[maxn],cnt;
 9 int i,j,k,n,m;
10 bool gg;
11
12 int ra;char rx;
13 inline int read(){
14     rx=getchar(),ra=0;
15     while(rx<‘0‘||rx>‘9‘)rx=getchar();
16     while(rx>=‘0‘&&rx<=‘9‘)ra*=10,ra+=rx-48,rx=getchar();return ra;
17 }
18 inline int getfa(int x){return fa[x]!=x?fa[x]=getfa(fa[x]):x;}
19 inline void merge(int a,int b){
20     if(to[b]!=a)deg[a]++,deg[b]++;
21     if(deg[a]>2||deg[b]>2)gg=1;
22     int x=a,y=b;
23     a=getfa(a),b=getfa(b);
24     if(a!=b)
25         fa[b]=a,sz[a]+=sz[b];
26     else if(sz[a]>2&&to[y]!=x)gg=1;
27 }
28 int main(){
29     n=read(),m=read();
30     for(i=1;i<=n;i++)fa[i]=i,sz[i]=1;
31     for(i=1;i<=m&&!gg;i++)
32         j=read(),to[j]=read(),merge(j,to[j]);
33     if(gg){puts("0");return 0;}
34     ll ans=1;
35     for(i=1;i<=n;i++)if(fa[i]==i){
36         if(sz[i]>1)ans<<=1,ans-=ans>=modd?modd:0;
37         cnt++,ans=ans*cnt%modd;
38     }
39     printf("%lld\n",ans);
40 }

时间: 2024-07-30 04:00:38

[bzoj3444] 最后的晚餐的相关文章

bzoj-3444 3444: 最后的晚餐(组合数学)

题目链接: 3444: 最后的晚餐 Time Limit: 5 Sec  Memory Limit: 128 MB Description [问题背景] 高三的学长们就要离开学校,各奔东西了.某班n人在举行最后的离别晚餐时,饭店老板觉得十分纠结.因为有m名学生偷偷找他,要求和自己暗恋的同学坐在一起. [问题描述] 饭店给这些同学提供了一个很长的桌子,除了两头的同学,每一个同学都与两个同学相邻(即坐成一排).给出所有信息,满足所有人的要求,求安排的方案总数(这个数字可能很大,请输出方案总数取余98

BZOJ 3444: 最后的晚餐( )

把暗恋关系看成无向边, 那某个点度数超过2就无解.存在环也是无解.有解的话对连通分量进行排列就行了. ---------------------------------------------------------------------------------- #include<cstdio> #include<algorithm> #include<cstring> using namespace std; typedef long long ll; const

减肥晚餐食谱 越吃越瘦

想吃出好身材,晚餐其实很重要,那下面就看看给大家整合的这些晚餐减肥攻略吧!一网打尽你身上多余肥肉! 有调查显示,90%的肥胖者皆因晚餐吃得太好.对上班族来说,常常是早餐不吃,午餐马虎,晚餐丰盛,但是专家认为,正是这样的不良生活方式才导致了胖子们层出不穷. 早餐不能不吃,这是连小学生也知道的常识,偏偏有些大人就是不能遵守,认为一日三餐少吃一餐一定可以减肥. 其实,不吃早餐不但阻碍营养吸收.影响精神状态,而且由于能量吸收减少,还会令身体机能自动调节消耗能量的速度,反而达不到减肥的目的.再加上早餐不吃

【爬虫】【原创】08 使用简单正则表达式爬取下厨房(早餐,午餐,晚餐)

目的 1)      提取下厨房关键词为(早餐,午餐,晚餐)的菜谱 2)      获取"菜谱链接,图片地址,菜名,材料,七天内多少人做过,作者",存储到MONGODB 3)      对每个菜谱进行网页截图,保存到本地 2.      目标站点分析 网址: http://www.xiachufang.com/ 输入关键词"早餐",发现是跳转链接(暂时没想到这种怎么处理比较好,就单独拿出来处理吧) 午餐和晚餐的网址就比较一致 3.      爬取思路(以午餐为例)

[JL]最后的晚餐 动态规划(DP) codevs5318

[JL]最后的晚餐 TimeLimit:1000MS  MemoryLimit:1000KB 64-bit integer IO format:%lld Problem Description [题库搜索"JL"查看更多建兰题库题目] 话说YZJ编的某程序超时了1000倍(- -!),所以他不得不在自己家门口亲眼见证这个电影般的场景.虽然他不想错过这个美妙的时刻,但是他的肚子一再抗议,要求先吃完这最后的晚餐. 现在YZJ准备依次吃n道菜.但是他只使用勺子和筷子吃,勺子和筷子可以交替使用

p1324 dining(晚餐)

题目描述: 农夫JOHN为牛们做了很好的食品,但是牛吃饭很挑食. 每一头牛只喜欢吃一些食品和饮料而别的一概不吃.虽然他不一定能把所有牛喂饱,他还是想让尽可能多的牛吃到他们喜欢的食品和饮料. 农夫JOHN做了F (1 <= F <= 100) 种食品并准备了D (1 <= D <= 100) 种饮料. 他的N (1 <= N <= 100)头牛都以决定了是否愿意吃某种食物和喝某种饮料. 农夫JOHN想给每一头牛一种食品和一种饮料,使得尽可能多的牛得到喜欢的食物和饮料. 每

5个人的晚餐

现在晚上11点50分,自己才收拾完所有,安心的坐在电脑旁边写下今天晚饭的些许感受…… 前言:我现在的公司地处西安东郊,算是偏东北郊吧,比起摩肩接踵的南郊以及高新区来说,简直就是大海和一眼泉水一般,可即使这样,自己也很偏爱这块土地,因为在这里遇见了另一个世界的朋友——技术中心的14个小伙伴(贾总.老大.敏波.晁州.贾恩恩.杜鑫.郡哥.史工.李红.爱美.田老师.小乔.拍拍),也就开始了属于自己的小确幸. 也是因为公司地处偏僻,很久很久也都是我们14个人组成的小家庭,平均年龄都在25左右吧,一群年轻气

那么下面小编就为大家盘点一下晚餐应禁食的食物

 http://weheartit.com/xuanguanpu50/collections/82447999-2015-01-15/ http://weheartit.com/shiyanrang44/collections/82448000-2015-01-15/ http://weheartit.com/liaochengyan59/collections/82448001-2015-01-15/ http://weheartit.com/tongxuntan62/collection

P2837 晚餐队列安排

题目背景 Usaco Feb08 Bronze 题目描述 为了避免餐厅过分拥挤,FJ要求奶牛们分2批就餐.每天晚饭前,奶牛们都会在餐厅前排队入内,按FJ的设想,所有第2批就餐的奶牛排在队尾,队伍的前半部分则由设定为第1批就餐的奶牛占据.由于奶牛们不理解FJ的安排,晚饭前的排队成了一个大麻烦. 第i头奶牛有一张标明她用餐批次D_i(1 <= D_i <= 2)的卡片.虽然所有N头奶牛排成了很整齐的队伍,但谁都看得出来,卡片上的号码是完全杂乱无章的. 在若干次混乱的重新排队后,FJ找到了一种简单些