1 条题解
-
0
自动搬运
来自洛谷,原作者为

NKU_AI_HMX
New start......搬运于
2025-08-24 21:48:40,当前版本为作者最后更新于2020-04-26 22:11:24,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
这篇题解主要为不太清楚map用法的同学服务,这题用数组即可。(不会map还是尽快学会,可问度娘,或者写一下线性表)
主体思路和楼下楼上的大佬一样,先读取输入的两个字符串,然后选取他们各自的第一位第二位组成一个26进制数,然后通过判断数是否相等来判断是否符合要求,这里需注意,城市前两个字母和省的字母相同的情况。
#include<bits/stdc++.h> using namespace std; int city[676][676], n, x, y, ans;//x表示城市前两个字母的26进制下的数,y是省份的。数相等则对应的省的两个字母和城市的前两个字母就相等。 int main() { string a, b; cin>>n; for(int i=0;i<n;i++) { cin>>a>>b; x = (a[0] - 'A') * 26 + a[1] - 'A';//不减的话数据太大,数组开不了那么大(map的优势) y = (b[0] - 'A') * 26 + b[1] - 'A'; if (x != y) {//x==y的话如果要配对的话只会配到自己省。题目说了不在同一省,所以要排除。 city[x][y]++; ans += city[y][x]; } } cout<<ans; return 0; }
- 1
信息
- ID
- 2441
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者