hdu5229
bc41第二题:
题意:两个人有 n 个串,随机选出两个串,可以进行这样的操作:①选一个串消去最后一个字符,②若两串相同则可以全部消去两串
若到某个人时正好消去两个串,则这个人胜另一人负,问先手胜概率;
首先就是判断什么情况先手胜:
①当两个串一开始就相同的情况:先手可以直接消去两个串,则先手胜;
②当两个串长度和为奇数的情况:先手始终消长度短的串,那么两串长度始终不相等,则后手也被迫执行操作①,按顺序都执行操作①那么最后一个字符会被先手消去,先手胜;
而后手胜的情况:
两串长度和为偶数且两串不相同,此时先手无论先消去哪个串的最后一个字符,后手只需要始终删去短串的最后一个字符,可以使两个串长度始终不等,则两人都执行操作①,后手胜;
那么问题就是任取两串,长度和为奇数或两串相同的概率。
计算方式就是读入时计录长度分别奇数及偶数的串的个数以及每种串出现多少次。两串长度和奇数的种类数就是奇数串个数×偶数串个数;两串相同的种类数就是对每种串,个数为k,种类数k*(k-1)/2;这些总和除以总数 n*(n-1)/2 就得到结果,约分形式就是同除以 gcd即可;
但是由于我蠢!我特判了概率 0 时输出 “0 / 总和”,实际该输出 “0/1”
就这样又wa一发```
#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#include<string>
using namespace std;
typedef long long ll; ll gcd(ll a,ll b){
for(;a>&&b>;a>b?a%=b:b%=a);
return a+b;
} int main(){
int T;
while(scanf("%d",&T)!=EOF){
while(T--){
int n;
scanf("%d",&n);
map<string,int>m;
ll ji=,ou=;
m.clear();
int i;
for(i=;i<=n;i++){
string a;
cin>>a;
m[a]++;
if(a.length()%){
ji++;
}
else ou++;
}
ll cnt=;
cnt=ji*ou;
for(map<string,int>::iterator it=m.begin();it!=m.end();it++){
if(it->second>){ cnt+=((it->second)*((it->second)-)/);
}
}
ll sum=n*(n-)/;
if(cnt==)printf("0/1\n");
else{
ll g=gcd(cnt,sum);
printf("%lld/%lld\n",cnt/g,sum/g);
}
}
}
return ;
}
hdu5229的更多相关文章
- Beatcoder#39+#41+#42
HDU5211 思路: 倒着更新每个数的约数,更新完要把自己加上,以及1的情况? //#include <bits/stdc++.h> #include<iostream> # ...
随机推荐
- 原生js的博客
原生js一里边还有很多二三等http://www.cnblogs.com/charling/p/3527561.html 选区器 http://wenku.baidu.com/link?url=zr2 ...
- yii新手在实例化models(controller调用models实化化)php warning错误
新手在执照yii教程来的时候,config/main.php文件是全新写的,post提交的时候,会出错 include(LoginForm.php) [<a href='function.inc ...
- C#实现的UDP收发请求工具类实例
本文实例讲述了C#实现的UDP收发请求工具类.分享给大家供大家参考,具体如下: 初始化: ListeningPort = int.Parse(ConfigurationManager.AppSetti ...
- android--------微信 Tinker 热修复 (二)
前面简单介绍了一下Tinker热修复,今天就来分享一下如何在Android中使用,希望对各位有帮助. 1:Tinker 接入指南 在项目的build.gradle中,添加tinker-patch-gr ...
- Java 访问控制关键字
public, private, protected 在控制上有什么区别和不同请参考下面的说明. 请参考下图的说明. 和下面的一个说明: │ Class │ Package │ Subclass │ ...
- 42 前端HTML
HTML 1. 概念 HTML 超文本标记语言(Hypertext Markup Language, HTML)是一种用于创建网页的标记语言 . 2.标签 Meta标签 <me ...
- PHP导出为Word格式
<?php $file = './html.doc'; $table = '<table width="100%"><tr><td>'.i ...
- 深入理解$watch ,$apply 和 $digest --- 理解数据绑定过程——续
Angular什么时候不会自动为我们$apply呢? 这是Angular新手共同的痛处.为什么我的jQuery不会更新我绑定的东西呢?因为jQuery没有调用$apply,事件没有进入angular ...
- 073——VUE中vuex之使用actions和axios异步初始购物车数据
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- gitlba的搭建与使用
实验环境继续使用git的实验环境,详情请点击连接https://www.cnblogs.com/cash-su/p/10131632.html 首先给服务器做一个本机的映射 [root@git1 ~] ...