纸牌游戏(思维+贪心策略)

【题目描述】

公司举办团建活动,许多人在一起玩一个纸牌游戏。规则如下:总共有𝑛个人,每个人初始有𝑛张牌。每一轮从第一个人开始轮流操作,第𝑖个人每次操作必须选择𝒎𝒊𝒏(𝒑𝒆𝒐𝒑𝒍𝒆−𝟏,𝒂𝒊)个不同的人,分别从他们手中拿走一张牌。其中people 为游戏现存人数,手上没有牌的人立即被淘汰出局。大家都不希望自己出局,并且希望有尽可能多的人出局,游戏无限的进行下去,问最终游戏中最少还有几个人没有出局。注意:不能从自己手中拿牌【输入格式】第一行输入一个数字𝑛,代表游戏的总人数。接下来输入𝑛个数字,分别代表ai【输出格式】输出一行一个整数表示游戏最终最少剩几个人。

样例

样例输入

复制2
1 2

样例输出

复制2

【数据范围】

对于20% 的数据,满足𝑛≤2;

对于40% 的数据,满足𝑛≤3;

对于100% 的数据,满足1≤𝑛≤105,1≤𝑎𝑖≤109。

废话:这道题目感觉怪怪的,感觉好像没有什么特别的方法(毕竟人家是思维题目嘛。。。)

题目分析:

每个人最开始都有n张牌,可以拿a[i]张牌,如果想让剩牌的人最少,那么我们可以假设所有的人都针对那个可以拿牌的数量最少的人,那么:剩余的人> 这个人的拿牌数量,这个人就必死无疑,不取等号的原因是这个人是有初始的牌的数量的,相当于不管别人怎么拿,他牌的数量都不会发生变化。

采取贪心策略:将所有人的牌从小到大排序,i从1到n枚举,然后所有人都针对这个目前还活着的能拿牌最少的人,如果这个人都已经无法出局,那后面拿牌更多的人就更无法出局了,所以我们就可以直接退出运算。

#include <bits/stdc++.h>
using namespace std ;
const int MAXN = 1e5 + 5 ;
int n, a[MAXN], Ans = 0 ;
int main()
{
	scanf("%d", &n) ;
	for(int i = 1; i <= n; i ++)
	{
		scanf("%d", &a[i]) ;
	}
	sort(a + 1, a + n + 1) ;
	for(int i = 1; i <= n; i ++)
	{
		if(a[i] < n - i)
		{
			Ans ++ ;
		}
	}
	printf("%d", n - Ans) ;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Delphi纸牌游戏是一款很受欢迎的单人纸牌游戏。游戏规则简单,但是有一定的策略性和挑战性。 在游戏开始时,首先需要准备52张扑克牌,将其洗乱并平铺在桌面上形成一个牌堆。然后,从牌堆中依次取出3张牌,并将它们放置在桌面上,这些牌将成为游戏的基础牌堆。接下来,从剩余的牌堆中翻开一张牌,放在基础牌堆的上方,这张牌被称为"Delphi牌"。 游戏的目标是通过合理的策略,依次将基础牌堆的牌按照从小到大的顺序堆放到相应的区域。牌堆的堆放规则是:每张牌都必须比其上方的牌小或者比其下方的牌大。如果某张牌无法进行堆放,那么它将成为牌堆的底部。 游戏继续进行,每次可以从剩余牌堆中翻开一张牌放在Delphi牌上方,并根据翻开的牌与基础牌堆的牌的关系进行堆放。如果基础牌堆的所有牌都成功堆放到相应区域,那么游戏获胜。 Delphi纸牌游戏的挑战在于玩家需要合理利用剩余的牌堆和Delphi牌,通过观察和分析牌的分布情况,出正确的选择,从而达到堆放牌的目标。 总的来说,Delphi纸牌游戏简单易学,但是需要一定的思考和决策,适合那些喜欢纸牌游戏的人挑战自己的智力和策略能力。 ### 回答2: Delphi纸牌游戏是一种经典的单人纸牌游戏,它是基于希腊神话的,所以得名Delphi。这个游戏需要一副标准的52张纸牌,并且需要在桌面上形成三个金字塔形状。 游戏的目标是将所有纸牌从金字塔中移除并且配对,直到没有剩余的纸牌可供选取。配对的规则是有点特别的,只有两个牌都是King或者两个牌的点数之和为13才能配对。例如,Ace(1点)可以和Queen(12点)进行配对,2可以和Jack(11点)进行配对,依此类推。 玩家需要在纸牌金字塔中的牌堆中选择可点击的纸牌,当一对纸牌配对成功时,这两张纸牌会被移除。而不能配对的纸牌则需要留在金字塔中。如果所有的纸牌配对成功并且被移除,则玩家获胜。然而,如果没有可供配对的纸牌且还有剩余纸牌,则游戏失败。 Delphi纸牌游戏需要玩家运用策略和记忆力。玩家需要选择性地将纸牌从金字塔中移除,以便留下更多匹配的机会。此外,在进行配对选择时,玩家必须考虑到纸牌是如何叠放的,因为仅最上面的纸牌是可以点击的。 Delphi纸牌游戏是一种简单却有趣的纸牌游戏,它可以让玩家在休闲时间放松身心,同时也可以锻炼他们的逻辑思维和记忆力。无论是独自挑战还是与朋友们一起竞争,Delphi纸牌游戏都能为玩家带来乐趣和挑战。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值