【c++】高精度算法(洛谷刷题2024)乒乓球详解

2024-02-05 12:30

本文主要是介绍【c++】高精度算法(洛谷刷题2024)乒乓球详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

系列文章目录

第一题  乒乓球


视频:http://【洛谷题单 - 算法 - 高精度】https://www.bilibili.com/video/BV1Ym4y1s7BD?vd_source=66a11ab493493f42b08b31246a932bbb

目录

系列文章目录

第一题  乒乓球

前言

一、题目以及引领思考

二、题解与代码

1.输入输出案例

2.代码及解析

总结


前言

本题运用到了高精度算法,具体体现在记录乒乓赛输赢时有无数场,我们把每一场都记录在数组中,而不是简单的一两场


提示:以下是本篇文章正文内容,下面案例可供参考

一、题目以及引领思考

思路解析
①差值正规乒乓球比赛,不仅分数要大于11(或21),两者分数相差也要大于2。如果比赛分数达到11-10,比赛会继续。直到一个人比另外一个人多两分。(如13-11)
②思想与埃筛法比较相似,只看其中一队,那另一队的胜利就代表我们所看重的那一对的失败,我们用1表示胜利的场,用2表示失败的场,存在数组里,然后用一个数进行统计数组中1,2的个数

误区

这个题还有一个重点就是记录分数时除了与胜利场数有关外,还与胜利顺序有关

二、题解与代码

1.输入输出案例

输入:
 

WWWWWWWWWWWWWWWWWWWW
WWLWE

输出:

11:0
11:0
1:121:0
2:1

2.代码及解析

代码如下(示例):

#include <bits/stdc++.h>
using namespace std;
int a[1000000];
int  x,y;//记录输赢场数 
int main()
{char s;for(int i=1;cin>>s&&s!='E';i++)//读入每场的输赢 ,s起中间作用 {if(s=='W')a[i]=1;//赢的场记为1 else a[i]=2; //输的场记为2 }//11进制如下: for(int i=1;1;i++)
{if(a[i]==1)x++;if(a[i]==2)y++;if(a[i]==0)//此时所有场次已经统计完,输出最后一次的记录结果 {cout<<x<<":"<<y<<endl<<endl;break;}if(x-y>=2||y-x>=2)//是否存在2的差值 if(x>=11||y>=11){//是否为11制 cout<<x<<":"<<y<<endl;	x=0;//清零,下一回合 y=0;}
}
x=0;//清零,方便21制计算 
y=0;//21进制如下: 
for(int i=1;1;i++)
{if(a[i]==1)x++;if(a[i]==2)y++;if(a[i]==0){cout<<x<<":"<<y<<endl;break;}if(x-y>=2||y-x>=2)if(x>=21||y>=21)
{	cout<<x<<":"<<y<<endl;x=0;y=0;	
}
}
return 0;	}

总结

以上就是今天要讲的内容,本文介绍了洛谷中高精度算法的第一题,希望对您有所帮助~

这篇关于【c++】高精度算法(洛谷刷题2024)乒乓球详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python获取C++中返回的char*字段的两种思路

《Python获取C++中返回的char*字段的两种思路》有时候需要获取C++函数中返回来的不定长的char*字符串,本文小编为大家找到了两种解决问题的思路,感兴趣的小伙伴可以跟随小编一起学习一下... 有时候需要获取C++函数中返回来的不定长的char*字符串,目前我找到两种解决问题的思路,具体实现如下:

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

Redis实现延迟任务的三种方法详解

《Redis实现延迟任务的三种方法详解》延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务,本文为大家整理了三种常见的实现方法,感兴趣的小伙伴可以参考一下... 目录1.前言2.Redis如何实现延迟任务3.代码实现3.1. 过期键通知事件实现3.2. 使用ZSet实现延迟任务3.3

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Python Faker库基本用法详解

《PythonFaker库基本用法详解》Faker是一个非常强大的库,适用于生成各种类型的伪随机数据,可以帮助开发者在测试、数据生成、或其他需要随机数据的场景中提高效率,本文给大家介绍PythonF... 目录安装基本用法主要功能示例代码语言和地区生成多条假数据自定义字段小结Faker 是一个 python

Java Predicate接口定义详解

《JavaPredicate接口定义详解》Predicate是Java中的一个函数式接口,它代表一个判断逻辑,接收一个输入参数,返回一个布尔值,:本文主要介绍JavaPredicate接口的定义... 目录Java Predicate接口Java lamda表达式 Predicate<T>、BiFuncti

详解如何通过Python批量转换图片为PDF

《详解如何通过Python批量转换图片为PDF》:本文主要介绍如何基于Python+Tkinter开发的图片批量转PDF工具,可以支持批量添加图片,拖拽等操作,感兴趣的小伙伴可以参考一下... 目录1. 概述2. 功能亮点2.1 主要功能2.2 界面设计3. 使用指南3.1 运行环境3.2 使用步骤4. 核

一文详解JavaScript中的fetch方法

《一文详解JavaScript中的fetch方法》fetch函数是一个用于在JavaScript中执行HTTP请求的现代API,它提供了一种更简洁、更强大的方式来处理网络请求,:本文主要介绍Jav... 目录前言什么是 fetch 方法基本语法简单的 GET 请求示例代码解释发送 POST 请求示例代码解释

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n