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

题解:洛谷 P3405 [USACO16DEC] Cities and States S

【题目来源】

洛谷:[P3405 USACO16DEC] Cities and States S - 洛谷

【题目描述】

Farmer John 有若干头奶牛。为了训练奶牛们的智力,Farmer John 在谷仓的墙上放了一张美国地图。地图上表明了每个城市及其所在州的代码(前两位大写字母)。

由于奶牛在谷仓里花了很多时间看这张地图,他们开始注意到一些奇怪的关系。例如,FLINT 的前两个字母就是 MIAMI 所在的 FL 州,MIAMI 的前两个字母则是 FLINT 所在的 MI 州。
确切地说,对于两个城市,它们的前两个字母互为对方所在州的名称。

我们称两个城市是一个一对「特殊」的城市,如果他们具有上面的特性,并且来自不同的州。对于总共 \(N\) 座城市,奶牛想知道有多少对「特殊」的城市存在。请帮助他们解决这个有趣的地理难题!

【输入】

输入共 \(N + 1\) 行。

第一行一个正整数 \(N\),表示地图上的城市的个数。
接下来 \(N\) 行,每行两个字符串,分别表示一个城市的名称(\(2 \sim 10\) 个大写字母)和所在州的代码(\(2\) 个大写字母)。同一个州内不会有两个同名的城市。

【输出】

输出共一行一个整数,代表特殊的城市对数。

【输入样例】

6
MIAMI FL
DALLAS TX
FLINT MI
CLEMSON SC
BOSTON MA
ORLANDO FL

【输出样例】

1

【解题思路】

image

【算法标签】

《洛谷 P3405 Cities and States》 #USACO# #2016#

【代码详解】

#include <bits/stdc++.h>
using namespace std;
int n, ans=0;
string s, s1, s2, a[200005], b[200005];
map<string, int> m;
int main()
{cin >> n;  // 输入nfor (int i=1; i<=n; i++) {  // 遍历n对字符串cin >> s >> s2;  // 输入城市和州s1 = s.substr(0, 2);  // 城市取前2个字符a[i] = s1+s2;  // 拼接成a[i]和b[i]b[i] = s2+s1;m[a[i]]++;  // 统计a[i]的个数}for (int i=1; i<=n; i++) {  // 所以所有字符串对if (a[i]==b[i]) continue;  // 因为同一个州不会有两个同名的城市,所以a[i]不能等于b[i]ans += m[a[i]]*m[b[i]];  // 用a[i]的个数乘以b[i]的个数m[a[i]] = 0;  // 乘完一次后,后面再遇到a[i],不再重复计算}cout << ans << endl;return 0;
}
#include <bits/stdc++.h>
using namespace std;int n;                  // 输入的关系对数
int ans;                // 统计的互相关注对数
int x, y;               // 临时变量,存储用户ID的哈希值
int a[700][700];        // 邻接矩阵,记录关注关系
string s, c;            // 临时存储输入的用户名/*** 将2字母用户名转换为哈希值* @param s 2字母的用户名* @return 对应的哈希值(0-675)*/
int myhash(string s)
{int code = 0;for (int i = 0; i < 2; i++){code = code * 26 + (s[i] - 'A');  // 26进制转换}return code;
}int main()
{// 输入关系对数cin >> n;// 处理每对关系for (int i = 0; i < n; i++) {cin >> c >> s;// 计算两个用户的哈希IDx = myhash(c);y = myhash(s);// 如果是自关注则跳过if (x == y) {continue;}// 记录x关注y的关系a[x][y]++;// 如果之前y已经关注过x,则形成互相关注ans += a[y][x];}// 输出互相关注的总对数cout << ans;return 0;
}

【运行结果】

6
MIAMI FL
DALLAS TX
FLINT MI
CLEMSON SC
BOSTON MA
ORLANDO FL
1
http://www.jsqmd.com/news/391827/

相关文章:

  • CSS 中的高度、滚动与溢出:从 height 到 overflow 的完整理解 - 实践
  • 高压直流输电Matlab/simulink仿真。 采用三电平换流器。 整流侧采用直流电压外环+...
  • 京东e卡回收正规平台价格如何,怎么选择? - 京顺回收
  • 闭眼入!MBA专属降AI率软件 —— 千笔·降AI率助手
  • 亲测好用!AI论文工具 千笔AI VS 知文AI,研究生写作神器!
  • 题解:洛谷 P5250 【深基17.例5】木材仓库
  • 照着用就行:千笔·降AIGC助手,继续教育论文降重神器!
  • 别再瞎找了!AI论文软件 千笔ai写作 VS 知文AI,专科生专属神器!
  • Backtrader平台下指数期权备兑策略回测完成
  • 学霸同款!万众偏爱的AI论文写作软件 —— 千笔写作工具
  • 评测三边封拉链袋,2026年这些厂商值得信赖,四边封包装袋/聚酯尼龙袋/三边封拉链袋,三边封拉链袋直销厂家排行榜 - 品牌推荐师
  • P1563 玩具谜题
  • 每次编译之后,写的代码都会消失
  • 2026年深圳好口碑氮化铝陶瓷片品牌推荐榜单 - 睿易优选
  • 协同过滤算法的Thinkphp和Laravel框架的大学生个性化兼职信息推荐系统的设计与实现
  • Thinkphp和Laravel框架的在线考试管理系统的设计与实现前台329fgzk
  • 什么是反向传播(Backpropagation,简称 BP)?
  • Thinkphp和Laravel框架的有声漫画售卖商城
  • 生产环境使用Pandas进行数据分析:从数据清洗到可视化最佳实践与性能优化
  • Thinkphp和Laravel框架汽修店汽车维修预约系统设计与实现
  • Thinkphp和Laravel框架汽车租赁业务员租聘系统设计与实现
  • Thinkphp和Laravel框架游戏商城销售分析网站设计与实现
  • Thinkphp和Laravel框架技术的体育足球篮球赛事安排运动员管理系统咨询平台设计
  • Thinkphp和Laravel框架技术的农产品购物商城网站助农管理系统的设计与实现
  • Thinkphp和Laravel框架摄影约拍系统的设计与实现聊天
  • PDF 修复
  • 2026负债人上岸指南|全国专业逾期处理律所实测推荐,信用卡逾期推荐协商律所 - 代码非世界
  • LeetCode693:交换二进制位
  • 装修必看:如何甄选窗纱一体铝门窗的可靠厂家,平移断桥提升窗/侧压平移推拉窗/铝门窗/慕莎尼奥门窗/门窗,铝门窗厂家排行 - 品牌推荐师
  • 深度学习项目训练环境效果展示:自动校验数据集完整性(图片损坏/尺寸异常)