D - RGB Coloring 2
原题链接
暴力枚举:3^20 一定超时
可以对暴力进行优化:对于有n个点的连通块块,只需最多枚举3 * 2 ^ (n - 1),因为只有第一个点3种颜色都可以染,后续的点都受之前枚举过且与自己相连的点的约束,最多只能染两种颜色。而连通块之间的染色方案互不干扰,因此答案为各连通块染色方案的乘积。
#include <bits/stdc++.h>using namespace std;typedef long long LL;const int N = 30;int tem[N], cnt, n, m;
int g[N][N], c[N];
bool st[N];void dfs(int u) { //将所有连通块中的点存到tem数组st[u] = 1;tem[cnt ++] = u;for (int i = 1; i <= n; i ++) {if (!st[i] && g[i][u]) dfs(i);}
}bool check(int u, int j) { //判断点u是否可以染成颜色jfor (int i = 1; i <= n; i ++) {if (g[u][i] && c[i] == j) return false;}return true;
}void dfs(int u, int &res) {if (u == cnt) {res ++; //枚举完所有点,方案数加1return ;}for (int i = 1; i <= 3; i ++) {if (check(tem[u], i)) {c[tem[u]] = i;dfs(u + 1, res);c[tem[u]] = 0; //tem[u]点的颜色归为0,避免对tem[0] ~ tem[u - 1]点染色产生干扰}}
}int main(){cin >> n >> m;while (m --) {int a, b;cin >> a >> b;g[a][b] = g[b][a] = 1;}LL ans = 1;for (int i = 1; i <= n; i ++) {if (!st[i]) {cnt = 0; //重置tem数组元素的个数dfs(i); //获得连所有通块中的点int t = 0; //记录连通块染色的方案数dfs(0, t); //计算染色方案数ans = ans * t; //不同连通块之间的方案数独立,答案是各连通块染色方案的乘积}}cout << ans;return 0;
}
D - RGB Coloring 2相关推荐
- 数论三之排列组合Ⅱ——Virus Tree 2,RGB Coloring,123 Triangle,排列计数,排队,卡农
丝且人一口 Virus Tree 2 description solution code RGB Coloring description solution code 123 Triangle des ...
- AtCoder Grand Contest 025 B - RGB Coloring
B - RGB Coloring 求ax + by = k (0<=x<=n && 0<=y<=n)的方案数,最后乘上C(n, x)*C(n,y) 代码: #i ...
- AtCoder Grand Contest 025
B.RGB Coloring 绿色可以看作拿红和蓝都涂了,那么只需要满足A*a + B*b = K && 0 ≤ a,b ≤ n,答案加上C(n,a)*C(n,b) #include ...
- AtCoder Beginner Contest 199 (Sponsored by Panasonic) A~E 题解
ABC199 A~E [A - Square Inequality](https://atcoder.jp/contests/abc199/tasks/abc199_a) 题目大意 输入格式 输出格式 ...
- Java面试题全集(C)
这部分主要是开源Java EE框架方面的内容,包括Hibernate.MyBatis.Spring.Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试题, ...
- 色彩搭配六色rgb_除非您是色彩理论方面的专家,否则色码编码人员指南请勿使用rgb代替...
色彩搭配六色rgb 第一部分:不要使用RGB,除非您是色彩理论方面的专家. (Part I. Don't use RGB Unless you're an expert in color theory ...
- RGB Color Codes Chart
RGB Color Codes Chart RGB颜色空间 RGB颜色空间或RGB颜色系统,从红色.绿色和蓝色的组合中构造所有颜色. 红色.绿色和蓝色各使用8位,它们的整数值从0到255.这使得256 ...
- OpenCV YUV 与 RGB的互转(草稿)
YUV 转 RGB cv::Mat yuvImg; /*//下面两行是我自己代码里用来构成YUV图像的数据,可以忽略 yuvImg.create(pInput->height*3/2, pInp ...
- 常用图像格式(PNG,JPG)到SGI图像格式(RGB,BW)的转换
常用图像格式(PNG,JPG)到SGI图像格式(RGB,BW)的转换 网站链接 根据该网站的描述和给的相应例子,自己改写了一个把png,jpg等常用格式的图片转化为rgb,bw格式的代码. #incl ...
最新文章
- Comprehensive Guide to build a Recommendation Engine from scratch (in Python) / 从0开始搭建推荐系统...
- java中如何忽略字符串中的转义字符--转载
- 在python中使用关键字define定义函数_python等价于'define func()'或如何在python中注释掉函数调用...
- 两道二分coming~
- windows下的终端工具和产品力
- JavaGUI版本销售管理系统
- 大学生医保的报销范围
- react视频教程百度云资源链接
- 考研408-计算机组成原理-总线
- Linux 查看文件格式和更改文件格式
- DOTCPP:有关1125心得
- mysql免安装部署_MySQL免安装版配置部署
- Java - LinkedHashMap(有序 map)获取第一个元素和最后一个元素
- Android——检测摄像头是否可用
- 电脑小白 给 电脑大白 讲 电脑基础(软件推荐篇)
- Redis单线程还是多线程?IO多路复用原理
- Mosquitto 在Linux服务器上的部署过程中以及踩过的坑
- 098 复习:中值定理习题之型一:仅有ξ
- 即将取代Maven和Gradle的新一代更强更快的构建工具(至尊典藏版)
- interrupt request level - IRQL