P3405 [USACO16DEC]Cities and States省市

题目描述

To keep his cows intellectually stimulated, Farmer John has placed a large map of the USA on the wall of his barn. Since the cows spend many hours in the barn staring at this map, they start to notice several curious patterns. For example, the cities of Flint, MI and Miami, FL share a very special relationship: the first two letters of "Flint" give the state code ("FL") for Miami, and the first two letters of "Miami" give the state code ("MI") for Flint.

Let us say that two cities are a "special pair" if they satisfy this property and come from different states. The cows are wondering how many special pairs of cities exist. Please help them solve this amusing geographical puzzle!

为了让奶牛在智力上受到刺激,农夫约翰在谷仓的墙上放了一张美国地图。由于奶牛在谷仓里花了很多时间盯着这张地图,他们开始注意到一些奇怪的关系。例如,城市Flint,在MI省,或者Miami在FL省,他们有一种特殊的关系:“Flint”市前两个字母就是“FL”省,迈阿密前两个字母是“MI”省。

让我们说,两个城市是一个“特殊的一对”,如果他们满足这个属性,来自不同的省。奶牛想知道有多少特殊的城市存在。请帮助他们解决这个有趣的地理难题!

输入输出格式

输入格式:

The first line of input contains NN (1 \leq N \leq 200,0001≤N≤200,000), the number ofcities on the map.

The next NN lines each contain two strings: the name of a city (a string of at least 2 and at most 10 uppercase letters), and its two-letter state code (a string of 2 uppercase letters). Note that the state code may be something like ZQ, which is not an actual USA state. Multiple cities with the same name can exist, but they will be in different states.

输入的第一行包含(),地图上的城市数量。

下一行包含两个字符串:一个城市的名称(字符串至少2个最多10个大写字母),和它的两个字母的州代码(一串2个大写字母)。注意状态代码可能像ZQ,这并不是一个真正的美国。同一名称的多个城市可以存在,但它们将处于不同的州。

输出格式:

Please output the number of special pairs of cities.

请输出特殊城市对数。

输入输出样例

输入样例#1:

6
MIAMI FL
DALLAS TX
FLINT MI
CLEMSON SC
BOSTON MA
ORLANDO FL
输出样例#1:

1
/*
样例可以直接看成下面这个样子的: MIFL
DATX
FLMI
CLSC
BOMA
ORFL
如果有满足题意,那么就是MIFL 和 FLMI,那么,这里的有效数据只有四个字母,那么每一行我们就可以看作一个 四位26进制数!! 维护两个数组,一个hash1[456976],一个hash1[456976],具体456976是什么意思,是因为如果我们将A看做0,B看做1……Z看做25,那么最小的数AAAA=0,就是最大的数就是ZZZZ=((25*26+25)*26+25)*26+25=456975。那么,问题轻易解出——hash1表示原来的数,hash2表示市编号和州编号翻转后的表示的数。然后循环一遍,算出答案。注意此时算出的答案是两倍的,因为每个算了两遍。
*/
#include<iostream>
#include<cstdio>
using namespace std;
#define maxn 26*26*26*27
int n,h1[maxn],h2[maxn];
char s1[],s2[];
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%s%s",s1+,s2+);
if(s1[]!=s2[]||s1[]!=s2[]){
int x1=(((s1[]-'A')*+s1[]-'A')*+s2[]-'A')*+s2[]-'A';
int x2=(((s2[]-'A')*+s2[]-'A')*+s1[]-'A')*+s1[]-'A';
h1[x1]++;h2[x2]++;
}
}
long long ans=;
for(int i=;i<maxn;i++)ans+=h1[i]*h2[i];
ans/=;
cout<<ans;
}

最新文章

  1. Android项目实战(二十四):项目包成jar文件,并且将工程中引用的jar一起打入新的jar文件中
  2. 修改Firefox的User-Agent,伪装修改秘籍
  3. 使用WPF动态生成Code 39条形码
  4. zend studio 使用总结
  5. Linux 常用命令笔记 (持续更新)
  6. SQL SERVER安装序列号
  7. SharePoint Client Object Model API 介绍以及工作原理解析
  8. Qt lcdNumber 不能显示完整时间
  9. iOS 各尺寸iPhone分辨率
  10. css兼容问题与实践归纳总结
  11. ThinkPHP 3.1.2 URL&lt;1&gt;
  12. HBase集群安装
  13. 通过JQuery实现Ajax代码
  14. jenkins 简单实现php集成上线部署
  15. matplotlib设置中文标签
  16. 【Leetcode】无重复字符的最长子串
  17. vue-element-dialog使用
  18. 安装 mysql5.7.2 (Ubuntu 16.04 desktop amd64)
  19. Java Swing:JPanel中添加JPanel
  20. BugPhobia发布篇章:学霸在线系统正式发布

热门文章

  1. (转).NET基础拾遗(5)多线程开发基础
  2. 基于ajax的登录
  3. UVA - 11954 Very Simple Calculator 【模拟】
  4. PAT 甲级 1005. Spell It Right (20) 【字符串】
  5. 近200篇机器学习&amp;深度学习资料分享【转载】
  6. P5105 不强制在线的动态快速排序
  7. vector缩减容量
  8. mini2440移植uboot 2011.03(下)
  9. 2048plus,可以直接分享到微信的2048
  10. bzoj5213: [Zjoi2018]迷宫