IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> Educational Codeforces Round 136 (Rated for Div. 2) C. Card Game -> 正文阅读

[C++知识库]Educational Codeforces Round 136 (Rated for Div. 2) C. Card Game

原题链接:Problem - 1739C - Codeforces

题意:n?张卡,Alice?和Bob?轮流出牌,对方应牌,不能应牌的一方失败,应牌要求是比对方出的大。

思路:我们考虑Alice必胜的情况:

1.若AIice拿到了n,剩下的牌无论Alice怎么拿Alice都必赢,因为Alice可以在第一轮就出n,Bob没有比n更大的牌可以出,就输掉了。组合数为C[n-1][(n/2)-1]。

2.若Alice没有拿到n,而是拿到了n-1,Alice则必须将n-1用来逼出Bob的n,否则她就会输掉。而将用n-1逼出了n,相当于牌堆里少了两张牌,也就是回到了总牌数为n-2的情况,唯一不同的是,这次是Bob先手,而总牌数为n-2时是Alice先手,相当于总牌数为n-2时的Bob变成了总牌数为n时的Alice,而总牌数为n-2时的Alice变成了总牌数为n时的Bob,所以这时总牌数为n时Alice获胜的情况数就是总牌数为n-2时的Bob获胜的情况数,所以当Alice只拿到了n-1的情况数即为b[n-2]。

因此,Alice获胜的总情况数为C[n-1][(n/2)-1]+b[n-2]。

而平局的情况数我们可以这样证明:

假设Alice得到了牌n,那么Alice就赢了。因为他可以立即出牌。所以,如果要平局,Bob必须得到牌n。

假设Bob收到一张牌n?1,那么Bob就赢了。因为通过第一步证明我们得知他还一张牌n,他可以用n来应对Alice第一步的任意一张牌,然后通过出n?1来赢得游戏。因此,如果游戏的结果是平局,Alice必须得到牌n?1。

假设Bob收到一张牌n?2,那么Bob就赢了。因为他也有牌n:如果Alice出牌n?1,Bob以n回应,然后出牌n?2;如果Alice出另一张牌,Bob的回应是n?2,下一回合出n。因此,要想平局,Alice必须得到牌n?2。

以此类推。

由此可以得出平局的局面只有一种,而Alice赢的局面有C[n-1][(n/2)-1]+b[n-2]种,剩下的局面即为Bob赢的局面了,即为c[n][n/2](总组合数)-a[n](Alice赢)-1(平局)。

void init() {
	a[2] = 1, b[2] = 0;
	for (int i = 0; i <= 60; i++) {
		c[i][0] = c[i][i] = 1;
		for (int j = 1; j < i; j++) {
			c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % mod;
		}
	}
	for (int i = 4; i <= 60; i += 2) {
		a[i] = (c[i - 1][(i / 2) - 1] + b[i - 2]) % mod;
		b[i] = (c[i][i / 2] - a[i] - 1 + mod) % mod;
	}
}
void solve() {
	int n;
	cin >> n;
	cout << a[n] << " " << b[n] << " " << 1 << endl;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 10:47:31  更:2022-12-25 10:51:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/22 19:27:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码