交叉匹配
来源:互联网 发布:刷网站ip软件 编辑:程序博客网 时间:2024/06/05 03:53
【题目描述】
为了预防“老牛痴呆”,农夫约翰在谷仓挂了一幅美国地图。一些聪明的奶牛注意到了一些奇怪的事情。现在给出N个城市和它们所在的州(州以两个字母写出),如果a城市的市名(取前两个字母)和b城市的州相同,且a城市的州名和b城市的市名(也取前两个字母)相同,就称为一次匹配。求有多少个匹配。
【输入格式】
第一行一个整数N(1<=N<=200000)
接下来N行,每行两个字符串a和b(以一个空格隔开)表示第i个城市的市名是a,州名是b(2<=length(a)<=10,length(b)=2)
a和b都是大写的。
【输出格式】
有多少个匹配
【样例输入】
6
MIAMI FL
DALLAS TX
FLINT MI
CLEMSON SC
BOSTON MA
ORLANDO FL
【样例输出】
1
【样例说明】
第1个城市和第3个城市是匹配的
【分析】
令Sum[a,b,c,d]表示城市名以ab开头,州名为cd的城市个数,则输出sum[‘A’..’Z’,’A’..’Z’,’A’..’Z’,’A’..’Z’]的和即可,注意判重。
var i,n:longint; ans:qword; sum:array['A'..'Z','A'..'Z','A'..'Z','A'..'Z']of longint; st:string; a,b,c,d:char;begin fillchar(sum,sizeof(sum),0); readln(n); for i:=1 to n do begin readln(st); a:=st[1]; b:=st[2]; c:=st[length(st)-1]; d:=st[length(st)]; if (a<>c)or(b<>d) then inc(sum[a,b,c,d]); end; ans:=0; for a:='A' to 'Z' do for b:='A' to 'Z' do for c:='A' to 'Z' do for d:='A' to 'Z' do ans:=ans+sum[a,b,c,d]*sum[c,d,a,b]; write(ans div 2);end.
3 0
- 交叉匹配
- 3065 交叉匹配
- 交叉匹配算法
- zoj 1425 最多匹配交叉 LCS
- 二分图匹配以及交叉染色
- hdu 2444 The Accomodation of Students (交叉染色+二分匹配)
- hdu 2444 交叉染色判断二分图+二分最大匹配
- linq初入交叉连接查询,两个对象之间分别匹配
- 【poj 3056】The Bavarian Beer Party (区间DP+最大匹配不交叉的简单算法)
- 暴力交叉匹配——La Vie en rose ( HDU 5745 )(2016 Multi-University Training Contest 2 1012)
- 匹配.
- 匹配
- 匹配
- 匹配
- 匹配
- 匹配
- 匹配
- 括号问题 下面的代码用于判断一个串中的括号是否匹配 所谓匹配是指不同类型的括号必须左右呼应,可以相互包含,但不能交叉
- 我的第一个博客
- android引CGLIB 报java.lang.VerifyError
- js、jquery获取、设置元素属性与样式
- 关于<label>标签
- relative
- 交叉匹配
- jsonvalue 得到后的值如何不能写入plist文件
- mac下mysql忘记root密码的解决办法
- 数据结构课程设计--学生成绩管理系统
- 求助!!!android怎么样实现通过连接wifi和流量执行下载
- 如和学习java并发编程
- 个人技术博客DaPalm.com----“大数据,怕了么?”建站啦
- 诗词、对联名句(千古名帖)
- 2016,还是到了最后