吐槽一下这道题:

数据太水了!!!

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

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

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

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

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

  1. 执行 n {
  2. 记录上次球的颜色
  3. 读入这次球的颜色
  4. 如果 (这次球的颜色为 0) {
  5. 直接给对方加 4
  6. } 否则 如果 (这是第单数个球 并且 红球没有打完) {
  7. 如果 (这次球的颜色不是 1) {
  8. 如果 (这次球的颜色对应的分数比 4 大) {
  9. 给对方加上这次球的颜色对应的分数
  10. } 否则 {
  11. 给对方加 4
  12. }
  13. } 否则 {
  14. 给自己加 1
  15. 红球个数减 1
  16. 如果 (已经没有红球了) {
  17. 颜色加 1
  18. 该颜色个数置为 1
  19. }
  20. }
  21. } else {
  22. if ((上次打的不是红球 && 这次打的颜色比应该打的颜色大) || 这次打了红球) {
  23. 如果 (这次球的颜色对应的分数比 4 大) {
  24. 给对方加上这次球的颜色对应的分数
  25. } 否则 {
  26. 给对方加 4
  27. }
  28. } else {
  29. 给自己加 这次球的颜色对应的分数
  30. 如果 (这个不是红球后面紧随的球) 该球个数减 1;
  31. 如果 (已经没有 color 颜色的球了) {
  32. 颜色加 1
  33. 该颜色个数置为 1
  34. }
  35. }
  36. }
  37. }

最终代码

  1. /*
  2. Name: Z*** Y* (H***Z*** J***L** Middle School, China)
  3. Copyright: 航空信奥
  4. Author: 航空信奥
  5. Date: 2018-10-19
  6. Description: the program that can solve snooker
  7. */
  8. #include <queue>
  9. #include <vector>
  10. #include <stdio.h>
  11. #include <iostream>
  12. #include <string.h>
  13. #include <algorithm>
  14. using std::max;
  15. using std::min;
  16. using std::cerr;
  17. using std::endl;
  18. using std::sort;
  19. using std::queue;
  20. using std::vector;
  21. using std::priority_queue;
  22. struct fast_IO {
  23. #define fast_IO_all_DEBUG 0
  24. #define fast_IO_read_DEBUG 0
  25. #define fast_IO_write_DEBUG 0
  26. bool __read_sign_LowThan0;
  27. char __read_buf_ch;
  28. template <typename type>
  29. void read(type &res)
  30. {
  31. __read_sign_LowThan0 = 0;
  32. __read_buf_ch = getchar();
  33. while (__read_buf_ch > '9' || __read_buf_ch < '0') {
  34. __read_buf_ch = getchar();
  35. if (__read_buf_ch == '-') {
  36. __read_sign_LowThan0 = 1;
  37. __read_buf_ch = getchar();
  38. break;
  39. }
  40. }
  41. res = (__read_buf_ch & 15);
  42. __read_buf_ch = getchar();
  43. while (__read_buf_ch <= '9' && __read_buf_ch >= '0') {
  44. res = (res << 3) + (res << 1) + (__read_buf_ch & 15);
  45. __read_buf_ch = getchar();
  46. }
  47. if (__read_sign_LowThan0) {
  48. res = ((~res) + 1);
  49. }
  50. #if fast_IO_all_DEBUG || fast_IO_read_DEBUG
  51. printf("[TEST $ read %d $ ]", res);
  52. #endif
  53. }
  54. } io;
  55. #define read io.read
  56. #define write io.write
  57. #define passing() fprintf(stderr, "passing line [%d] in function %s.\n", __LINE__, __FUNCTION__)
  58. #define debug(x) cerr << "[debug] " << #x << " = " << x << endl
  59. #define Max_N (107)
  60. #define Max_M
  61. #define Max_K
  62. #define Max_LogN
  63. #define Max_LogM
  64. #define Max_LogK
  65. int n, m, k;
  66. #define P 10007
  67. int a[Max_N] = {0};
  68. bool used[Max_N] = {false};
  69. #define FILE
  70. int color = 1;
  71. int less = 15;
  72. void doit(int &n, int &mine, int &your)
  73. {
  74. int t, las;
  75. for (int i = 1; i <= n; i++) {
  76. las = t;
  77. read(t);
  78. if (!t) {
  79. your += 4;
  80. } else if ((i & 1) && color == 1) {
  81. if (t != 1) {
  82. if (t > 4) {
  83. your += t;
  84. } else {
  85. your += 4;
  86. }
  87. } else {
  88. mine++;
  89. less--;
  90. if (less == 0) {
  91. color++;
  92. less = 1;
  93. }
  94. }
  95. } else {
  96. if ((las != 1 && t > color) || t == 1) {
  97. if (t > 4) {
  98. your += t;
  99. } else {
  100. your += 4;
  101. }
  102. } else {
  103. mine += t;
  104. if (las != 1 && color != 1) less--;
  105. if (less == 0) {
  106. color++;
  107. less = 1;
  108. }
  109. }
  110. }
  111. // printf("ball %d: %d:%d [color = %d eith %d in low]\n", t, mine, your, color, less);
  112. }
  113. }
  114. int main()
  115. {
  116. #ifdef FILE
  117. freopen("snooker.in", "r", stdin);
  118. freopen("snooker.out", "w", stdout);
  119. #endif
  120. read(n);
  121. read(m);
  122. int ansa(0), ansb(0);
  123. doit(n, ansa, ansb);
  124. doit(m, ansb, ansa);
  125. printf("%d %d", ansa, ansb);
  126. return 0;
  127. }

洛谷 题解 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. java本地缓存

    1.为什么要使用缓存 由于服务器.数据库.网络等资源有限,无法支撑越来越多的请求与计算量,所以将一部分数据放在缓存中,以此减小薄弱环节的计算量和请求流程. 网站中缓存的应用场景:        1:可 ...

  2. 深入理解 DNS

    深入理解 DNS 简介 DNS(Domain Name System)域名系统,它是一个将域名和 IP 地址相互映射的一个分布式数据库,把容易记忆的主机名转换成主机 IP 地址. DNS使用 TCP ...

  3. java编程思想第四版第十四章 类型信息总结

    1. Class 对象: 所有的类都是在对其第一次使用的时候,动态加载到JVM中的.当程序创建第一个对类的静态成员的引用时,就会加载这个类.这说明构造器也是类的静态方法.即使在构造器之前并没有stat ...

  4. 移动端自动化测试Appium环境搭建(part1-2-3)

    Appium移动端自动化测试相信大家都不陌生,appium的铁哥们是selenium,不管是selenium还是appium,都是调用webdriver来做自动化测试.今天关于appium的介绍我们不 ...

  5. Nginx 匹配流程一览

    在 nginx server 模块中,location 的定义长被用来匹配一个标准的 URI, 并根据 URI 的不同做出相应的服务方案. nginx location 匹配的优先级 在 locati ...

  6. 带你涨姿势的认识一下 Kafka 消费者

    之前我们介绍过了 Kafka 整体架构,Kafka 生产者,Kafka 生产的消息最终流向哪里呢?当然是需要消费了,要不只产生一系列数据没有任何作用啊,如果把 Kafka 比作餐厅的话,那么生产者就是 ...

  7. Centos下安装PHP ldap扩展

    Centos下安装PHP ldap扩展,有两种方法,仅供参考. 一.在线安装 执行下面命令: 1 yum install PHP-ldap 可能出现的问题: Error: php70w-common- ...

  8. PHP安全之道学习笔记2:编码安全指南

    编码安全指南 编程本身就应该是一门艺术,而安全编程更是一种在刀尖上舞蹈的艺术,不仅要小心脚下的锋利寒刃,更要小心来自网络黑客或攻击者的狂轰乱炸. - by code artist 1.hash比较的缺 ...

  9. vue 安装指令

    vue init webpack 项目名 创建项目cd 项目名 打开项目 npm install vuex --save 安装vuex在一个模块化的打包系统中,您必须显式地通过 Vue.use() 来 ...

  10. es6 map的用法

    let arr =[ {title:'aaaa',read:100,hot:true}, {title:'bbbb',read:50,hot:false}, {title:'ccc',read:100 ...