题目链接:

hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5229

bc:http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=582&pid=1002

题解:

设字符串a,b;

结论:先手胜的充分必要条件是|a|+|b|为奇数或a==b。

证明:

数学归纳法:

|a|+|b|=0;时,先手败,结论成立

假设|a|+|b|<p时结论成立,现在分类讨论|a|+|b|的情况:

p为偶数:

如果a=b,则先手直接采取方案b取胜,否则,先手只能执行方案A必败。

p为奇数:

先手只要用方案a取走一个,且保证取走之后a!=b(取较短的那个,当较短为0时,去另一个),那么就能保证必胜。

综上所述,结论成立。

---------------------------------我是分割线----------------------------------

对于当前输入串,统计它之前与它相等的串的个数x和长度与它不同奇偶的串的个数y,累加它对答案的贡献x+y,线性扫一遍就好了。

代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
using namespace std; const int maxn=1e5+; int odd[];
char str[maxn];
int n;
map<string,int> mymap; void init(){
mymap.clear();
memset(odd,,sizeof(odd));
} int gcd(int a,int b){ return b==?a:gcd(b,a%b); } int main(){
int tc;
scanf("%d",&tc);
while(tc--){
init();
int ans=;
scanf("%d",&n);
for(int i=;i<n;i++){
scanf("%s",str);
int o=strlen(str)&;
ans+=odd[!o];
odd[o]++; //str不需要是string类型!
ans+=mymap[str];
mymap[str]++;
}
int demo=n*(n-)/;
int g=gcd(ans,demo);
if(ans==) printf("0/1\n");
else printf("%d/%d\n",ans/g,demo/g);
}
return ;
} /*
2
ab
bc
*/

HDU 5229 ZCC loves strings 博弈的更多相关文章

  1. HDU 4876 ZCC loves cards(暴力剪枝)

    HDU 4876 ZCC loves cards 题目链接 题意:给定一些卡片,每一个卡片上有数字,如今选k个卡片,绕成一个环,每次能够再这个环上连续选1 - k张卡片,得到他们的异或和的数,给定一个 ...

  2. hdu 4873 ZCC Loves Intersection(大数+概率)

    pid=4873" target="_blank" style="">题目链接:hdu 4873 ZCC Loves Intersection ...

  3. hdu 4876 ZCC loves cards(暴力)

    题目链接:hdu 4876 ZCC loves cards 题目大意:给出n,k,l,表示有n张牌,每张牌有值.选取当中k张排列成圈,然后在该圈上进行游戏,每次选取m(1≤m≤k)张连续的牌,取牌上值 ...

  4. HDU 4873 ZCC Loves Intersection(可能性)

    HDU 4873 ZCC Loves Intersection pid=4873" target="_blank" style="">题目链接 ...

  5. hdu 4882 ZCC Loves Codefires(数学题+贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4882 ------------------------------------------------ ...

  6. hdu 5996 dingyeye loves stone(博弈)

    题目链接:hdu 5996 dingyeye loves stone 题意: 给你一棵树,树的每一个节点有a[i]个石子,每个人可以将这个节点的石子移向它的父亲,如果没有合法操作,那么就算输,现在给你 ...

  7. hdu 5288 ZCC loves straight flush

    传送门 ZCC loves straight flush Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K ...

  8. HDU 5228 ZCC loves straight flush( BestCoder Round #41)

    题目链接:pid=5228">ZCC loves straight flush pid=5228">题面: pid=5228"> ZCC loves s ...

  9. HDU 4882 ZCC Loves Codefires (贪心)

    ZCC Loves Codefires 题目链接: http://acm.hust.edu.cn/vjudge/contest/121349#problem/B Description Though ...

随机推荐

  1. 20155217 2016-2017-2 《Java程序设计》第3周学习总结

    20155217 2016-2017-2 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 要产生对象必须先定义类,类定义时使用class关键词,建立实例要使用new关键词. ...

  2. 20145207 2016-2017-2 《Java程序设计》第4周学习总结

    一.继承与多态 1.继承的定义 面对对象中,子类继承父类,避免重复的行为定义,不过并非为了避免重复定义行为就使用继承,滥用而继承会导致程序维护上的问题. 程序代码重复在程序设计上就是不好的信号,多个类 ...

  3. 【整理总结】代码沉淀 - Caliburn.Micro - MV*模式短小精悍的框架

    Caliburn.Micro - Xaml made easy. web: https://github.com/Caliburn-Micro/Caliburn.Microdocument: http ...

  4. C#基础之委托

    委托常常和事件在一起使用,可以理解委托是方法的容器,事件则是委托的另一种表现形式.委托和事件虽然写得还比较多,不过也只是用的熟练而已,趁周末没课好好巩固下基础,一点一点积累吧. 1.一个简单的小例子 ...

  5. [agc004D]Teleporter

    Description 传送门 Solution 依题意我们可以知道,以2-n为出发点的边和1号节点会构成一课树(不然2-n号节点无法都达到首都). 为了让2-n号节点中,离1号节点的距离<k的 ...

  6. 4709: [Jsoi2011]柠檬

    4709: [Jsoi2011]柠檬 https://www.lydsy.com/JudgeOnline/problem.php?id=4709 分析: 决策单调性+栈+二分. 首先挖掘性质:每个段选 ...

  7. [FJOI2014]最短路径树问题 长链剖分

    [FJOI2014]最短路径树问题 LG传送门 B站传送门 长链剖分练手好题. 如果你还不会长链剖分的基本操作,可以看看我的总结. 这题本来出的很没水平,就是dijkstra(反正我是不用SPFA)的 ...

  8. css布局笔记(一)

    布局方式 一列布局 通常固定宽高,用margin:0 auto:居中显示 两列布局 说起两列布局,最常见的就是使用float来实现.float浮动布局的缺点是浮动后会造成文本环绕等效果,以及需要及时清 ...

  9. HTTP 两种基本请求方法 GET和 POST的区别

    GET方法 1.GET交互方式是从服务器上获取数据,而并非修改数据,所以GET交互方式是安全的.就像数据库查询一样,从数据库查询数据,并不会影响数据库的数据信息,对数据库来说,也就是安全的.2.GET ...

  10. 【转】RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第二篇【原理】

    接着上一篇,我们开始聊聊APPIUM的框架和运行模式.废话不多说直接上图. 1.首先自动化脚本通过RobotFrameWork将命令传递给Appium的客户端: 2.然后[Appium的客户端]将接受 ...