当前位置: 首页 > news >正文

[ABC294Ex] K-Coloring

题目传送门

属于一眼题,不看时间限制 8 s 8s 8s 容易被诈骗

解法

简单容斥
大概 式子就是 ∑ ( − 1 ) M ∗ K ∣ S ∣ \sum(-1)^{M}*K^{|S|} (1)MKS , M M M 为边集的大小, ∣ S ∣ |S| S 为联通块的数量
那么我们就有 空间复杂度: O ( 2 N ) = 1 e 9 O(2^N) =1e9 O(2N)=1e9 ,时间复杂度: O ( 2 N M ) O(2^NM) O(2NM)
1.用 d f s dfs dfs 搜索所有的状态,可以省去开数组的空间
2.加上剪枝,当加入一条边后,图的连通性未改变,那么后继所有状态一定都会相互抵消,直接返回 0 0 0
加上两种优化后
空间复杂度: O ( 1 ) O(1) O(1)
时间复杂度: O ( 2 N ∗ 玄学 ) O(2^{N}*玄学) O(2N玄学)

Code

#include <algorithm>
#include <iostream>using db = double;
using ll = long long;
using namespace std;const int N=37,mod=998244353;int n,m,k,p[N],u[N],v[N],fa[N];int find(int x) { return x==fa[x]?x:find(fa[x]); }int dfs(int i,int cnt) {if(i==m+1) return p[cnt];int x=find(u[i]),y=find(v[i]);if(x==y) return 0;int f1=dfs(i+1,cnt);fa[y]=x;int f2=dfs(i+1,cnt-1);fa[y]=y;return (f1-f2+mod)%mod;
} 
int main(){srand(998244353);scanf("%d%d%d",&n,&m,&k);p[0]=1; for(int i=1;i<=n;i++) p[i]=1ll*p[i-1]*k%mod,fa[i]=i;for(int i=1;i<=m;i++) {scanf("%d%d",&u[i],&v[i]);if(rand()%2) swap(u[i],v[i]);}printf("%d\n",dfs(1,n));
}

其实就是想记录一下优化的方法

相关文章:

  • 客户端与服务端实时通讯(轮询、websocket、SSE)
  • Android 11.0 禁用adb remount功能的实现
  • YOLOv5:修改backbone为SPPCSPC
  • Cross-Entropy Loss(多分类损失函数)
  • Linux-bluetooth蓝牙
  • JAVA安全入门之反射
  • mfc140u.dll丢失怎么修复,mfc140u.dll文件有什么作用
  • Android开发知识学习——Kotlin进阶
  • 科学化决策数据分析,先从量化开始
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • 【Linux】第六站:Centos系统如何安装软件?
  • GCC 编译器 详细总结
  • 刷题笔记day08-字符串01
  • 编译支持GPU的opencv,并供python的import cv2调用
  • 程序员想要网上接单却看花了眼?那这几个平台你可得收藏好了!
  • ----------
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 【347天】每日项目总结系列085(2018.01.18)
  • CSS实用技巧
  • ES6之路之模块详解
  • flutter的key在widget list的作用以及必要性
  • JAVA之继承和多态
  • tweak 支持第三方库
  • Vue UI框架库开发介绍
  • Vue组件定义
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 前端面试题总结
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 详解NodeJs流之一
  • Android开发者必备:推荐一款助力开发的开源APP
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (办公)springboot配置aop处理请求.
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (三)docker:Dockerfile构建容器运行jar包
  • (十一)手动添加用户和文件的特殊权限
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .aanva
  • .bat文件调用java类的main方法
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .net core开源商城系统源码,支持可视化布局小程序
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET/C# 的字符串暂存池
  • .Net中ListT 泛型转成DataTable、DataSet
  • /bin、/sbin、/usr/bin、/usr/sbin
  • :中兴通讯为何成功
  • @GetMapping和@RequestMapping的区别
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)