Bandwidth(UVA 140)

网址如下:

Bandwidth - UVA 140 - Virtual Judge (vjudge.net)

(第三方网站)

现在回想一下,我用的IDcache法好像不如用一个集合记录本次出现的结点来用

这样就可以按照字典序遍历,只有遇到带宽更小的才复制,就不用考虑带宽相等时比较字典序的问题了

代码如下:

#include<cstdio>
#include<vector>
#include<map>
#include<cstring>
#include<cctype>
using namespace std;
const int maxwid = 70;
const int maxnode = 8;
int ans[maxnode], A[maxnode], minwid = maxwid, cnt;
char c_ans[maxnode];
bool G[maxnode][maxnode], vis[maxnode];
vector<char> Ccache;
map<char, int> IDcache;int ID(char c){if(IDcache.count(c)) return IDcache[c];Ccache.push_back(c);return IDcache[c] = Ccache.size() - 1;
}
bool scanf_input(void){char c = getchar(); if(c == '#') return false;do{char u = c; getchar();while(isalpha(c = getchar())){char v = c;G[ID(u)][ID(v)] = G[ID(v)][ID(u)] = true;}}while((c != '\n') && (c = getchar()));cnt = Ccache.size();return true;
}
void get_ans(int cur, int wid){for(int i = 0; i < cur - 1; i++){if(G[A[i]][A[cur - 1]]) wid = (wid > cur - i - 1) ? wid : cur - i - 1;if(wid > minwid) return;}if(cur == cnt){char c_A[maxnode];for(int i = 0; i < cnt; i++) c_A[i] = Ccache[A[i]];if(minwid == wid){if(memcmp(c_ans, c_A, sizeof(c_A)) > 0){memcpy(c_ans, c_A, sizeof(c_A)); memcpy(ans, A, sizeof(A));}}else{minwid = wid; memcpy(c_ans, c_A, sizeof(c_A)); memcpy(ans, A, sizeof(A));}}else{for(int i = 0; i < cnt; i++)if(!vis[i]){A[cur] = i;vis[i] = true;get_ans(cur + 1, wid);vis[i] = false;}}
}//记得考虑字典序
void print_ans(void){for(int i = 0; i < cnt; i++){if(i) putchar(' ');printf("%c", Ccache[ans[i]]);}printf(" -> %d\n", minwid);
}
inline void initialize(void){memset(G, 0, sizeof(G)); memset(vis, 0, sizeof(vis)); minwid = maxwid;Ccache.clear(); IDcache.clear();
}int main(void)
{while(scanf_input()){get_ans(0, 0);print_ans();initialize();}return 0;
}

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

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

相关文章

【C++ STL有序关联容器】map 映射

文章目录 【 1. 基本原理 】【 2. map 的创建 】2.1 调用默认构造函数&#xff0c;创建一个空的 map2.2 map 被构造的同时初始化2.3 通过一个 map 初始化另一个 map2.4 取已建 map 中指定区域内的键值对&#xff0c;初始化新的 map2.5 指定排序规则 【 2. map 元素的操作 】实例…

Bioorganic Chemistry:中国药科大学王鹏课题组、陈俊青课题组设计的基于AIE机理的高荧光选择性鉴定Cys/HCy

文献来源&#xff1a;Highly selective fluorescent probe based on AIE for identifying cysteine/homocysteine - PubMed (nih.gov) 一、AIE机理在荧光探针设计方向的应用&#xff1a; 参考文献&#xff1a;几种代表性的AIE的发光特点和机制&#xff08;2020-10-11&#xff…

antdPro运行

使用antd-pro脚手架搭建react ts项目_antd pro react-CSDN博客 npm run start

车载蓝牙通道类型

作为一名蓝牙应用开发工程师&#xff0c;了解蓝牙连接的处理流程以及不同蓝牙通道和音频类型是非常重要的。下面是关于连接手机和汽车蓝牙的处理流程以及相关概念的简要说明&#xff1a; 1.蓝牙连接流程 手机和汽车之间的蓝牙连接通常涉及以下步骤&#xff1a; 1.1 手机和汽车…

PostgreSQL入门到实战-第六弹

PostgreSQL入门到实战 PostgreSQL查询语句(三)官网地址PostgreSQL概述PostgreSQL中ORDER BY理论PostgreSQL中ORDER BY实操更新计划 PostgreSQL查询语句(三) 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://www.post…

蓝桥杯刷题--RDay5

清理水域--枚举 8.清理水域 - 蓝桥云课 (lanqiao.cn)https://www.lanqiao.cn/problems/2413/learning/?page1&first_category_id1&second_category_id3&tags2023 小蓝有一个n m大小的矩形水域&#xff0c;小蓝将这个水域划分为n行m列&#xff0c;行数从1…

Docker入门指南:从安装到基本操作和镜像构建的全面教程

文章目录 一、Docker简介二、Docker的安装三、Docker的基本概念四、Docker的基本操作五、Dockerfile和镜像构建六、总结 一、Docker简介 Docker是一个开源的应用容器引擎&#xff0c;它允许开发者将应用程序及其依赖项打包到一个可移植的容器中&#xff0c;然后在任何支持Dock…

人民网至顶科技:《开启智能新时代:2024中国AI大模型产业发展报告发布》

​3月26日&#xff0c;人民网财经研究院与至顶科技联合发布《开启智能新时代&#xff1a;2024年中国AI大模型产业发展报告》。该报告针对AI大模型产业发展背景、产业发展现状、典型案例、挑战及未来趋势等方面进行了系统全面的梳理&#xff0c;为政府部门、行业从业者以及社会公…

如何避免儿童校园霸凌:羊大师为您支招

校园应是学习和成长的乐土&#xff0c;而非恐惧和伤害的源泉。**在这个追求和谐社会的时代&#xff0c;校园霸凌问题依然是一个亟需解决的社会现象。羊大师作为关心儿童成长的一员&#xff0c;今天将为家长和教育工作者提供一些实用建议&#xff0c;帮助孩子避免成为校园霸凌的…

KMP算法Java实现

KMP算法Java实现 KMP算法简介 KMP算法是一种高效的字符串匹配算法&#xff0c;核心是利用匹配失败后的信息&#xff0c;尽量减少模式串与主串的匹配次数已达到快速匹配的目的。通过一个next()函数实现&#xff0c;该函数包含了模式串的局部匹配信息&#xff0c;KMP算法的时间复…

Python Selenium UI自动化测试

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

locked勒索病毒:变种_locked袭击了您的计算机?

导言&#xff1a; ._locked勒索病毒&#xff0c;一种近年来日益猖獗的网络安全威胁&#xff0c;已经引起了全球范围内的广泛关注。该病毒通过电子邮件附件、恶意网站和漏洞利用等多种方式传播&#xff0c;一旦感染系统&#xff0c;就会加密受感染设备上的所有文件&#xff0c;…

IO-DAY8

使用消息队列去实现2个终端之间的互相聊天 要求:千万不要做出来2个终端之间的消息发送是读一写的&#xff0c;一定要能够做到&#xff0c;一个终端发送n条消息&#xff0c;另一个终端一条消息都不回复 A终端&#xff1a; #include<myhead.h> typedef struct msgbuf {lon…

Vite 中配置压缩代码体积

在 Vite 中配置压缩代码体积可以使用插件 vite-plugin-compress。以下是在 vite.config.js 中配置压缩代码体积的步骤: 安装 vite-plugin-compress 插件: npm install vite-plugin-compress --save-dev在 vite.config.js 中配置 vite-plugin-compress 插件: import { def…

python:笨小猴

文章目录 前言一、题意输入格式:输出格式: 二、代码1.代码的实现2.读入数据 前言 本题复习了素数的判断以及count函数求数列中某个元素的个数的使用 一、题意 笨小猴的词汇量很少&#xff0c;所以每次做英语选择题的时候都很头疼。但是他找到了一种方法&#xff0c;经试验证明…

设计模式学习笔记 - 设计模式与范式 -行为型:8.状态模式:游戏、工作流引擎中常用的状态机是如何实现的?

概述 本章学习状态模式。在实际的开发中&#xff0c;状态模式并不是很常用&#xff0c;但是在能够用到的场景里&#xff0c;它可以发挥很大的作用。从这一点上看&#xff0c;它有点像我们之前讲到的组合模式。 状态模式一般用来实现状态机&#xff0c;而状态机常用在游戏、工…

sqlite建立数据库

在做一些简单的实验项目的时候&#xff0c;sqlite比较好用&#xff08;MacOS验视环境&#xff09;。相关包下载网页&#xff1a;https://www.sqlite.org/download.html 1 创建数据文件目录 cd /<project_path> mkdir database cd /database2 创建数据库 在当前目录&am…

【C++】用红黑树封装map和set

我们之前学的map和set在stl源码中都是用红黑树封装实现的&#xff0c;当然&#xff0c;我们也可以模拟来实现一下。在实现之前&#xff0c;我们也可以看一下stl源码是如何实现的。我们上篇博客写的红黑树里面只是一个pair对象&#xff0c;这对于set来说显然是不合适的&#xff…

基于JAVA的汽车售票网站论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对汽车售票信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差…

挑战30天C++基本入门(DAY13--搜索与回溯)

#我们在DFS的搜索学习中涉及到了回溯的操作&#xff0c;那什么是回溯呢&#xff1f; 就是说我们在标记数组之后&#xff0c;我们进行解标记的操作&#xff0c;同时再次进入递归&#xff0c;出现新的情况的操作&#xff0c;这就叫做回溯操作。 如果现在有这样一道题&#xff1a…