首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
hdu5229 ZCC loves strings 博弈
时间:
2015-05-17 15:22:08
阅读:
222
评论:
0
收藏:
0
[点我收藏+]
标签:
//很容易可以判断当两个字符串相等或者长度相加为奇数时第一个赢
//用map存入每一个字符串标号,对应找出每一个字符串有多少个以及其长度是奇数还是偶数
//则很容易求得答案
#include<cstdio>
#include<iostream>
#include<cstring>
#include<map>
using namespace std ;
const int maxn = 200010 ;
typedef __int64 ll ;
char str[maxn] ;
int num[maxn] ;
int flag[maxn] ;
map<string , int> ma;
ll gcd(ll a ,ll b)
{
if(b == 0)return a ;
return gcd(b , a%b) ;
}
int main()
{
int T ;
scanf("%d" ,&T) ;
int n ;
while(T--)
{
scanf("%d" ,&n) ;
memset(num , 0 , sizeof(num)) ;
memset(flag , 0 ,sizeof(flag)) ;
ma.clear() ;
int j = 1;
for(int i = 1;i <= n;i++)
{
scanf("%s" ,str) ;
int len = strlen(str) ;
int t = ma[str] ;
if(t) num[t]++ ;
else
{
flag[j] = len&1;
num[j] = 1;
ma[str] = j++;
}
}
ll ans = 0;
int sum_f[2] = {0 , 0} ;
for(int i = 1;i < j;i++)
{
ans += (ll)sum_f[!flag[i]] * (ll)num[i] ;
sum_f[flag[i]] += num[i];
if(num[i] >= 2)
ans += (ll)(num[i])*(ll)(num[i]-1)/2 ;
}
ll sum = n*(n-1)/2 ;
if(ans == 0)
puts("0/1") ;
else if(ans == sum)
puts("1/1") ;
else
{
ll temp = gcd(ans , sum) ;
printf("%I64d/%I64d\n" , ans/temp , sum/temp) ;
}
}
return 0;
}
hdu5229 ZCC loves strings 博弈
标签:
原文地址:http://blog.csdn.net/cq_pf/article/details/45788361
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!