AcWing 1801:蹄子剪刀布 ← 模拟题

news2024/10/6 12:33:59

【题目来源】
https://www.acwing.com/problem/content/1803/

【题目描述】
你可能听说过“石头剪刀布”的游戏。
这个游戏在牛当中同样流行,它们称之为“蹄子剪刀布”。
游戏的规则非常简单,两头牛相互对抗,数到三之后各出一个表示蹄子,剪刀或布的手势。

蹄子赢剪刀,剪刀赢布,布赢蹄子
例如,第一头牛出“蹄子”手势,第二头牛出“布”手势,则第二头牛获胜。
如果两头牛出相同的手势,则算平局。
农夫约翰的两头奶牛正在进行 N 轮“蹄子剪刀布”对抗,他看的十分入迷。
不幸的是,虽然他可以看到奶牛正在做出三种不同类型的手势,但他却
无法分辨出哪一个代表“蹄子”,哪一个代表“布”以及哪一个代表“剪刀”
不知道这三种手势的具体含义的情况下,农夫约翰给这三种手势分配了编号 1,2,3
手势 1 可能代表“蹄子”,可能代表“剪刀”,也可能代表“布”,反正他傻傻分不清楚。
给出两头奶牛在 N 场比赛中所做出的具体手势对应的编号,请你判断第一头奶牛最多可能赢多少盘对抗。

【输入格式】
第一行包含整数 N。
接下来 N 行,每行包含两个整数(1 或 2 或 3),表示两头奶牛在一轮对抗中所出的手势对应的编号。

【输出格式】
输出第一头奶牛可能获胜的最大场次数。

【数据范围】
1≤N≤100

【输入样例】
5
1 2
2 2
1 3
1 1
3 2

【输出样例】
2

【样例解释】
此样例的一种解决方案是,1 表示剪刀,2 表示蹄子,3 表示布。
这样,第一头奶牛可以赢得 (1,3) 和 (3,2) 两场比赛。

【算法分析】
● 蹄子?剪刀?布?确实傻傻
分不清 ^_^

● 依据游戏规则,蹄子赢剪刀,剪刀赢布,布赢蹄子。据此,不失一般性,约定用编号1、编号2、编号3对游戏规则进行编码。由于编号1可能代表“蹄子”,可能代表“剪刀”,也可能代表“布”,编号2及编号3亦如此。故:
若用编号1表示“蹄子”,编号2表示“剪刀”,编号3表示“布”,则游戏规则编码为 1 2 3;
若用编号1表示“蹄子”,编号3表示“剪刀”,编号2表示“布”,则游戏规则编码为 1 3 2;
若用编号2表示“蹄子”,编号1表示“剪刀”,编号3表示“布”,则游戏规则编码为 2 1 3;
若用编号2表示“蹄子”,编号3表示“剪刀”,编号1表示“布”,则游戏规则编码为 2 3 1;
若用编号3表示“蹄子”,编号1表示“剪刀”,编号2表示“布”,则游戏规则编码为 3 1 2;
若用编号3表示“蹄子”,编号2表示“剪刀”,编号1表示“布”,则游戏规则编码为 3 2 1;
总上,可得6种游戏规则编码,即 1 2 3、1 3 2、2 1 3、2 3 1、3 1 2、3 2 1。

● 显然,上述6种游戏规则编码,对应以下6种赢的陈述:
1 2 3 → 1 赢 2,2 赢 3,3 赢 1
1 3 2 → 1 赢 3,3 赢 2,2 赢 1
2 1 3 → 2 赢 1,1 赢 3,3 赢 2

2 3 1 → 2 赢 3,3 赢 1,1 赢 2
3 1 2 → 3 赢 1,1 赢 2,2 赢 3

3 2 1 → 3 赢 2,2 赢 1,1 赢 3
不过,在利用下图可视化后,发现6种赢的陈述有同构的情形,本质上对应两种情况。

● 两种情况
对于上图左上而言,对应
1 3 2、2 1 3、3 2 1,即 1 赢 3,2 赢 1,3 赢 2。
也就是
第一头牛出的手势编号值与第二头牛出的手势编号值之差为 -2 和 1 时获胜
对于上图左下而言,对应
1 2 3、2 3 1、3 1 2,即 1 赢 2,2 赢 3,3 赢 1。
也就是
第一头牛出的手势编号值与第二头牛出的手势编号值之差为 -1 和 2 时获胜
显然,比较两种情况,较大的就是第一头牛赢的最大次数。若二牛出的手势编号值相同,则平局,无需考虑。

【算法代码】

#include <bits/stdc++.h>
using namespace std;

int fi,se;

int main() {
    int n;
    cin>>n;
    for(int i=1; i<=n; i++) {
        int x,y;
        cin>>x>>y;
        if((x-y)==-2 || (x-y)==1) fi++;
        if((x-y)==-1 || (x-y)==2) se++;
    }
    cout<<max(fi,se)<<endl;

    return 0;
}

/*
in:
40
1 3
3 1
3 2
3 3
1 2
3 3
3 1
1 1
3 2
1 2
3 1
2 3
1 3
3 2
2 3
3 3
3 2
2 2
2 3
2 1
3 3
1 1
2 3
2 1
3 2
2 3
3 3
2 1
2 3
2 3
2 1
3 3
1 1
1 1
2 3
2 2
3 3
2 3
2 2
1 1

out:
14
*/




【参考文献】
https://blog.csdn.net/qq_50677040/article/details/122737418
https://www.acwing.com/solution/content/88041/
https://www.acwing.com/problem/content/solution/1803/1/
https://www.acwing.com/solution/content/87164/
https://www.acwing.com/video/3693/






 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1852930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

32 - 判断三角形(高频 SQL 50 题基础版)

32 - 判断三角形 select *,if(xy>z and xz>y and zy > x,Yes,No) triangle fromTriangle;

webpack处理js资源10--webpack入门学习

处理 js 资源 有人可能会问&#xff0c;js 资源 Webpack 不能已经处理了吗&#xff0c;为什么我们还要处理呢&#xff1f; 原因是 Webpack 对 js 处理是有限的&#xff0c;只能编译 js 中 ES 模块化语法&#xff0c;不能编译其他语法&#xff0c;导致 js 不能在 IE 等浏览器运…

QtCreator/VS中制作带有界面的动态库

1、首先创建动态库项目 class UNTITLED25_EXPORT Untitled25 {public:Untitled25(); };2、直接右键创建同名窗口类进行覆盖 3、引入global头文件并添加到处宏</

[机器学习算法]支持向量机

支持向量机&#xff08;SVM&#xff09;是一种用于分类和回归分析的监督学习模型。SVM通过找到一个超平面来将数据点分开&#xff0c;从而实现分类。 1. 理解基本概念和理论&#xff1a; 超平面&#xff08;Hyperplane&#xff09;&#xff1a;在高维空间中&#xff0c;将数据…

Git学习2 -- VSCode中的Git

看了下&#xff0c;主要的插件有3个。自带的Source Control。第1个是Gitlens&#xff0c;第2个是Git Graph。第三个还有个git history。 首先是Source Control。界面大概是这样的。 还是挺直观的。在第一栏source control&#xff0c;可以进行基本的git操作。主要的git操作都是…

qt开发-11_Dialog 仿苹果支付界面

QDialog 是 Qt 框架中用于创建对话框的一个基类。对话框是一种特殊类型的窗口&#xff0c;通常用于短暂的交互和信息交换&#xff0c;如接收用户输入、显示消息、询问用户决定等。QDialog 提供了一种方便的方式来实现这些功能&#xff0c;并能够控制用户与其他窗口的交互性&…

Android模拟器linux内核的下载,编译,运行,驱动开发测试

Android模拟器linux内核的下载&#xff0c;编译&#xff0c;运行&#xff0c;内核模块开发 1.下载适合Android模拟器的内核 git clone https://aosp.tuna.tsinghua.edu.cn/android/kernel/goldfish.git git branch -a git checkout android-goldfish-4.14-gchips 新建一个目录…

喜报!极限科技新获得一项国家发明专利授权:“搜索数据库的正排索引处理方法、装置、介质和设备”

近日&#xff0c;极限数据&#xff08;北京&#xff09;科技有限公司&#xff08;简称&#xff1a;极限科技&#xff09;新获得一项国家发明专利授权&#xff0c;专利名为 “搜索数据库的正排索引处理方法、装置、介质和设备”&#xff0c;专利号&#xff1a;ZL 2024 1 0479400…

谈谈跳台阶算法的记忆法和编程理念|青蛙跳台阶|递归|动态规划|算法|程序员面试|Java

简介 为什么会写这篇文章&#xff1f; 因为鄙人刷过此题多次&#xff0c;每次觉得自己会了&#xff0c;可下次还是不能一下子写出题解&#xff0c;故记录下我是如何记忆此题的&#xff0c;并且探索一些编程理念。 题目 一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级…

俄语打招呼和问候的12种表达方式,柯桥俄语培训

- Как дела ? 近况如何&#xff1f; -Нормально, а ты как? 还行吧&#xff0c;你呢&#xff1f; Vol.2 -Как себя чувствуете? 你感觉如何&#xff1f; -Все замечательно! 一切都非常棒。 Vol.3 -Ка…

详解 Macvlan 创建不同容器独立跑仿真(持续更新中)

一、概念介绍 1.1 什么是macvlan macvlan是一种网卡虚拟化技术&#xff0c;能够将一张网卡&#xff08;Network Interface Card, NIC&#xff09;虚拟出多张网卡&#xff0c;这意味着每个虚拟网卡都能拥有独立的MAC地址和IP地址&#xff0c;从而在系统层面表现为完全独立的网络…

颠覆传统编程:用ChatGPT十倍提升生产力

我们即将见证一个新的时代&#xff01;这是最好的时代&#xff0c;也是最坏的时代&#xff01; 需求背景 背景&#xff1a; 平时会编写博客&#xff0c;并且会把这个博客上传到github上&#xff0c;然后自己买一个域名挂到github上。 我平时编写的博客会有一些图片来辅助说明的…

拦截器Interceptor

概念&#xff1a;是一种动态拦截方法调用的机制&#xff0c;类似于过滤器。Spring框架中提供的&#xff0c;用来动态拦截方法的执行。 作用&#xff1a;拦截请求&#xff0c;在指定的方法调用前后&#xff0c;根据业务需要执行预先设定的代码。

nvdiadocker相关配置S3Gaussian

https://download.csdn.net/download/sinat_21699465/89458214 dockerfile文件参考&#xff1a; https://download.csdn.net/download/sinat_21699465/89458214 prework&#xff1a; 显卡驱动决定了cuda版本支持的上限。例如nvdia535驱动最高支持cuda12.2所以显卡驱动版本选…

如何快速绘制logistic回归预测模型的ROC曲线?

临床预测模型&#xff0c;也是临床统计分析的一个大类&#xff0c;除了前期构建模型&#xff0c;还要对模型的预测能力、区分度、校准度、临床获益等方面展开评价&#xff0c;确保模型是有效的&#xff01; 其中评价模型的好坏主要方面还是要看区分度和校准度&#xff0c;而区分…

2024全网最全面及最新且最为详细的网络安全技巧四 之 lsql注入以及mysql绕过技巧 (1)———— 作者:LJS

目录 4. SQL注入基础之联合查询 什么是SQL注入漏洞 SQL注入原理 SQL注入带来的危害 注入按照注入技术&#xff08;执行效果&#xff09;分类 简单联合查询注入语句 4.1 [网鼎杯 2018]Comment二次注入 正好总结一下绕过addslashes的方式 4.2 ciscn2019web5CyberPunk 复现平台 解…

im即时通讯软件系统,私有化部署国产化信创适配安全可控

私有化部署IM即时通讯软件系统是许多企业为了确保数据安全、控制隐私保护、提升灵活性而考虑的重要选择之一。信创适配安全可控是企业在私有化部署IM即时通讯软件系统时需要关注的关键点。本文将探讨私有化部署IM即时通讯软件系统的意义、信创适配的重要性&#xff0c;以及如何…

张宇1000题太难?这么刷只要30天就能吃透!

1000题真的难&#xff0c;一刷正确率不高是正常的&#xff01; 我不建议再继续去刷880题&#xff0c;因为继续开始做新题并没有太大的意义&#xff0c;老问题不解决&#xff0c;做新题的效果其实并不好。 如果一刷1000题正确率不高&#xff0c;我们应该反思为什么会这样&…

Java基础之练习(2)

需求: 键盘录入一个字符串,使用程序实现在控制台遍历该字符串 package String;import java.util.Scanner;public class StringDemo5 {public static void main(String[] args) {//录入一个字符串Scanner sc new Scanner(System.in);System.out.println("请输入一个字符串…

【JAVA】精致的五角星

输出的这幅图像中&#xff0c;一颗精致的金色五角星跃然于深红色背景之上&#xff0c;绽放出迷人的光彩。 要绘画这颗五角星&#xff0c;首先要了解五角星的构造和角度问题。我们可以分为内五边形&#xff0c;和外五边形。内五边形从他的中心到每个外点&#xff0c;连接起来&am…