[2019 牛客CSP-S提高组赛前集训营1]仓鼠的石子游戏 + 乃爱与城市拥挤程度 + 小w的魔术扑克

本文主要是介绍[2019 牛客CSP-S提高组赛前集训营1]仓鼠的石子游戏 + 乃爱与城市拥挤程度 + 小w的魔术扑克,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • T1.仓鼠的石子游戏
    • 题目描述
    • 题解
    • 参考代码
  • T2.乃爱与城市拥挤程度
    • 题目描述
    • 题解
    • 参考代码
  • T3.小w的魔术扑克
    • 题目描述
    • 题解
    • 参考代码

前言

不知道为什么,比赛的时候数据好像很水,我隔壁大佬T2暴力过了八十??!我码正解思路line2算错了?!!
这告诉我们什么?!!考试的时候,一定要积极地打暴力,码完“正解”也写个if判一判

友情链接:牛客CSP-S提高组赛前集训营1 ☜戳介里

T1.仓鼠的石子游戏

题目描述

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述
仓鼠和兔子被禁止玩电脑,无聊的他们跑到一块空地上,空地上有许多小石子。兔子捡了很多石子,然后将石子摆成n个圈,每个圈由a[i]个石子组成。然后兔子有两根彩色笔,一支红色一支蓝色。兔子和仓鼠轮流选择一个没有上色的石子涂上颜色,兔子每次可以选择一个还未染色的石子将其染成红色,而仓鼠每次可以选择一个还未染色的石子将其染成蓝色,并且仓鼠和兔子约定,轮流染色的过程中不能出现相邻石子同色,谁不能操作他就输了。假设他们两个都使用了最优策略来玩这个游戏,并且兔子先手,最终谁会赢得游戏?

输入描述
第一行输入一个正整数T,表示有T组测试案例。
每组测试案例的第一行输入一个n,表示有n圈石子。 第二行输入n个正整数a[i],表示每个圈的石子数量。

输出描述
对于每组测试案例,如果兔子赢了,输出"rabbit"(不含引号)如果仓鼠赢了,输出"hamster"(不含引号)。
数据范围及提示
本题共有10组测试点数据。
对于前30%的数据,满足n = 1, 1 ≤ a[i] ≤ 7, 1 ≤ T ≤ 10。
对于前60%的数据,满足1 ≤ n ≤ 103, 1 ≤ a[i] ≤ 7, 1 ≤ T ≤ 102
对于前100%的数据,满足1 ≤ n ≤ 103,1 ≤ a[i] ≤ 109, 1 ≤ T ≤ 102
对于测试点6,在满足前60%的数据条件下,额外满足a[i] = 1。

样例输入输出
Sample Input
4
1
3
1
1
2
1 3
3
999 1000 1000000000
Sample Output
hamster
rabbit
rabbit
hamster
样例解释
对于第一组案例:只有1圈石子,并且石圈的大小为3。
兔子先手,随便找了一个石子染成红色,接下来仓鼠后手找一个未染色的石子染成蓝色,此时结果如下图所示。
在这里插入图片描述
如果兔子将最后一个石子染成红色,这将导致相邻石子同色,根据规则,他输掉了比赛,所以仓鼠获得了最终的胜利。
对于第二组案例:只有1圈石子,并且石圈的大小为1。
兔子先手,将唯一的一个石子染成了红色,接下来由于没有未着色的石子,所以仓鼠由于无法操作而输掉了比赛,兔子取得了最终的胜利。
对于第三组案例:有两个石圈,大小分别为1,3,兔子首先将大小为1的石圈中唯一一个石子染成了红色,接下来仓鼠由于类似第一组案例中的原因输掉比赛,兔子取得了最终的胜利。

题解

(看巨佬们的博客,有说是SG函数的,然而本蒟蒻并不了解是怎么回事。。。)
这题一看就是一道博弈论,我也不知道该怎么说,在草稿纸上涂涂画画,自己推一下,就可以发现,除了石子数为一,其他情况都是先手必败


石子数为一先手必胜很好理解,那么我们接下来继续思考石子数不为一的情况:
想要让染色无法继续,有两种情况:
①.所有石子均被着色:
 a.石子数为偶数,那么最后一个着色的人会是后手,因此,先手必败;
 b.石子数为奇数,那么很容想到,不会出现全部着色的情况(颜色比冰交替出现),因此,先手必败。
②.再染任一一颗石子都会出现连续相同的颜色:
 那么所有此刻尚未着色的石子两边皆是颜色不同的两颗石子,由此易得,染色石子的出现必定是偶数
 个,那么最后一个着色的人也是后手,因此,先手还是必败
综上,先手好难啊 只有石子数为一的情况先手会赢
最后再判一下奇偶就好了

参考代码

#include <cstdio>
#include <iostream>
using namespace std;int T, n, ans;int main () {scanf ("%d", &T);while (T --) {scanf ("%d", &n);for (int i = 1, x; i <= n; ++ i) {scanf ("%d", &x);if (x == 1)++ ans;}if (ans & 1)printf ("rabbit\n");elseprintf ("hamster\n");}return 0;
} 

T2.乃爱与城市拥挤程度

题目描述

时间限制:C/C++ 2秒,其他语言4秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述
乃爱天下第一可爱!
乃爱居住的国家有n座城市,这些城市与城市之间有n-1条公路相连接,并且保证这些城市两两之间直接或者间接相连。
我们定义两座城市之间的距离为这两座城市之间唯一简单路径上公路的总条数。
当乃爱位于第x座城市时,距离城市x距离不大于k的城市中的人都会认为乃爱天下第一可爱!
认为乃爱天下第一可爱的人们决定到乃爱所在的城市去拜访可爱的乃爱。我们定义这些城市的拥挤程度为:
距离城市x距离不大于k的城市中的人到达城市x时经过该城市的次数。例如:
在这里插入图片描述
假设k=2,乃爱所在的城市是1号城市,树结构如上图所示时,受到影响的城市为1,2,3,4,5,因为五个城市距离1号城市的距离分别为:0,1,2,2,2,所以这五个城市都会认为乃爱天下第一。
1号城市到1号城市经过了1号城市。
2号城市到1号城市经过了1号、2号城市。
3号城市到1号城市经过了1号、2号、3号城市。
4号城市到1号城市经过了1号、2号、4号城市。
5号城市到1号城市经过了1号、2号、5号城市。
所以1号城市的拥挤程度是5,2号城市的拥挤程度是4,3号、4号、5号城市的拥挤程度都是1。
现在小w想要问你当乃爱依次位于第1、2、3、4、5…n座城市时,有多少座城市中的人会认为乃爱天下第一,以及受到影响城市的拥挤程度的乘积,由于这个数字会很大,所以要求你输出认为乃爱天下第一的城市拥挤程度乘积mod 109+7后的结果。

输入描述
第一行是两个正整数n,k表示城市数目,以及距离乃爱所在城市距离不大于k的城市中的人认为乃爱天下第一!
接下来n-1行,每行两个正整数u,v,表示树上一条连接两个节点的边。

输出描述
输出两行。
第一行n个整数,表示当乃爱依次位于第1、2、3、4、5…n座城市时,有多少座城市中的人会认为乃爱天下第一。
第二行n个整数,表示当乃爱依次位于第1、2、3、4、5…n座城市时,受影响的城市拥挤程度乘积mod 10^9+7后的结果。

数据范围及提示
本题共有10组测试点数据。
对于前10%的测试点满足1 ≤ n ≤ 10,1 ≤ k ≤ 10,树结构随机生成。
对于前30%的测试点满足1 ≤ n ≤ 103,1 ≤ k ≤ 10,树结构随机生成。
对于前70%的测试点满足1 ≤ n ≤ 105,1 ≤ k ≤ 10,树结构随机生成。
对于前100%的测试点满足1 ≤ n ≤ 105,1 ≤ k ≤ 10,树结构为手动构造。
对于测试点4,在满足其前70%的测试点条件下,额外满足k=1。
对于测试点5,在满足其前70%的测试点条件下,额外满足k=2。
对于测试点10,在满足其前100%的测试点条件下,额外满足树结构退化成一条链。

T2大样例下载连接:
https://pan.baidu.com/s/1AbBuEC8SmWlRMvtj6nLRkw
或者复制以下地址新建下载
https://uploadfiles.nowcoder.com/files/20191029/8030387_1572353828028_T2%20%E5%A4%A7%E6%A0%B7%E4%BE%8B.zip

样例输入输出
Sample Input
7 2
1 2
2 3
2 4
2 5
5 6
5 7
Sample Output
5 7 5 5 7 4 4
20 21 20 20 28 12 12

题解

首先锁定dp,然后思考状态转移方程式。。。
对于节点u而言,它的拥挤度来自它的祖先们,以及它的儿砸们;而祖先与儿子的拥挤度有事互不干扰,互不影响的,那么,我们可以定义一个 d p [ u ] [ i ] dp[u][i] dp[u][i]表示节点u影响向下i层一共可以提供的贡献。


首先考虑它的儿子们对于节点u的贡献。很容易发现,u节点往下的子树,不管向上转移多少层,它们子树内部的贡献总是不变的,因此,我们可以直接考虑节点u因此而造成的拥挤度而产生的贡献,即是它的儿子的个数,因此,我们得出状态转移方程式:
s o n [ u ] [ j ] = ∑ i = 0 s i z e ( ) − 1 s o n [ G [ u ] [ i ] ] [ j − 1 ] son[u][j] = \sum_{i = 0}^{size() - 1}son[G[u][i]][j - 1] son[u][j]=i=0size()1

这篇关于[2019 牛客CSP-S提高组赛前集训营1]仓鼠的石子游戏 + 乃爱与城市拥挤程度 + 小w的魔术扑克的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/305785

相关文章

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

键盘快捷键:提高工作效率与电脑操作的利器

键盘快捷键:提高工作效率与电脑操作的利器 在数字化时代,键盘快捷键成为了提高工作效率和优化电脑操作的重要工具。无论是日常办公、图像编辑、编程开发,还是游戏娱乐,掌握键盘快捷键都能带来极大的便利。本文将详细介绍键盘快捷键的概念、重要性、以及在不同应用场景中的具体应用。 什么是键盘快捷键? 键盘快捷键,也称为热键或快捷键,是指通过按下键盘上的一组键来完成特定命令或操作的方式。这些快捷键通常涉及同

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

如何提高 GitHub 的下载速度

如何提高 GitHub 的下载速度 文章目录 如何提高 GitHub 的下载速度1. 注册账号2. 准备好链接3. 创建仓库4. 在码云上下载代码5. 仓库更新了怎么办 一般来说,国内的朋友从 GitHub 上面下载代码,速度最大是 20KB/s,这种龟速,谁能忍受呢? 本文介绍一种方法——利用“码云”,可以大大提高下载速度,亲测有效。 1. 注册账号 去“码云”注册一

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

火柴游戏java版

代码 /*** 火柴游戏* <p>* <li>有24根火柴</li>* <li>组成 A + B = C 等式</li>* <li>总共有多少种适合方式?</li>* <br>* <h>分析:</h>* <li>除去"+"、"="四根,最多可用火柴根数20根。</li>* <li>全部用两根组合成"1",最大数值为1111。使用枚举法,A和B范围在0~1111,C为A+B。判断</li>** @

国产游戏行业的崛起与挑战:技术创新引领未来

国产游戏行业的崛起与挑战:技术创新引领未来 近年来,国产游戏行业蓬勃发展,技术水平不断提升,许多优秀作品在国际市场上崭露头角。从画面渲染到物理引擎,从AI技术到服务器架构,国产游戏已实现质的飞跃。然而,面对全球游戏市场的激烈竞争,国产游戏技术仍然面临诸多挑战。本文将探讨这些挑战,并展望未来的机遇,深入分析IT技术的创新将如何推动行业发展。 国产游戏技术现状 国产游戏在画面渲染、物理引擎、AI

CSP-J基础之数学基础 初等数论 一篇搞懂(一)

文章目录 前言声明初等数论是什么初等数论历史1. **古代时期**2. **中世纪时期**3. **文艺复兴与近代**4. **现代时期** 整数的整除性约数什么样的整数除什么样的整数才能得到整数?条件:举例说明:一般化: 判断两个数能否被整除 因数与倍数质数与复合数使用开根号法判定质数哥德巴赫猜想最大公因数与辗转相除法计算最大公因数的常用方法:举几个例子:例子 1: 计算 12 和 18