P1278 单词游戏 简单搜索+玄学优化

server/2024/12/22 14:15:49/

单词游戏

传送门

题目描述

Io 和 Ao 在玩一个单词游戏。

他们轮流说出一个仅包含元音字母的单词,并且后一个单词的第一个字母必须与前一个单词的最后一个字母一致。

游戏可以从任何一个单词开始。

任何单词禁止说两遍,游戏中只能使用给定词典中含有的单词。

游戏的复杂度定义为游戏中所使用的单词长度总和。

编写程序,求出使用一本给定的词典来玩这个游戏所能达到的游戏最大可能复杂度。

输入格式

输入文件的第一行,表示一个自然数 N ( 1 ≤ N ≤ 16 ) N(1 \le N \le 16) N(1N16) N N N 表示一本字典中包含的单词数量以下的每一行包含字典中的一个单词,每一个单词是由字母 AEIOU 组成的一个字符串,每个单词的长度将小于等于 100 100 100,所有的单词是不一样的。

输出格式

输出文件仅有一行,表示该游戏的最大可能复杂度。

样例 #1

样例输入 #1

5
IOO
IUUO
AI
OIOOI
AOOI

样例输出 #1

16

注明

以上来自洛谷。 以上来自洛谷。 以上来自洛谷。

解题思路

直接找题意做即可。循环遍历每一个字符串,将其设为第一个字符串,然后暴搜就行了。注意当搜索次数达到 5 × 1 0 7 5\times 10^7 5×107 时,直接输出答案并结束程序。说起来有点抽象,结合代码容易理解。

AC Code

#include<bits/stdc++.h>
using namespace std;
int n;
string s[20];
int _s[20];
bool vis[20];
int COUNT;
int Answer;
inline void dfs(int len, char c) {++COUNT;if (COUNT >= 5e7)cout << Answer, exit(0);Answer = max(Answer, len);for (register int i = 1; i <= n; ++i) {if (vis[i])continue;if (s[i][0] == c) {vis[i] = 1;dfs(len + _s[i], s[i][_s[i] - 1]);vis[i] = 0;}}
}
signed main() {cin >> n;for (register int i = 1; i <= n; ++i)cin >> s[i], _s[i] = s[i].size();for (register int i = 1; i <= n; ++i) {vis[i] = 1;dfs(_s[i], s[i][_s[i] - 1]);vis[i] = 0;}cout << Answer << endl;return 0;
}

闲话

一开始以为这题非常简单,没想到这么简单。注意到洛谷难度评级为:在这里插入图片描述
#@!&(#@&(@!$(!@&#()&*%%#&Y&&%%%#%@!&(<-开启词汇联想)

大佬 C Wx 用状压 DP 通过本题,牛炸了。


http://www.ppmy.cn/server/6542.html

相关文章

修改Ubuntu的镜像源为中科大镜像源

修改Ubuntu的镜像源为中科大镜像源 1、首先使用以下命令备份现有的镜像源&#xff1a; cd /etc/apt sudo cp sources.list sources.list.bak 2、使用以下命令打开镜像源文件&#xff1a; sudo vim /etc/apt/sources.list 3、在vim插入模式下使用以下内容替换掉原镜像…

zabbix 自动发现与自动注册 部署 zabbix 代理服务器

zabbix 自动发现&#xff08;对于 agent2 是被动模式&#xff09; zabbix server 主动的去发现所有的客户端&#xff0c;然后将客户端的信息登记在服务端上。 缺点是如果定义的网段中的主机数量多&#xff0c;zabbix server 登记耗时较久&#xff0c;且压力会较大。1.确保客户端…

idea的maven打包只有几kb

在pom.xml文件中添加以下&#xff1a; <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.3.4.RELEASE</version><configuration><!-- 指定该Main Class…

【Godot4.2】太极八卦图绘制

概述 作为中国传统文化符号之一&#xff0c;太极八卦图&#xff0c;无论是哲学还是玄学&#xff0c;都不可能避开。 之前在ShapePoints函数库实现了太极的点求取函数。当时采用的时圆弧拼接的方式&#xff0c;但是存在某些尺寸下多边形无法三角化的问题。 于是就有了今天的内…

死磕GMSSL通信-java/Netty系列(三)

死磕GMSSL通信-java/Netty系列&#xff08;三&#xff09; 接着上次的博客继续完善&#xff0c;上次其实只是客户端的改造&#xff0c;这次把服务端的也补上&#xff0c;netty集成GMSSL实现GMServer 1、netty_tcnative c代码改造&#xff0c;这个是客户端和服务端都需要都该的…

PPTist在线编辑、播放幻灯片

PPTist简介 “一个基于 Vue3.x TypeScript 的在线演示文稿&#xff08;幻灯片&#xff09;应用&#xff0c;还原了大部分 Office PowerPoint 常用功能&#xff0c;支持 文字、图片、形状、线条、图表、表格、视频、音频、公式 几种最常用的元素类型&#xff0c;每一种元素都拥…

Go 单元测试之Mysql数据库集成测试

文章目录 一、 sqlmock介绍二、安装三、基本用法四、一个小案例五、Gorm 初始化注意点 一、 sqlmock介绍 sqlmock 是一个用于测试数据库交互的 Go 模拟库。它可以模拟 SQL 查询、插入、更新等操作&#xff0c;并且可以验证 SQL 语句的执行情况&#xff0c;非常适合用于单元测试…

算法入门——二分查找

目录 1、二分模板 2、习题 1.704.二分查找 2.35.搜索插入位置 3.744. 寻找比目标字母大的最小字母 4.69. x 的平方根 5.1351. 统计有序矩阵中的负数 6.74. 搜索二维矩阵 7.34. 在排序数组中查找元素的第一个和最后一个位置 8.33. 搜索旋转排序数组 9.153. 寻找旋转排…