题目:

小爱作为风纪委员绝对不能容许扰乱风纪的事情出现!当然和小太的事情总是要在合适的时间和地点解决的~而且反正也得到了上面的许可外加声援什么的。

好吧扯远了~现在学校里有一些经常扰乱风纪的少年和少女~其中有些人是相互认识的,如果一个班里所有人都相互认识那么这个班的成员就会集体翘课。现在要把这些人分成两个人数相同的班级,小爱要知道两个班的人都会集体翘课的方案数有多少种。

题意:求将一张图分为两个完全图的方案数.

这题看似很难,但仔细琢磨一遍,发现:                                  还是很难!

定义两个集合 $A,B$,对应两个完全图

发现若两个点 $a,b$ 若无连边,两个点就不可能在同一集合内

这就启发我们将所有没有连边的关系重新建成一张图 $G'$ ,即补图

很明显 $G'$ 有可能不连通。

由于这张图上同一条边连接的两个点不可能在一个集合内,即这是一张二分图,我们可以对它染黑白色。

当然,如果一个连通块不是二分图(即存在边数 $>1$ 的奇环),输出 $0$

(染色随便染)

处理完每个连通块后,由于实际黑色的个数是等于白色的个数的,所以我们需要对某些连通块反色

定义状态 $F[i][j]$ 表示做到第 $i$ 个块颜色个数差为 $j$ 的方案数

有两种不同决策:将连通块内黑色丢入 $A$ 或 $B$,白色相反

于是有了下列转移方程

$F[i][j] = (F[i-1][abs(j - a[i] + b[i])] + F[i-1][abs(j - a[i] + b[i])])$

巨佬要滚数自己滚吧,忘记说了 $n <= 100$

Code:

 1 #include<cstring>
 2 #include<cstdio>
 3 #define R register
 4 #define MAXN 110
 5 #define mod 1000000007
 6 #define abs(_a) ((_a)<0?-(_a):_a)
 7 using namespace std;
 8 int n,m,cnt = 0;
 9 struct BLOCK{
10     int a,b;
11 }B[MAXN];
12 int from[MAXN],col[MAXN];
13 bool G[MAXN][MAXN],flag;
14 int sks,slr;
15 int dp[MAXN][MAXN];
16 void dfs(int u,int g)
17 {
18     from[u] = cnt;
19     col[u] = g;
20     g ? ++sks : ++slr;
21     for(R int i = 1; i <= n; i++)
22     {
23         if(flag) return;
24         if(col[i] == g && !G[i][u] && from[i] && i != u) //存在奇环
25         {
26             puts("0");
27             flag = 1;
28             return;
29         }
30         if(from[i]) continue;
31         if(!G[i][u])dfs(i,g^1);
32     }
33 }
34 int main()
35 {
36     memset(col,-1,sizeof(col));
37     scanf("%d%d",&n,&m);
38     for(R int i = 1; i <= m; i++)
39     {
40         int u,v;
41         scanf("%d%d",&u,&v);
42         G[u][v] = G[v][u] = true;
43     }
44     for(R int i = 1; i <= n; i++)
45     {
46         if(from[i]) continue;
47         ++cnt;
48         sks = slr = 0;
49         dfs(i,0);
50         if(flag) return 1 ^ 1;
51         B[cnt].a = sks;
52         B[cnt].b = slr;
53     }
54     dp[0][0] = 1;
55     for(R int i = 1; i <= cnt; i++)
56         for(R int j = 0; j <= n; j++)
57         {
58             dp[i][j] = (dp[i-1][abs(j+B[i].a-B[i].b)] + dp[i-1][abs(j-B[i].a+B[i].b)])%mod;
59         }
60     printf("%d",dp[cnt][0]);
61     return 0;
62 }

转载于:https://www.cnblogs.com/QuickSilverX/p/10701114.html

题解 —— 风纪委员相关推荐

  1. CSUSTOJ-伊井野弥子是风纪委员(简单BFS)

    题目连接:http://acm.csust.edu.cn/problem/4051 博客园食用链接:https://www.cnblogs.com/lonely-wind-/p/13941896.ht ...

  2. 长沙理工大学第十五届程序设计竞赛部分题解

    校赛都过去了几天了才想起来写博客 老懒狗了 这次感觉算一点点超常发挥 出了七题 排在第八名 还拿了两个一血气球 虽然之后发现有道题暴力就能过 但是还是挺开心的 而且这次比yy他们队还高一名 哈哈哈哈 ...

  3. XUPT_STA2018(部分题解)

    A - 一方通行和最大公约数I     CodeForces - 664A 作为学园都市最强的lv5,一方通行必须解决一道数学题才能接触last order身上植入的病毒,请你帮他解决这个问题. 给出 ...

  4. 2018级《程序设计基础(B)I》期末上机考试 重现(第二场)

    御坂美琴与妹妹们 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 在[量产型能力者计划 ...

  5. 【2021-08-05 修订】【梳理】计算机网络:自顶向下方法 第六章 链路层和LAN(docx)

    计算机网络 知 识 梳 理 (第一版) 建议先修课程:数据结构. 配套教材: Computer Networking - A Top Down Approach, 7th edition James ...

  6. 顶级测试框架Jest指南:跑通一个完美的程序,就是教出一群像样的学生

    facebook三大项目:yarn jest metro,有横扫宇宙之势. 而jest项目的宗旨为:减少测试一个项目所花费的时间成本和认知成本. --其实,它在让你当一个好老师. jest文档非常简略 ...

  7. 梦三花重金修改服务器,B站梦花BILIBILI挂机助手 – 9.10更新

    梦花BILIBILI助手 win server系统崩溃解决方法:添加数据执行保护,具体措施自行百度 感谢@C丶情提供的解决措施 梦花哔哩助手 主要功能: 1.全自动模拟B站直播观看(PC&PE ...

  8. 哔哩哔哩“红杏出墙”

    B站自陈睿掌舵以来,一直在朝着"中国的YouTube"方向发展,主打中国最大的年轻人聚集地.越来越主流化的B站看似与建站之初的二次元文化聚集地相距甚远,很多用户埋怨B站变味儿,转向 ...

  9. Go C画图 CSP-J CSP-S NOIP 信息学奥赛 2023.02.06测试题

    一.单项选择题(共 20 题,每题 1.5 分,共计 30 分:每题有且仅有一个正确选项) 第 7 题 博艾中学进行了一次信息学会考测试,其优.良.及格.不及格的试卷数量分别为 10,13,14,5 ...

最新文章

  1. mingw msys 编译 libzip
  2. LetCode: 150. 逆波兰表达式求值
  3. (网络编程)TCP实现聊天
  4. 理解spark中的job、stage、task
  5. [19/04/11-星期四] 多线程_并发协作(生产者/消费者模式_2种解决方案(管程法和信号灯法))...
  6. 《剑指offer》像素翻转
  7. mount 安卓system只读_Android如何让system分区可读写(MTK安卓6.0)-阿里云开发者社区...
  8. 深入理解 操作系统 SJF算法(以洛谷P1223题为例)
  9. 硬件——nrf51822第二篇,如何设置keil用来下载程序
  10. 使用Sysmon分析宏病毒(Macros Downloader)
  11. layui tree ajax刷新,layer 刷新某个页面的实现方法
  12. 《java数据结构与算法》系列之“开篇”
  13. Kubernetes 小白学习笔记(32)--kubernetes云原生应用开发-sidecar注入和istio服务治理演示
  14. 4个最受欢迎的大数据可视化工具
  15. Django 框架图
  16. python语音转文字库_有没有语音转文字的APP?
  17. SQL server 2008不允许保存更改的解决办法
  18. 仿阿里云后台管理界面模板html源码——后台
  19. c语言中数组名和数组名取地址理解
  20. 外边距 - margin

热门文章

  1. 学生考试成绩可用百分制和等级制度,编程相互转换,输入等级输出分数段,输入分数,输出等级
  2. 自私的基因-读标题的到的信息
  3. IT咨询公司薪酬比较
  4. 一场关于ChatGPT话语权的深度思考:人类会在大模型中迷失自我吗?
  5. 小米升级后开机显示无服务器,小米手机升级后无法开机解决方法
  6. 什么是卷积神经网络算法,卷积神经网络算法实现
  7. 腾讯AI翻译搞砸成笑话,马化腾仅给你勇气就够了?
  8. openwrt开启upnp
  9. 香港武侠电影十大金曲和影视剧的怀旧经典金曲
  10. JAVA解题【求取最长的完全连续交替方波信号】