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

P1341 无序字母对

一开始看这题,就鸽了,直到寒假才开始正式的写代码,后来在Oi-wiki上自习了欧拉图,看大佬的博客,终于写出来。一道欧拉板子题,但稍有改动。


  1. 首先一开始,我想到的是爆搜,但很快否决掉了,我们可以看一下这幅图。

    我们可以列出以下字母对
aXtza
aZtXa
XtZaX
XaZtX
tZaXt
tXaZt
ZaXtz
ZtXaZ

其中XaZtX便是答案,我们就可以得到一个思路,先搜索出所有的字母对,再在其中找字典序最小的。
不过我们可以从字典序最小的搜,这样搜索出的第一条字母对就是答案。


  1. 然后我们引入几个概念。
  • 欧拉图:可以从其中一点出发,不重复的走完所有点。
  • 欧拉回路:可以从其中一点出发,不重复的走完所有点,并且回到了原点。

由此我们发现欧拉回路是一种特殊的欧拉路,而我们上面的图就是一个欧拉回路。但是题目中有无解情况,所以我们要判断无解,那什么是无解,就是该图不是欧拉图的时候,那么怎么判断是不是欧拉图呢?

  • 欧拉图是联通的。
  • 对于无向欧拉图有0或2个点的边是奇数(有0个点的边是奇数,代表该图是欧拉回路,有两个点代表这两个点是终点或起点)。

符合以上条件的就是欧拉图,就是有解。


  1. 总体思路就是首先以字母为节点,在用邻接矩阵存图,判断是否为欧拉图,找到字典序最小的,继续dfs在它连着的节点中字典序最小的,直到dfs整个图,所走过的节点便是答案。

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int n,v[1000][1000],dre[1000],start=1001,cnt;
char a,b;
vector<int>ans;
string error="No Solution";
void dfs(int x){for(int i=0;i<1000;++i){//从字典序小的开始搜索if(v[x][i]){v[x][i]=v[i][x]=0;dfs(i);}}ans.push_back(x);//将答案放进vector
}
int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a>>b;int c,d;c=a-'A';//改成数字,方便操作。d=b-'A';v[c][d]=v[d][c]=1;//增加边。dre[d]++;dre[c]++;//读书加1。}for(int i=0;i<1000;++i){if(dre[i]&1){//该点度数是奇数cnt++;//记录奇数点个数start=min(start,i);//找最小字典序。}}if(cnt!=0&&cnt!=2){//判读无解cout<<error;return 0;}if(cnt==0){//如奇数点是0,则是欧拉回路。for(int i=0;i<1000;++i){if(dre[i]){//找一个字典序最小,有边就可以当起点。start=i;break;}}}dfs(start);//搜索for(int i=ans.size()-1;i>=0;i--){cout<<char(ans[i]+'A');//倒序输出}return 0;
}

End

愿大家OI越学越好,AKIOI,我的2024新年第一道题。

2024/1/12 wjr编写。

http://www.jsqmd.com/news/351033/

相关文章:

  • DeepSeek-OCR 2上线魔乐社区,让AI像人一样读文档
  • 2026年产品管理系统测评:对比选型避坑+能力模型评分
  • 豆包可以做广告吗?2026如何通过豆包AI推广获客? - 品牌2025
  • 魔乐上新 | PaddleOCR-VL-1.5发布问鼎双榜,0.9B小钢炮攻克“曲面”文档!
  • 基于单片机的汽车多参数安全检测与报警环境设计
  • LeetCode 3634.使数组平衡的最少移除数目:滑动窗口+优化(一次二分查找+剪枝)
  • 某中心与高校成立AI-ML联合研究计划
  • 从零开始:用Redis构建大数据实时分析系统的完整指南
  • Claude Code CLI 接入Kimi K2.5模型
  • 代价函数,矩阵的计算
  • algo
  • 2026国自然申请书模板大改版,科研人员如何应对?
  • 数据库容器和 Kubernetes 演进
  • 算法学习——素数筛法
  • 凝胶过滤层析
  • 每位漏洞赏金猎手必用的十大必备工具
  • 多糖纯化干货指南
  • 物联网传感器数据:大数据分析的黄金矿藏
  • JEX优化发展路径,数字金融平台进入深度建设期
  • P1775 石子合并(弱化版)
  • AI应用架构师晋升路径:技术专家 vs 管理路线,该怎么选?
  • 2026年如何选择最优质的加密软件与数据防泄露系统服务商进行评测? - 睿易优选
  • JEX强化基础结构,应对全球数字资产环境变化
  • LocalDate,LocalDateTime,Date,日期串相互转换
  • AT_abc360_c [ABC360C] Move It
  • 免密批量抓取日志并集中输出
  • P1057 [NOIP2008 普及组] 传球游戏 题解
  • CANN 生态安全基石:`cann-security-module` 如何构建可信 AI 执行环境
  • 备考2026执医,新课程推荐哪一个? - 医考机构品牌测评专家
  • Spring AI Alibaba 核心组件