福州 网站建设 快搜网络/产品网络营销
上链接:P3405 [USACO16DEC] Cities and States S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P3405
上题干:
题目描述
Farmer John 有若干头奶牛。为了训练奶牛们的智力,Farmer John 在谷仓的墙上放了一张美国地图。地图上表明了每个城市及其所在州的代码(前两位大写字母)。
由于奶牛在谷仓里花了很多时间看这张地图,他们开始注意到一些奇怪的关系。例如,FLINT 的前两个字母就是 MIAMI 所在的
FL
州,MIAMI 的前两个字母则是 FLINT 所在的MI
州。
确切地说,对于两个城市,它们的前两个字母互为对方所在州的名称。我们称两个城市是一个一对「特殊」的城市,如果他们具有上面的特性,并且来自不同的省。对于总共 N 座城市,奶牛想知道有多少对「特殊」的城市存在。请帮助他们解决这个有趣的地理难题!
输入格式
输入共 N+1 行。
第一行一个正整数 N,表示地图上的城市的个数。
接下来 N 行,每行两个字符串,分别表示一个城市的名称(2∼102∼10 个大写字母)和所在州的代码(22 个大写字母)。同一个州内不会有两个同名的城市。输出格式
输出共一行一个整数,代表特殊的城市对数。
输入输出样例
输入 #1复制
6 MIAMI FL DALLAS TX FLINT MI CLEMSON SC BOSTON MA ORLANDO FL输出 #1复制
1说明/提示
数据规模与约定
对于 100%100% 的数据1≤N≤2×10^5,城市名称长度不超过 10。
这道题其中思路很简单,我们只要把每一个城市的名称的前两个字符,以及它的代号,分别存储在结构体里面,然后再遍历一遍找出所有的特殊字符就可以了。
但是,
有个问题,在我们进行上面的操作,会发现复杂度是O(n^2)的,显然无法通过本题。
所以我们必须减少无效的遍历次数。
那这样的话,我们就必须给所有的数据定义某个性质,并且使得每对特殊城市之间都满足这个性质,从而进行精确查找。
也就是说,我们只要给每个数据定义某个性质,然后只需要遍历一次,每次查询这个性质是否在之前出现过,如果出现过,第二次出现的时候,答案就++,说明多了一对,这样的特殊城市。
那么怎么定义这个性质才能只让特殊城市之间相同,
我们可以观察到,一对特殊城市,MI FA ————FA MI
只要把其中一个反过来,那么这两个标记就相同了。我们可以利用哈希表
给每个数据都定义一个独一无二的哈希值,这个哈希值就是我们所说的性质。
然后只要把代号和城市名字的前俩个字符反过来查询就可以了;
上代码:
using namespace std;
const int N = 2e5 + 10;
const int base = 27;
#define mod 1007
typedef long long LL;
int ans;
bool times = 1;
struct city {string city, id;
};
city a[N];int fn[mod][mod];int main()
{int n;cin >> n;int ans = 0;for (int i = 1; i <= n; i++){int hash1 = 0, hash2 = 0;cin >> a[i].city >> a[i].id;string t = a[i].city.substr(0, 2);for(int j=0;j<t.size();j++)hash1 = (hash1*base+a[i].city[j]) % mod;for (int j = 0; j < a[i].id.size(); j++)hash2 = (hash2 * base + a[i].id[j]) % mod;if (hash1 != hash2){fn[hash1][hash2]++;ans += fn[hash2][hash1];}}cout << ans;
}
相关文章:

《洛谷深入浅出基础篇》——P3405 citis and state ——哈希表
上链接:P3405 [USACO16DEC] Cities and States S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P3405 上题干: 题目描述 Farmer John 有若干头奶牛。为了训练奶牛们的智力,Farmer John 在谷仓的墙上放了一…...

在QGIS中加载显示3DTiles数据
“我们最近有机会在QGIS 3.34中实现一个非常令人兴奋的功能–能够以“Cesium 3D Tiles”格式加载和查看3D内容!” ——QGIS官方的 宣传介绍。 体验一下,感觉就是如芒刺背、如坐针毡、如鲠在喉。 除非我电脑硬件有问题,要么QGIS的3Dtiles是真…...

HBase学习笔记(3)—— HBase整合Phoenix
目录 Phoenix Shell 操作 Phoenix JDBC 操作 Phoenix 二级索引 HBase整合Phoenix Phoenix 简介 Phoenix 是 HBase 的开源 SQL 皮肤。可以使用标准 JDBC API 代替 HBase 客户端 API来创建表,插入数据和查询 HBase 数据 使用Phoenix的优点 在 Client 和 HBase …...

CentOS 7上生成HTTPS证书
在CentOS 7上生成HTTPS证书,可以使用OpenSSL工具。以下是在CentOS 7上生成自签名HTTPS证书的步骤: 安装OpenSSL: sudo yum install openssl生成证书和私钥: openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ssl.…...

解决React遍历每次渲染多个根元素导致无法为元素赋值key的问题
遍历时,存在多个根标签,如果使用<></>无法正确赋值key,代码如下: function App() {const list [{ id:1, name:"小明" },{ id:2, name:"小田" },{ id:3, name:"小王" }]const listCon…...

2023年软件安装管家目录最新
软件目录 ①【电脑办公】电脑系统(直接安装)Win7Win8Win10OfficeOffice激活office2003office2007office2010office2013office2016office2019office365office2021wps2021Projectproject2007project2010project2016project2019project2013project2021Visio…...

mac苹果笔记本应用程序在哪?有什么快捷方式吗?
苹果笔记本电脑一直以来都被广泛使用,而苹果的操作系统 macOS 也非常受欢迎。一台好的笔记本电脑不仅仅依赖于硬件配置,还需要丰富多样的应用程序来满足用户的需求。苹果笔记本应用程序在哪,不少mac新手用户会有这个疑问。在这篇文章中&#…...

py 循环打开多个页面
在Python中,你可以使用selenium库来循环打开多个页面并进行场控。Selenium是一个用于网页自动化测试的工具,它能够模拟用户与网页交互的操作,如点击、输入等。 以下是一个基本的示例代码,演示如何使用Selenium循环打开多个页面并…...

AD教程 (十八)导入常见报错解决办法(unkonw pin及绿色报错等)
AD教程 (十八)导入常见报错解决办法(unkonw pin及绿色报错等) 常见报错解决办法 绿色报错 可以先按TM,复位错位标识绿色报错原因一般是由于规则冲突的原因,和规则冲突就会报错 点击工具,设计…...

ubuntu22.04下hadoop3.3.6+hbase2.5.6+phoenix5.1.3开发环境搭建
一、涉及软件包资源清单 1、java 这里使用的是openjdk 2、hadoop-3.3.6.tar.gz 3、hbase-2.5.6-hadoop3-bin.tar.gz 4、phoenix-hbase-2.5-5.13-bin.tar.gz 5、apache-zookeeper-3.8.3-bin.tar.gz 6、openssl-3.0.12.tar.gz 二、安装 1、操作系统环境准备 换源 sudo vim /et…...

【随手记】python语言的else语句在for、while等循环语句中的运用
在Python中,else语句可以与if语句一起使用,用于处理条件不成立时的情况。但是,else语句也可以与循环结构(如for循环、while循环)一起使用,用于处理循环正常结束时的情况,即循环没有被break语句中…...

RK3568 + YT 9215交换机芯片,MAC TO MAC 调试记录
前言 原来的方案是rk3568 gmac 直接接phy,phy 接 switch 芯片,只是把交换芯片当交换用,驱动方面基本不用开发,但是要做vlan 那么必须涉及交换芯片的开发。 选择裕太微有两个方面的原因:1.国产化替代2.可获得原厂技术支持3.目前已经完成 两个gmac 口交换芯片的配置,实现v…...

Flutter笔记:桌面端应用多窗口管理方案
Flutter笔记 桌面端应用多窗口管理方案 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/134468587 【简介…...

demo(三)eurekaribbonhystrix----服务降级熔断
一、介绍: 1、雪崩: 多个微服务之间调用的时候,假如微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的"扇出"。如果扇出的链路上某个微服务的调用响应的时间过长或者不可用&am…...

相机突然断电,保存的DAT视频文件如何修复
3-7 本文主要解决因相机突然断电导致拍摄的视频文件损坏的问题。 在平常使用相机拍摄视频,比如用单反相机、无人机拍摄视频的时候,如果电池突然断电,或者突然炸机了,就非常有可能会得到一个损坏的视频文件,比如会产生…...

【数据结构与算法篇】顺序栈的C++实现
如何用C实现一个顺序栈 数据结构 -- 栈的简介顺序栈 - 结构体的定义顺序栈的初始化顺序栈的销毁入栈出栈获取栈顶元素判断顺序栈是否为空返回顺序栈中元素的个数 数据结构 – 栈的简介 栈是插入和删除遵循先进后出原则的一种容器。 也是一种线性表对象存放在栈, 可以…...

阿里云ESSD云盘、高效云盘和SSD云盘介绍和IOPS性能参数表
阿里云服务器系统盘或数据盘支持多种云盘类型,如高效云盘、ESSD Entry云盘、SSD云盘、ESSD云盘、ESSD PL-X云盘及ESSD AutoPL云盘等,阿里云服务器网aliyunfuwuqi.com详细介绍不同云盘说明及单盘容量、最大/最小IOPS、最大/最小吞吐量、单路随机写平均时延…...

VSG-001
VulkanSceneGraph (VSG), is a modern, cross platform, high performance scene graph library built upon Vulkan VSG 是一个基于vulkan的现代的、跨平台的高性能场景管理库 VSg特性: 使用C17作为c规范编码,支持 CppCoreGuidelines支持 FOSS Best P…...

Smart Tomcat的使用
文章目录 Smart Tomcat的作用Smart Tomcat的安装Smart Tomcat的配置Smart Tomcat的启动 Smart Tomcat的作用 我们知道使用Servlet来完成一个项目一共需要七个步骤,即创建maven项目、添加依赖、创建目录结构、编写代码、打包程序、部署程序、验证程序。这样的确是完…...

vue3 TS数据处理常见错误分析:列表变为对象的错误如何处理
注意点1: return 语句无法跳出foreach()循环;return语句可以跳出For()循环。 注意点2:预防 [ ]变为object 后端前端之间传值如果为空的时候,数组会被变成空对象,如何解决呢? 描述:父传子 att…...

Hive效率优化记录
Hive是工作中常用的数据仓库工具,提供存储在HDFS文件系统,将结构化数据映射为一张张表以及提供查询和分析功能。 Hive可以存储大规模数据,但是在运行效率上不如传统数据库,这时需要懂得常见场景下提升存储或查询效率的方法&#x…...

⑩③【MySQL】详解SQL优化
个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ SQL优化 ⑩③【MySQL】了解并掌握SQL优化1. 插…...

SQL 的 AND、OR 和 NOT 运算符:条件筛选的高级用法
AND 运算符 SQL的AND运算符用于根据多个条件筛选记录,确保所有条件都为TRUE才返回记录。下面是AND运算符的基本语法: SELECT column1, column2, ... FROM table_name WHERE condition1 AND condition2 AND condition3 ...;column1, column2,等是您要选…...

11.5MyBatis(进阶)
一.${}和#{} 1.$是直接替换,#是预处理(使用占位符,替换成?).前者不安全(SQL注入), 后者安全. 2.$的使用场景: 如果传递的值是sql的关键字,只能使用$,不能使用#(asc,desc). 二.SQL注入 注意: 如果使用${}进行传参,一定要是可以穷举的,并且要进行安全性验证(例如排序,只能传a…...

CentOS挂载:解锁文件系统的力量
目录 引言1 挂载简介2 挂载本地分区3 挂载网络共享文件系统4 使用CIFS挂载结论 引言 在CentOS(一种基于Linux的操作系统)上挂载文件系统是一项常见而重要的任务,无论是将新的磁盘驱动器添加到系统,还是挂载网络共享资源ÿ…...

修身养性 - 阿纳托利: 健身指导
欢迎来到我的力量建设培训计划。这是一个介绍性视频,我会对训练项目、技巧和计划进行解释。我每天都在练习英语,但还不够好,所以下面使用了自动翻译。带来不便请原谅。 Welcome to my power building training program. Its an introduction video where I explained about …...

pip anaconda 设置 国内镜像源
一、pip设置国内(清华)镜像源和升级pip 使用下面的命令直接使用清华镜像源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simplepython -m pip install --upgrade pip #备选 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云&am…...

三江城115m²3室2厅2卫,现代简约不单是居所更是对生活的向往。福州中宅装饰,福州装修
【前言】 简洁有力,静默无声。 以简约精致的方式,展现现代都市生活; 经典不因潮流褪色,不为悦人只为悦己。 项目信息 项目名称 | 三江城 设计地址 | 福建福州 项目面积 | 115㎡ 项目户型 | 3室2厅 设计风格 | 现代简约 全…...

Hangfire.Pro 3.0 Crack
Hangfire.Pro 有限的存储支持 Hangfire Pro 是一组扩展包,允许使用批处理创建复杂的后台作业工作流程,并提供对超快速Redis作为作业存储的支持 请注意,仅在使用Hangfire.SqlServer、Hangfire.Pro.Redis或Hangfire.InMemory包作为作业存储时才…...

axios的使用,cancelToken取消请求
get请求 // 为给定 ID 的 user 创建请求 axios.get("/user?ID12345").then(function (response) {console.log(response);}).catch(function (error) {console.log(error);}); // 上面的请求也可以这样做 axios.get("/user", {params: {ID: 12345,},}).t…...