当前位置: 首页 > news >正文

PTA 斯诺克

斯诺克台球比赛中有21个球,其中有15个红球,6个彩球(黄、绿、棕、蓝、粉、黑)。甲乙二人轮流打球。打一个红球得1分,打一个彩球的得分如下:
黄球:2分; 绿球:3分; 棕球:4分;
蓝球:5分; 粉球:6分; 黑球:7分;
最后以得分高者为胜。
简化后的打球规则如下:
1.如果有红球,第奇数次必须打红球,打过的红球从桌面上拿走;
2.每打一个红球后,可以任意选一个彩球打,打红球后接着打的彩球不从桌面上拿走;
3. 如果桌面上已经没有红球可打了,那么按照分值从小到大的次序打彩球,这时候每打一个彩球都从桌面上拿走。
打球时犯规的判罚如下:

  1. 没有打中球,给对方加4分;
    2.没有按照打球规则打该打的球,即打中了错误的球时:
    (1)如果这个错误的球的分值大于4,那么给对方加等于这个球的分值;
    (2)如果这个错误的球的分值不大于4,那么给对方加4分;
    打中的错误球不从桌面上拿走。
    请统计某局比赛进行到现在为止的比分。

输入格式:

第一行有二个整数n和m,表示甲打了n个球,乙打了m个球。n和m之间以一个空格分隔。
第二行,有n个以空格分隔的整数,表示甲的n次连续打球情况。
第三行,有m个以空格分隔的整数,表示乙的m次连续打球情况。
第二行和第三行中:
(1)1至7的整数表示打了相应分值的球;
(2)最后一个数字是0,表示没有打中球犯规,0只会出现在这二行的最后一个数字处;
(3)打了错误球的犯规也只会出现在这二行最后一个数字处;
输入数据保证是正确,不会出现打到桌面上不存在的球的情况,数据不必检验。

输出格式:

只有一行,该行有二个整数(互相之间以一个空格分隔),表示比赛进行到现在为止甲乙二人的得分(先打的甲在前)。

输入样例1:

4 3
1 7 1 6 
1 7 1

输出样例1:

15 9

【样例说明1】
甲依次打了红球、黑球、红球、粉球,甲得15分(1+7+1+6);
乙依次打了红球、黑球、红球,乙得9分(1+7+1);

输入样例2:

11 24
1 7 1 7 1 7 1 7 1 7 1 
1 7 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1 7 2 3 4 5 6 7

输出样例2:

41 99

【样例说明2】
甲每打一个红球后打一个黑球(共打了5次),最后打的是红球,得41分:
5*(1+7)+1=41;;
乙每打一个红球后打一个黑球,打完所有红球后,按规则依次将黄、绿、棕、蓝、粉、黑球全部打进,得99分:9*(1+7)+2+3+4+5+6+7=99;

代码实现:

#include<stdio.h>
int ball[8]={0};int red=15;
//虽然红球只有15颗但是最后一次打完红球还可以打一次彩球
int flag=0;
void play(int i,int* A,int *B)
{int a;scanf("%d",&a);if(a==0){*B+=4;return;}if(red||flag){if(i%2){//奇数次击打if(a==1){*A+=1;red--;flag=1;}else{if(a>4)*B+=a;else *B+=4;flag=0;}}else{//偶数次击打*A+=a;flag=0;}}else{//红球已经打光for(int j=2;j<a;j++){//判断顺序有没有打错if(ball[j]==0){if(a>4)*B+=a;else *B+=4;return;}}ball[a]=1;*A+=a;}return;
}
int main(void)
{int n,m;scanf("%d%d",&n,&m);int A=0,B=0;for(int i=1;i<=n;i++){play(i,&A,&B);}for(int i=1;i<=m;i++){play(i,&B,&A);}printf("%d %d\n",A,B);return 0;
}

相关文章:

  • excel自己记录
  • 【Java 进阶篇】Jedis:让Java与Redis轻松对话的利器
  • 《云计算:云端协同,智慧互联》
  • Qt ListWidget
  • Java JDBC中ResultSet的详细说明
  • Ubuntu18 Opencv3.4.12 viz 3D显示安装、编译、使用、移植
  • Arduino驱动PT100数字K型高温传感器(温湿度传感器)
  • 数据库基础入门 — SQL排序与分页
  • 武汉光庭公司地图引擎开发工程师24秋招三场面试完整流程
  • 使用C++从0到1实现人工智能神经网络及实战案例
  • UE 材质,如何只取0~1之间的值,其余值抛弃
  • Vuejs+ElementUI搭建后台管理系统框架
  • Jmeter脚本录制:抓取IOS手机请求包
  • 滑块验证码之模拟人工滑速
  • Navicat 技术指引 | GaussDB 数据查看器
  • hexo+github搭建个人博客
  • 《深入 React 技术栈》
  • 【剑指offer】让抽象问题具体化
  • ECMAScript6(0):ES6简明参考手册
  • es6--symbol
  • mysql中InnoDB引擎中页的概念
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Python3爬取英雄联盟英雄皮肤大图
  • Rancher-k8s加速安装文档
  • React as a UI Runtime(五、列表)
  • Redis学习笔记 - pipline(流水线、管道)
  • 工程优化暨babel升级小记
  • 构造函数(constructor)与原型链(prototype)关系
  • 关于List、List?、ListObject的区别
  • 回流、重绘及其优化
  • 基于webpack 的 vue 多页架构
  • 如何设计一个比特币钱包服务
  • 入手阿里云新服务器的部署NODE
  • 时间复杂度与空间复杂度分析
  • 温故知新之javascript面向对象
  • 问题之ssh中Host key verification failed的解决
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • ​渐进式Web应用PWA的未来
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • !!java web学习笔记(一到五)
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (+4)2.2UML建模图
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (LeetCode C++)盛最多水的容器
  • (SpringBoot)第二章:Spring创建和使用
  • (web自动化测试+python)1
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (理论篇)httpmoudle和httphandler一览
  • (强烈推荐)移动端音视频从零到上手(上)
  • (全注解开发)学习Spring-MVC的第三天
  • (转)Mysql的优化设置
  • (转载)hibernate缓存
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)