吐槽一下这道题:

数据太水了!!!

请注意,这题如果你考虑了犯规的情况,那么你的分数。。。可能会和我一样,只有40分。

也就是说,这是一篇AC不了这道题的题解!!!

现在,我来讲一下这道题的正解:

  1. 两个变量 lesscolor: less 记录剩余颜色为 color 的球的个数,且场上没有颜色比 less 小的球。
  2. 由题意,当场上没有红球时,第单数个球必须是红球
  3. 当场上有红球时,第双数个球必须是彩球,且击打不消耗个数。
  4. less0 时,less = 0, color++;

给出处理某一个人的伪代码:

执行 n 次 {
记录上次球的颜色
读入这次球的颜色
如果 (这次球的颜色为 0) {
直接给对方加 4 分
} 否则 如果 (这是第单数个球 并且 红球没有打完) {
如果 (这次球的颜色不是 1) {
如果 (这次球的颜色对应的分数比 4 大) {
给对方加上这次球的颜色对应的分数
} 否则 {
给对方加 4 分
}
} 否则 {
给自己加 1 分
红球个数减 1
如果 (已经没有红球了) {
颜色加 1
该颜色个数置为 1
}
}
} else {
if ((上次打的不是红球 && 这次打的颜色比应该打的颜色大) || 这次打了红球) {
如果 (这次球的颜色对应的分数比 4 大) {
给对方加上这次球的颜色对应的分数
} 否则 {
给对方加 4 分
}
} else {
给自己加 这次球的颜色对应的分数 分
如果 (这个不是红球后面紧随的球) 该球个数减 1;
如果 (已经没有 color 颜色的球了) {
颜色加 1
该颜色个数置为 1
}
}
}
}

最终代码

/*
Name: Z*** Y* (H***Z*** J***L** Middle School, China)
Copyright: 航空信奥
Author: 航空信奥
Date: 2018-10-19
Description: the program that can solve snooker
*/
#include <queue>
#include <vector>
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>
using std::max;
using std::min;
using std::cerr;
using std::endl;
using std::sort;
using std::queue;
using std::vector;
using std::priority_queue; struct fast_IO {
#define fast_IO_all_DEBUG 0
#define fast_IO_read_DEBUG 0
#define fast_IO_write_DEBUG 0 bool __read_sign_LowThan0;
char __read_buf_ch; template <typename type>
void read(type &res)
{
__read_sign_LowThan0 = 0;
__read_buf_ch = getchar();
while (__read_buf_ch > '9' || __read_buf_ch < '0') {
__read_buf_ch = getchar();
if (__read_buf_ch == '-') {
__read_sign_LowThan0 = 1;
__read_buf_ch = getchar();
break;
}
}
res = (__read_buf_ch & 15);
__read_buf_ch = getchar();
while (__read_buf_ch <= '9' && __read_buf_ch >= '0') {
res = (res << 3) + (res << 1) + (__read_buf_ch & 15);
__read_buf_ch = getchar();
}
if (__read_sign_LowThan0) {
res = ((~res) + 1);
}
#if fast_IO_all_DEBUG || fast_IO_read_DEBUG
printf("[TEST $ read %d $ ]", res);
#endif
}
} io; #define read io.read
#define write io.write #define passing() fprintf(stderr, "passing line [%d] in function %s.\n", __LINE__, __FUNCTION__)
#define debug(x) cerr << "[debug] " << #x << " = " << x << endl #define Max_N (107)
#define Max_M
#define Max_K
#define Max_LogN
#define Max_LogM
#define Max_LogK int n, m, k;
#define P 10007
int a[Max_N] = {0};
bool used[Max_N] = {false}; #define FILE
int color = 1;
int less = 15; void doit(int &n, int &mine, int &your)
{
int t, las;
for (int i = 1; i <= n; i++) {
las = t;
read(t);
if (!t) {
your += 4;
} else if ((i & 1) && color == 1) {
if (t != 1) {
if (t > 4) {
your += t;
} else {
your += 4;
}
} else {
mine++;
less--;
if (less == 0) {
color++;
less = 1;
}
}
} else {
if ((las != 1 && t > color) || t == 1) {
if (t > 4) {
your += t;
} else {
your += 4;
}
} else {
mine += t;
if (las != 1 && color != 1) less--;
if (less == 0) {
color++;
less = 1;
}
}
}
// printf("ball %d: %d:%d [color = %d eith %d in low]\n", t, mine, your, color, less);
}
} int main()
{
#ifdef FILE
freopen("snooker.in", "r", stdin);
freopen("snooker.out", "w", stdout);
#endif
read(n);
read(m);
int ansa(0), ansb(0);
doit(n, ansa, ansb);
doit(m, ansb, ansa);
printf("%d %d", ansa, ansb);
return 0;
}

洛谷 题解 P2645 【斯诺克】的更多相关文章

  1. P2645 斯诺克 题解

    P2645 斯诺克 题目背景 镇海中学开设了很多校本选修课程,有体育类.音乐类.美术类.无线电测向.航空航海航天模型制作等,力争使每位学生高中毕业后,能学到一门拿得出手的兴趣爱好,为将来的终身发展打下 ...

  2. 洛谷 题解 UVA572 【油田 Oil Deposits】

    这是我在洛谷上的第一篇题解!!!!!!!! 这个其实很简单的 我是一只卡在了结束条件这里所以一直听取WA声一片,详细解释代码里见 #include<iostream> #include&l ...

  3. 洛谷 题解 P1600 【天天爱跑步】 (NOIP2016)

    必须得说,这是一道难题(尤其对于我这样普及组205分的蒟蒻) 提交结果(NOIP2016 天天爱跑步): OJ名 编号 题目 状态 分数 总时间 内存 代码 / 答案文件 提交者 提交时间 Libre ...

  4. 洛谷题解P4314CPU监控--线段树

    题目链接 https://www.luogu.org/problemnew/show/P4314 https://www.lydsy.com/JudgeOnline/problem.php?id=30 ...

  5. 洛谷题解 CF777A 【Shell Game】

    同步题解 题目翻译(可能有童鞋没读懂题面上的翻译) 给你三张牌0,1,2. 最初选一张,然后依次进行n次交换,交换规则为:中间一张和左边的一张,中间一张和右边一张,中间一张和左边一张...... 最后 ...

  6. 洛谷题解 CF807A 【Is it rated?】

    同步题解 题目 好吧,来说说思路: 1.先读入啦~(≧▽≦)/~啦啦啦 2.判断a[i]赛前赛后是否同分数,如果分数不同,则输出,return 0 . 3.如果同分数,则判断a[i]赛前(或赛后)是否 ...

  7. 洛谷题解 P1138 【第k小整数】

    蒟蒻发题解了 说明:此题我用的方法为桶排(我翻了翻有人用了桶排只不过很难看出来,可能有些重复的,这个题只是作为一个专门的桶排来讲解吧) (不会算抄袭吧 ‘QWaWQ’) 简单来说(会的人跳过就行): ...

  8. 【洛谷题解】P2303 [SDOi2012]Longge的问题

    题目传送门:链接. 能自己推出正确的式子的感觉真的很好! 题意简述: 求\(\sum_{i=1}^{n}gcd(i,n)\).\(n\leq 2^{32}\). 题解: 我们开始化简式子: \(\su ...

  9. 洛谷题解 P2865 【[USACO06NOV]路障Roadblocks】

    链接:https://www.luogu.org/problemnew/show/P2865 题目描述 Bessie has moved to a small farm and sometimes e ...

随机推荐

  1. javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: ResultSet is from UPDATE. No Data.

    Java jpa调用存储过程,抛出异常如下: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCEx ...

  2. servlet三大组件

    servlet大致可以分为三个:简单servlet.过滤servlet.监听servlet servlet: servlet的创建 创建一个类并实现Servlet接口. 重写service方法. 在服 ...

  3. JavaScript中BOM与DOM的使用

    BOM: 概念:Browser Object Model 浏览器对象模型 将浏览器的各个组成部分封装成对象. 组成: Window:窗口对象 Navigator:浏览器对象 Screen:显示器屏幕对 ...

  4. 创建基于OData的Web API - Knowledge Builder API, Part III:Write Model

    在前两篇文章<Part I: Business Scenario> 和<Part II: Project Setup>后,可以开始真正Model的创建. 步骤如下: 1. 创建 ...

  5. 提交代码到github托管

    廖雪峰官网:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000,感觉初学很棒的一个地 ...

  6. Test Complete 的自动化测试 --- 计算器

    Test Complete 的自动化测试 --- 计算器   ·PS:工具:Test Complete, OS: win XP, (win10 不支持该工具的自动化测试) ·该篇博客将会讲1.如何录制 ...

  7. XjhDemo 插入数据

    create database XjhDemo gouse XjhDemogo --商品类别Create table Sort( SortId int primary key identity(1,1 ...

  8. su root

    1. 命令行方式 ansible zabbix_agents --become --become-method=su -K -m shell -a 'whoami' 2. 变量方式 [zabbix_a ...

  9. Redis报错: StackExchange.Redis.RedisServerException: Endpoint 39.105.22.111:7200 serving hashslot 12448 is not reachable at this point of time.

    emmmm……要下班了,简单记录一下. 如果是127.0.0.1:7200报这个错,请移步 https://blog.csdn.net/foreverhot1019/article/details/7 ...

  10. Djangoday1 入门及第一个apphelloworld

    1 Django基础指令新建一个django project新建app创建数据库表,更新数据库表或字段使用开发服务器清空数据库创建超级管理员导出数据 导入数据Django 项目环境终端数据库命令行更多 ...