HDU 5229 ZCC loves strings 博弈
题目链接:
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 博弈的更多相关文章
- HDU 4876 ZCC loves cards(暴力剪枝)
HDU 4876 ZCC loves cards 题目链接 题意:给定一些卡片,每一个卡片上有数字,如今选k个卡片,绕成一个环,每次能够再这个环上连续选1 - k张卡片,得到他们的异或和的数,给定一个 ...
- hdu 4873 ZCC Loves Intersection(大数+概率)
pid=4873" target="_blank" style="">题目链接:hdu 4873 ZCC Loves Intersection ...
- hdu 4876 ZCC loves cards(暴力)
题目链接:hdu 4876 ZCC loves cards 题目大意:给出n,k,l,表示有n张牌,每张牌有值.选取当中k张排列成圈,然后在该圈上进行游戏,每次选取m(1≤m≤k)张连续的牌,取牌上值 ...
- HDU 4873 ZCC Loves Intersection(可能性)
HDU 4873 ZCC Loves Intersection pid=4873" target="_blank" style="">题目链接 ...
- hdu 4882 ZCC Loves Codefires(数学题+贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4882 ------------------------------------------------ ...
- hdu 5996 dingyeye loves stone(博弈)
题目链接:hdu 5996 dingyeye loves stone 题意: 给你一棵树,树的每一个节点有a[i]个石子,每个人可以将这个节点的石子移向它的父亲,如果没有合法操作,那么就算输,现在给你 ...
- hdu 5288 ZCC loves straight flush
传送门 ZCC loves straight flush Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K ...
- HDU 5228 ZCC loves straight flush( BestCoder Round #41)
题目链接:pid=5228">ZCC loves straight flush pid=5228">题面: pid=5228"> ZCC loves s ...
- HDU 4882 ZCC Loves Codefires (贪心)
ZCC Loves Codefires 题目链接: http://acm.hust.edu.cn/vjudge/contest/121349#problem/B Description Though ...
随机推荐
- 解决webview上移
//解决webview上移 $(".webView").blur(function() { setTimeout(function() { var scrollHeight = d ...
- redis必会
1.NosqL 非关系型数据库,里面包含Redis和MondoDB2.为什么会用到关系型数据库?因为当数据量太多,访问人数过多的时候,在访问关系型数据库时会到硬盘里进行读写过多 这样就会导致访问速度很 ...
- maven添加本地jar
maven有时需要添加了一些本地jar,记录下流程 1.在项目名下创建一个文件夹,起名为lib吧,放要的jar放进去 2.然后打开jar在的路径,打开命令窗口,执行 mvn install:insta ...
- 几个并发的术语解释——QPS,TPS,PV
从英文全称翻译出字面意思就OK啦! PV=page view TPS=transactions per second QPS=queries per second RPS=requests per ...
- Java六大设计原则
类的设计原则 依赖倒置原则-Dependency Inversion Principle (DIP) 里氏替换原则-Liskov Substitution Principle (LSP) 接口 ...
- # 第五周课下测试(ch03)补交
第五周课下测试(ch03)补交 1.( 多选题 | 1 分) 有关gdb调试汇编,下面说法正确的是() A . 可以用disas反汇编当前函数 B . 以16进制形式打印%rax中内容的命令是 pri ...
- 【课堂实践】Myod和Mycp
实验内容 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 实验代码 od.java 截图 遇到的问题及解决办法 一开始想的方向是将得出的功能结果 ...
- Python 爬虫之模拟登录
最近应朋友要求,帮忙爬取了小红书创作平台的数据,感觉整个过程很有意思,因此记录一下.在这之前自己没怎么爬过需要账户登录的网站数据,所以刚开始去看小红书的登录认证时一头雾水,等到一步步走下来,最终成功, ...
- SQL优化避免索引失效
Oracle 索引的目标是避免全表扫描,提高查询效率,但有些时候却适得其反.例如一张表中有上百万条数据,对某个字段加了索引,但是查询时性能并没有什么提高,这可 能是 oracle 索引失效造成的.or ...
- Matplotlib API汉化
Pyplot API 示例汇总:https://matplotlib.org/gallery/index.html#api-examples 该matplotlib.pyplot模块包含的功能允许您快 ...