蓝桥2021A组E题

news2024/11/24 18:55:31

回路计数

  • ==问题描述==
  • ==格式输入==
  • ==格式输出==
  • ==评测用例规模与约定==
  • ==解析==
  • ==参考程序==
  • 难度等级

问题描述

在这里插入图片描述


格式输入


格式输出

输出方案数


评测用例规模与约定


解析

题目的意思是21个教学楼对于编号互质的两个楼就有一个通道,可以想成一个图有双向边当编号互质时,(互质的知识看这篇博文互质的知识)否则没有直接到达的通道。要求从1楼出发再回到1楼并且每个楼都走过,求有多少种走的方案(其实也就类似旅行商问题求方案数一个哈密顿回路),首先求方案数并且是不同道路的我们想到dfs,但这道题dfs不适用21个点,情况会由21!个所以放弃,还有什么更好的方法呢。。。状态压缩dp,这是一个解决这个问题的好方法如果你学过的话。。。如果没有看看这篇博文学习一下(状压dp)
用二进制来表示状态01每个楼是否被访问过,然后推出状态转移方程,这个过程要用到神奇的二进制位运算。。。
所以呢dp[][]来记录状态和到达的楼。前一个[]是状态在代码中也会用左移右移来表示状态想象成二进制就好,后一个[]就是到达的楼号了。通过i>>j&1这个操作来判断状态是否成立。最后把所有最终到达的楼号状态数目加起来就是方案数了。


参考程序

#include<iostream>
using namespace std;
#define N 21
int to[N+1][N+1];//记录楼和楼之间状态通不通
int visit[N+1];
long long dp[1<<N][N+1];
long long ans=0;
int gcd(int x,int y){
   return y?gcd(y,x%y):x;
}
void dfs(int step,int np){//跑不出来的dfs
   if(step==N){
       if(np==1) ans++;
       return;
   }
   else{
       for(int i=1;i<=N;i++){
           if( np==i || visit[i]==1 || to[np][i]==0 ) continue;
           visit[i]=1;
           dfs(step+1,i);
           visit[i]=0;
       }
   }
}
int main(){
   for(int i=1;i<=N-1;i++){
       for(int j=i+1;j<=N;j++){
           if(gcd(i,j)==1){
               to[i-1][j-1]=1;
               to[j-1][i-1]=1;
           }
       }
   }
   dp[1][0]=1; 
   for(int i=1;i<(1<<N);i++){
       for(int j=0;j<N;j++){
           if((i>>j)&1==0) continue;
           for(int k=0;k<N;k++){
               if((i>>k&1) || !to[j][k]) continue;
               dp[i+(1<<k)][k] += dp[i][j];
           }
       }
   }
   for(int i=1;i<=21;i++) ans+=dp[(1<<21)-1][i]; 
   cout<<ans;
    return 0;
}

难度等级

⭐️⭐️⭐️⭐️手动再加半颗,还是比较难的。。。(1~10星)

以个人刷题整理为目的,如若侵权,请联系删除~

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

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

相关文章

path环境变量的作用

当我把一个运行文件的路径加入到了path环境变量&#xff0c;就可以在cmd命令行随时使用运行。 在path中有两个path上面的是用户的path&#xff0c;下面的是计算机的path

GD32 HID键盘矩阵键盘发送数据时,一直发送数据问题处理

这个问题找了两三天,开始并不认为是示例程序的问题,只是感觉是自己代码问题。 这个解决流程大概是: 先调好矩阵键盘=> 调用发送函数。 就是因为调用时,一直发送数据,我也在按键抬起做了操作,始终不行。 最后,发现时示例代码中有个 空闲中断 引起的。 udev->reg…

(一)Jetpack Compose 从入门到会写

基本概念 Compose 名称由来 众所周知&#xff0c;继承在功能拓展上表现的很脆弱&#xff0c;容易类、函数爆炸&#xff0c;通过代理和包装进行组合会更健壮。 Compose 意为组合&#xff0c;使用上也是把 Compose 函数以 模拟函数调用层级关系的方式 组合到一起&#xff0c;最终…

数据结构-----Lambda表达式

文章目录 1 背景1.1 Lambda表达式的语法1.2 函数式接口 2 Lambda表达式的基本使用2.1 语法精简 3 变量捕获3.1 匿名内部类3.2 匿名内部类的变量捕获3.3 Lambda的变量捕获 4 Lambda在集合当中的使用4.1 Collection接口4.2 List接口4.3 Map接口 HashMap 的 forEach() 5 总结 1 背…

【愚公系列】2023年12月 HarmonyOS教学课程 041-Stage模型(概述和组件配置)

&#x1f3c6; 作者简介&#xff0c;愚公搬代码 &#x1f3c6;《头衔》&#xff1a;华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xf…

2024年第十四届 Mathorcup (A题)| PCI 规划问题 | 混淆矩阵 目标规划 |数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 让我们来看看Mathorcup (A题&#xff09;&#xff01; CS团队…

VBA_MF系列技术资料1-505

MF系列VBA技术资料1-505 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧&#xff0c;我参考大量的资料&#xff0c;并结合自己的经验总结了这份MF系列VBA技术综合资料&#xff0c;而且开放源码&#xff08;MF04除外&#xff09;&#xff0c;其中MF01-0…

halcon 两图叠加 显示

halcon 两图叠加 显示 代码 read_image (Image, E:/test/CameraWeldHead/二号机焊头图片.bmp) read_image (Image1, E:/test/CameraWeldHead/右1.bmp) mirror_image (Image1, ImageMirror, column)crop_part (Image, ImagePart1, 0, 0, 4096, 4096) crop_part (ImageMirror, …

【40分钟速成智能风控9】风控大数据体系

目录 ​编辑 风控大数据体系 数据源类型 征信报告 信息概要 信贷交易信息明细 公共信息明细 查询记录 消费能力 资产状况 基本信息 多头借贷 运营商 地理位置 设备属性 操作行为 风控大数据体系 数据是一切模型的基础&#xff0c;智能风控模型最大的优势&…

js性能优化(五)

第五章开始啦~~~~~~~~~~~~~ 防抖和节流之前自己有学过一次&#xff0c;包括几种方式怎么实现&#xff0c;代码如何写花了两天有写过&#xff0c;这次算是更系统的一个复习加填补 十七、防抖与节流 为什么需要防抖和节流&#xff1a; 在一些高频率事件触发的场景下我们不希望…

PSpice软件快速入门系列--如何进行AC Sweep交流扫描

背景介绍&#xff1a;PSpice仿真分析类型通常有四种&#xff0c;分别是时域分析、直流特性扫描、交流特性扫描/噪声分析、直流工作点计算。交流扫描分析是线性分析&#xff0c;可对电路性能因输入信号频率不同而变化的过程进行分析&#xff0c;获得电路的幅频响应和相频特性以及…

探索工业AI智能摄像机的卓越性能!

​ 在当今快速发展的工业智能化领域&#xff0c;上海晶珩的工业AI智能摄像机系列以其卓越的性能和多功能性在国内外备受关注&#xff08;文末有国外工程师的评测链接&#xff09;。搭载Raspberry Pi CM4支持的ED-AIC2000和ED-AIC2100系列旨在广泛应用&#xff0c;涵盖从简单的条…

俄罗斯yandex广告推广如何投放?

俄罗斯作为欧亚大陆的重要经济体&#xff0c;拥有庞大的互联网用户基数&#xff0c;其中Yandex作为该地区最主要的搜索引擎&#xff0c;无疑是触及目标客户群的关键渠道。云衔科技凭借专业优势与实战经验&#xff0c;为企业提供一站式Yandex广告开户及全程代运营解决方案&#…

MySQL 04-EMOJI 表情与 UTF8MB4 的故事

拓展阅读 MySQL View MySQL truncate table 与 delete 清空表的区别和坑 MySQL Ruler mysql 日常开发规范 MySQL datetime timestamp 以及如何自动更新&#xff0c;如何实现范围查询 MySQL 06 mysql 如何实现类似 oracle 的 merge into MySQL 05 MySQL入门教程&#xff0…

【Android surface 】二:源码分析App的surface创建过程

文章目录 画布surfaceViewRoot的创建&setView分析setViewrequestLayoutViewRoot和WMS的关系 activity的UI绘制draw surfacejni层分析Surface无参构造SurfaceSessionSurfaceSession_init surface的有参构造Surface_copyFromSurface_writeToParcelSurface_readFromParcel 总结…

从商品图到海报生成 京东广告AIGC创意技术应用

一、前言 电商广告图片不仅能够抓住消费者的眼球&#xff0c;还可以传递品牌核心价值和故事&#xff0c;建立起与消费者之间的情感联系。然而现有的广告图片大多依赖人工制作&#xff0c;存在效率和成本的限制。尽管最近 AIGC 技术取得了卓越的进展&#xff0c;但其在广告图片…

嵌入式中常用的巧妙方法 - (汇总)

概述 做项目&#xff0c;掌握以下方法&#xff0c;可提高开发效率&#xff0c;把时间全部放在需求上。 1、快速获取结构体成员大小 #include <stdio.h> // 获取结构体成员大小 #define GET_MEMBER_SIZE(type, member) sizeof(((type*)0)->member)// 获取结构体成…

2024 大模型面试指南:兄弟们,冲啊

前言 老宋这俩月又跳槽了&#xff0c;自从去年从百度出来来到新公司&#xff0c;躺了一年&#xff0c;最近因为大模型技术发展&#xff0c;重新有了奋斗的方向和动力。 大模型的诞生必然会重塑整个 NLP 方向&#xff0c;因此&#xff0c;必须参与到这波浪潮中&#xff0c;果然…

HTTP快速面试笔记(速成版)

文章目录 1. HTTP概述1.1 HTTP简介1.2 HTTP的版本1.3 URL语法简介 2. HTTP报文2.1 HTTP报文格式2.2 HTTP的方法&#xff08;Method&#xff09;2.3 HTTP响应码2.4 HTTP请求头与响应头 3. HTTPS详解3.1 HTTPS介绍3.2 与HTTPS相关的加解密知识3.3 HTTPS交互流程 参考资料 1. HTTP…

2 万字 42 道Java经典面试题总结(2024修订版)- Java集合篇

目录 1、Java中常用的集合有哪些&#xff1f;2、Collection 和 Collections 有什么区别&#xff1f;3、为什么集合类没有实现 Cloneable 和 Serializable 接口&#xff1f;4、数组和集合有什么本质区别&#xff1f;5、数组和集合如何选择&#xff1f;6、list与Set区别7、HashMa…