博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[NC189C]硬币游戏
阅读量:6708 次
发布时间:2019-06-25

本文共 948 字,大约阅读时间需要 3 分钟。

题目大意:有$4n$个硬币,放在$2n$个位置(即放成两排),有两个人,轮流取。第一个人取上面的,第二个人取下面的,每个人只可以取两个人都没取过的位置。若硬币正面向上,为$1$,反面为$0$。把取得的硬币按取得顺序排成一列,这个二进制数大的人赢,为有没有先手必胜策略。

题解:贪心,一定是先取正面向上的,如果有两个都是正面朝上的就取,不然去自己的一边是正面向上的,再不然就取自己的反面向上而对方正面向上的(让对方没法取)

卡点:字符串循环时写成了$1\sim len$(应该为$0\sim len - 1$)

C++ Code:

#include 
int n;char s[2000010], p[2000010];int ans[5];int he[2];int main() { scanf("%d", &n); scanf("%s%s", s, p); for (int i = 0; i < n * 2; i++) { if (s[i] == 'U') { if (p[i] == 'U') ans[3]++; else ans[2]++; } else { if (p[i] == 'U') ans[1]++; else ans[0]++; } } int now = 1; for (int i = 1; i <= n * 2; i++) { if (ans[3]) he[now]++, ans[3]--; else if (ans[1 << now]) he[now]++, ans[1 << now]--; else if (ans[3 - (1 << now)]) ans[3 - (1 << now)]--; else ans[0]--; now ^= 1; } if (he[1] > he[0]) puts("clccle trl!"); else puts(he[1] < he[0] ? "sarlendy tql!" : "orz sarlendy!"); return 0;}

 

转载于:https://www.cnblogs.com/Memory-of-winter/p/9639307.html

你可能感兴趣的文章
HTML学习日记(1-基础)
查看>>
如何查看mysql的用户及授权
查看>>
JAVA jacob office转换pdf代码
查看>>
Java 命令行运行参数大全
查看>>
Oracle学习之路-SQL篇-连接查询
查看>>
我的友情链接
查看>>
Windows 7打开.hlp文件
查看>>
Hadoop 完全分布式搭建指南
查看>>
从比特币的疯狂引发出的区块链热潮
查看>>
mongoDB
查看>>
为什么SD-WAN现在正在起飞
查看>>
大数据需要学什么,如何从零开始规划大数据学习之路!
查看>>
服务器双ip部署分布式系统解决办法之一
查看>>
【星云测试】Devops微服务架构下具有代码级穿透能力的精准测试
查看>>
保养硬盘的技巧,让电脑读写更流畅!
查看>>
HashMap面试
查看>>
linux菜鸟基础学习(一)
查看>>
微信支付订单生成脑残问题
查看>>
我的邮件软件运用
查看>>
varnish03 后端主机健康检测机制
查看>>