【题解】洛谷 CF11D A Simple Task

CF11D

  • 题目
  • 解题思路
    • A Simple Task
      • 题面翻译
      • 题目描述
      • 输入格式
      • 输出格式
      • 样例 #1
        • 样例输入 #1
        • 样例输出 #1
      • 提示
    • 分析
    • Code
      • 更多方法


题目

原题链接

解题思路

A Simple Task

题面翻译

求无向图中的简单环个数,保证不存在重边和自环。

简单环:除起点外,其余的点都只出现一次的回路。

题目描述

Given a simple graph, output the number of simple cycles in it. A simple cycle is a cycle with no repeated vertices or edges.

输入格式

The first line of input contains two integers n n n and m m m ( 1 ≤ n ≤ 19 1\le n\le19 1n19 , 0 ≤ m 0\le m 0m ) – respectively the number of vertices and edges of the graph. Each of the subsequent $ m $ lines contains two integers a a a and b b b , ( 1 ≤ a , b ≤ n 1\le a,b\le n 1a,bn , a ≠ b a≠b a=b ) indicating that vertices a a a and b b b are connected by an undirected edge. There is no more than one edge connecting any pair of vertices.

输出格式

Output the number of cycles in the given graph.

样例 #1

样例输入 #1
4 6
1 2
1 3
1 4
2 3
2 4
3 4
样例输出 #1
7

提示

The example graph is a clique and contains four cycles of length 3 and three cycles of length 4.

分析

考虑用状压DP:
f [ j ] [ i ] f[j][i] f[j][i] 表示 n n n 个节点走过的状态,起点为 i i i 中最小的 1 1 1 的位置,且终点为 j j j 的路径总数。

考虑转移方程: f [ j ] [ i ] f[j][i] f[j][i] 转移至 f [ k ] [ i ∣ ( 1 < < ( k − 1 ) ) ] f[k][i|(1<<(k-1))] f[k][i(1<<(k1))],由题可得是直接累加的,但必须满足以下条件:

  1. 状态 f [ j ] [ i ] f[j][i] f[j][i] 存在。
  2. j j j 能到达 k k k
  3. k k k 大于 i i i 中最小的 1 1 1 的位置。
  4. i i i 中没有 k k k 这个位置。

那么如果已经有了 k k k 这个点且 k k k 就为起点,那就是找到环了,直接统计即可。

注意:

  1. 初始化
    f[i][1<<(i-1)]=1;

即出发的点。

  1. 转移
    同上:
	if(i&(1<<(k-1))){if(lowbit(i)==(1<<(k-1)))ans+=f[j][i];}elsef[k][i|(1<<(k-1))]+=f[j][i];
  1. 统计答案
    会有两个不合法情况, 1 1 1 是每一条单独的边会被算为答案, 2 2 2 是合法的环,其反环会被多算一遍。
    所以最终答案为 a n s − m 2 {\Large \frac{ans-m}{2}} 2ansm

Code

#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(false),cin.tie(NULL),cout.tie(NULL);
using namespace std;
const int N=1<<19;
int f[20][N],n,m,x,y,a[101][101],ans;
inline int lowbit(int x)
{return x&-x;
}
signed main()
{IOS;cin>>n>>m;for(int i=1;i<=m;i++)cin>>x>>y,a[x][y]=a[y][x]=1;for(int i=1;i<=n;i++)f[i][1<<(i-1)]=1;for(int i=0;i<(1<<n);i++){for(int j=1;j<=n;j++){if(!f[j][i])continue;for(int k=1;k<=n;k++){if(!a[j][k])continue;if(lowbit(i)>(1<<(k-1)))continue;if(i&(1<<(k-1))){if(lowbit(i)==(1<<(k-1)))ans+=f[j][i];}elsef[k][i|(1<<(k-1))]+=f[j][i];}}}cout<<(ans-m)/2;return 0;
}

更多方法

更多方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/181951.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux:虚拟机安装Ubuntu系统

一、下载Ubuntu 地址&#xff1a;https://cn.ubuntu.com/download/desktop 二、安装 以上配置完成后&#xff0c;点击完成按钮&#xff0c;接下来就是一段较长时间的等待安装过程。 安装完成后&#xff0c;还有一些系统性配置。 系统配置非常简单&#xff0c;全部next即可。…

使用Typecho搭建个人博客网站,并内网穿透实现公网访问

使用Typecho搭建个人博客网站&#xff0c;并内网穿透实现公网访问 文章目录 使用Typecho搭建个人博客网站&#xff0c;并内网穿透实现公网访问前言1. 安装环境2. 下载Typecho3. 创建站点4. 访问Typecho5. 安装cpolar6. 远程访问Typecho7. 固定远程访问地址8. 配置typecho 前言 …

DHCP协议讲解(含DHCP状态机)

加个目录 一、概述 大家都知道&#xff0c;为了使用TCP/IP协议族&#xff0c;每台主机和路由器需要一定的配置信息。 下面是一个简单的例子&#xff1a; 某学校的教学办公区域将要布置数百台计算机&#xff0c;每台都需要分配IP&#xff0c;如何实现对这些数量巨大的主机进…

fastjson 怎么把List<User> 和 json字符串 相互转换 请提供代码

fastjson 怎么把List 和 json字符串 相互转换 请提供代码 FastJSON&#xff08;阿里巴巴的 JSON 库&#xff09;可以轻松实现 List<User> 和 JSON 字符串之间的相互转换。以下是一些简单的代码示例&#xff1a; 将 List 转为 JSON 字符串&#xff1a; import com.alib…

哈希_快乐数

//编写一个算法来判断一个数 n 是不是快乐数。 // // 「快乐数」 定义为&#xff1a; // // // 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。 // 然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。 // 如果…

Pytorch:torch.optim详解

本篇笔记主要介绍torch.optim模块&#xff0c;记录学习过程 在深度学习中&#xff0c;我们通常会使用优化算法来调整神经网络的权重和偏差&#xff0c;以便模型能够更好地拟合训练数据。torch.optim是PyTorch中的一个模块&#xff0c;它提供了各种优化算法的实现&#xff0c;用…

Seata简介与常用模式解决方案概述

Seata 是什么? Seata 是一款开源的分布式事务解决方案&#xff0c;致力于提供高性能和简单易用的分布式事务服务。 Seata事务管理中有三个重要的角色&#xff1a; TC (Transaction Coordinator) - 事务协调者&#xff1a;维护全局和分支事务的状态&#xff0c;协调全局事务提…

挑战传统IT:RPA以更低的成本和更高的效率领跑数字化转型

在企业数字化进程中&#xff0c;传统的IT解决方案往往带来高成本和低效率的问题。因此&#xff0c;如何顺利地、平稳地进行数字化转型对企业来说是核心考虑。 为此&#xff0c;本文将深入探讨RPA&#xff08;Robotic Process Automation&#xff09;如何以其独特的优势&#xf…

记一次mysql 3306端口映射到外网 frp

通过下面命令启动被访问机器的frp nohup ./frps -c ./frps.toml & 记一次mysql 3306端口映射到外网 坑 mysql本身没有配置远程访问 frp配置错误&#xff0c;没注意中文单引号和英文单引号的区别 mysql本身没有配置远程访问 问题 navacat 远程链接mysql 出现 Lost c…

Camunda 7.x 系列【58】自定义表单设计器

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 前言2.表单设计器3. 案例演示3.1 引入流程设计器3.2 表单数据存储3.3 测试1. 前言 Camu…

牛客 算法题 golang语言实现

题目 HJ101 输入整型数组和排序标识&#xff0c;对其元素按照升序或降序进行排序 描述 输入整型数组和排序标识&#xff0c;对其元素按照升序或降序进行排序数据范围&#xff1a; 1 ≤ &#xfffd; ≤ 10001≤n≤1000 &#xff0c;元素大小满足 0 ≤ &#xfffd; &#…

CONTROLLING VISION-LANGUAGE MODELS FOR MULTI-TASK IMAGE RESTORATION

CONTROLLING VISION-LANGUAGE MODELS FOR MULTI-TASK IMAGE RESTORATION (Paper reading) Ziwei Luo, Uppsala University, ICLR under review(6663), Cited:None, Stars: 350, Code, Paper. 1. 前言 像CLIP这样的视觉语言模型已经显示出对零样本或无标签预测的各种下游任务…

AutoDIR: Automatic All-in-One Image Restoration with Latent Diffusion

AutoDIR: Automatic All-in-One Image Restoration with Latent Diffusion (Paper reading) Yitong Jiang, The Chinese University of Hong Kong, arXiv23, Code, Paper 1. 前言 我们提出了一种具有潜在扩散的一体化图像恢复系统&#xff0c;名为AutoDIR&#xff0c;它可以…

sql23(Leetcode2356每位教师所教授的科目种类的数量)

代码&#xff1a; # Write your MySQL query statement below select teacher_id,count(distinct(subject_id)) as cnt from Teacher group by teacher_id

YoloV7改进策略:RefConv打造轻量化YoloV7利器

文章目录 摘要论文:《RefConv: 重参数化的重聚焦卷积》1、简介2、相关研究2.1、用于更好性能的架构设计2.2、结构重参数化2.3、权重重参数化方法3、重参数化的重聚焦卷积3.1、深度RefConv3.2、普通的RefConv3.3、重聚焦学习4、实验4.1、在ImageNet上的性能评估4.2、与其他重参…

西南科技大学信号与系统A实验三(线性连续时间系统的分析)

一、实验目的 1.掌握用 matlab 分析系统时间响应的方法 2.掌握用 matlab 分析系统频率响应的方法 3.掌握系统零、极点分布与系统稳定性关系 二、实验原理 1. 系统函数 H(s) 系统函数:系统零状态响应的拉氏变换与激励的拉氏变换之比. H(s)=R(s)/E(s) 在 matlab 中可采用…

GZ031 应用软件系统开发赛题第10套

2023年全国职业院校技能大赛 应用软件系统开发赛项&#xff08;高职组&#xff09; 赛题第10套 工位号&#xff1a; 2023年4月 竞赛说明 一、项目背景 党的二十大报告指出&#xff0c;要加快建设制造强国、数字中国&#xff0c;推动制造业高端化、智能化、…

图片伪装,将RAR文件隐藏到图片里

下载链接 效果图&#xff1a; 代码&#xff1a; ECHO OFF TITLE PtoR MODE con COLS55 LINES25 color 0A:main cls echo.当前时间&#xff1a;%date% %time% echo.欢迎使用图片伪装&#xff0c;本脚本可以将RAR文件隐藏到图片里. echo.set /p "imagefile①请拖入图像文件…

数据仓库数据管理模型

数据仓库分为贴源层、数据仓库层、数据服务层&#xff0c;有人叫做数仓数据模型&#xff0c;或者叫"数据管理模型”。 我们为什么要进行数据分层管理&#xff0c;下图的优点介绍已经说得比较明确&#xff0c;再补充几点&#xff1a; 保障数据一致性&#xff1a;上层的数…

最简单的Python程序员编辑器——学习Python的第二篇

第二章 基础 安装python 按照上一期的教程安装&#xff0c;如果有什么问题可以提出阿莱 安装完之后&#xff0c;在电脑的程序中查找SHELL 这里是Win10&#xff0c;win11你也是到程序菜单查找。 你可以把把它点击右键&#xff0c;保存到桌面上&#xff0c;或者固定到开始菜单…