5 solutions
-
1
题意
求出有 多少对在 a州,b州 中 a州有b的城市(与b州名字相同) b州有a的城市(与a州名字相同) 的数量
思路
还是map大佬
代码
#include<iostream> #include<map> #include<string> using namespace std; map<string,int>m;//存储市和州的对数 int sum=0; int main() { int n; cin>>n;//输入 for(int i=0;i<n;i++) { string a,s,b; cin>>s>>b;//输入 a+=s[0];//截取 a+=s[1];//截取 if(a!=b) { sum+=m[a+b];//类似记忆化 m[b+a]++;//增加(相互同名)对数 } } cout<<sum;//输出 return 0;//完结散花 }
-
1
题意
求有多少组『特殊』的城市
『特殊』的城市:
- 城市 所在的州 等于城市 的前两个字母
- 城市 所在的州 等于城市 的前两个字母
PS:多个城市可以在同一个州
思路
用 map 写。
州 城市 的『特殊』的城市是所有索引为 (前面是州名,后面是城市名)的城市,同时索引为 的城市加 1。
代码
#include <bits/stdc++.h> using namespace std; unordered_map<string,int> a; int cnt; int main(int argc, char **argv){ int n; cin >> n; for (int i = 0;i < n;i++){ string c,s; // s 州,c 城市 cin >> c >> s; c = c.substr(0,2); // 只取前面两个字符 if (c != s){ // 州和城市的名字不一样 cnt += a[c + s]; // 所有以 c 为州,且 s 是城市的序列 a[s + c]++; // 这一个加到以 s 为州,c 为城市的序列 } } cout << cnt; return 0; }
参考与鸣谢
-
1
题意
求出有 多少对在 a州,b州 中 a州有b的城市(与b州名字相同) b州有a的城市(与a州名字相同) 的数量
思路
还是map大佬
代码
#include<iostream> #include<map> #include<string> using namespace std; map<string,int>m;//存储市和州的对数 int sum=0; int main() { int n; cin>>n;//输入 for(int i=0;i<n;i++) { string a,s,b; cin>>s>>b;//输入 a+=s[0];//截取 a+=s[1];//截取 if(a!=b) { sum+=m[a+b];//类似记忆化 m[b+a]++;//增加(相互同名)对数 } } cout<<sum;//输出 return 0;//完结散花 }
-
0
题意
求出有 多少对在 a州,b州 中 a州有b的城市(与b州名字相同) b州有a的城市(与a州名字相同) 的数量
思路
还是map大佬
代码
#include<iostream> #include<map> #include<string> using namespace std; map<string,int>m;//存储市和州的对数 int sum=0; int main() { int n; cin>>n;//输入 for(int i=0;i<n;i++) { string a,s,b; cin>>s>>b;//输入 a+=s[0];//截取 a+=s[1];//截取 if(a!=b) { sum+=m[a+b];//类似记忆化 m[b+a]++;//增加(相互同名)对数 } } cout<<sum;//输出 return 0;//完结散花 }
参考与鸣谢
参考了 @
zengfj 的代码
-
0
题意
求出有 多少对在 a州,b州 中 a州有b的城市(与b州名字相同) b州有a的城市(与a州名字相同) 的数量
思路
还是map大佬
代码
#include<iostream> #include<map> #include<string> using namespace std; map<string,int>m;//存储市和州的对数 int sum=0; int main() { int n; cin>>n;//输入 for(int i=0;i<n;i++) { string a,s,b; cin>>s>>b;//输入 a+=s[0];//截取 a+=s[1];//截取 if(a!=b) { sum+=m[a+b];//类似记忆化 m[b+a]++;//增加(相互同名)对数 } } cout<<sum;//输出 return 0;//完结散花 }
参考与鸣谢
参考了 @
zengfj 的代码
- 1
Information
- ID
- 252
- Time
- 1000ms
- Memory
- 125MiB
- Difficulty
- 8
- Tags
- # Submissions
- 79
- Accepted
- 10
- Uploaded By