这题就是找规律。小数据还是挺容易想的。大数据得再深入分析一下。

题意挺绕的。

其实就是字符串转换。字符串只能有两种字母,L或G。给定K和C,就能通过规则生成目标字符串。

那么,如果知道了K和C,以及目标字符串,那么是能够倒推出原字符串的。

现在问题是,目标字符串也不全给你看,限定你最多看s个。但是呢,也不要求你完全倒推出原字符串,而是只需要知道原字符串里是不是至少有一个G字符即可。

小数据极其简单,为什么呢,因为S=K,而看S个目标串字符完全可以倒推出原字符串啊。

因为原串的第1个字符,会在目标串的第1个字符;原串的第2个字符,会在目标串的第K+2个字符;原串的第3个字符,会在目标串的第2*K+3个字符……

然而,仅仅为了知道原串中是不是至少有一个G字符,必然不需要看这么多。于是继续分析。

例如,当K=5, C=2时,原串共有2^5=32种可能,相应的目标串(长度为25)也有32种,所以,我们最原始的方法,就是在这32种目标串里,每次选一个字符,以筛掉一半,最后去找那个全部为L的目标串(只有这一种才不含G字符,别的情况都含有G字符)。

然而通过将这32个目标串列出来发现,其实可以通过选择特定字符,一下子筛掉超过一半。

比如,第一次不是选1号字符,而是选择2号字符。如果2号字符为L,那么不仅说明原串的1号字符是L,而且2号字符也是L,这样一下子就能筛掉3/4的目标串。

同理,第二次选2*K+4号字符……,这样又能筛掉3/4的目标串。这样总的查看字符数量就几乎减少了一半。不管是不是最优解,但是比之前的笨方法肯定是高效了。

GCJ Qualification Round 2016 D题的更多相关文章

  1. GCJ Qualification Round 2016 C题

    题意是给定了一个叫“jamcoin”的定义,让你生成足够数量满足条件的jamcoin. jamcoin其实就可以理解成一个二进制整数,题目要求的要么长度为16位,要么为32位,一头一尾两个位必须是1, ...

  2. GCJ Qualification Round 2016 B题

    经典的翻饼问题,直接做:从下往上看,已翻好的饼忽略掉:从上往下,连续的已翻好的一起翻过来:整个翻过来. /* * Author : ben */ #include <cstdio> #in ...

  3. Facebook Hacker Cup 2014 Qualification Round 竞赛试题 Square Detector 解题报告

    Facebook Hacker Cup 2014 Qualification Round比赛Square Detector题的解题报告.单击这里打开题目链接(国内访问需要那个,你懂的). 原题如下: ...

  4. Facebook Hacker Cup 2014 Qualification Round

    2014 Qualification Round Solutions 2013年11月25日下午 1:34 ...最简单的一题又有bug...自以为是真是很厉害! 1. Square Detector ...

  5. [C++]Store Credit——Google Code Jam Qualification Round Africa 2010

    Google Code Jam Qualification Round Africa 2010 的第一题,很简单. Problem You receive a credit C at a local ...

  6. DP VK Cup 2012 Qualification Round D. Palindrome pairs

    题目地址:http://blog.csdn.net/shiyuankongbu/article/details/10004443 /* 题意:在i前面找回文子串,在i后面找回文子串相互配对,问有几对 ...

  7. Google Code Jam Africa 2010 Qualification Round Problem B. Reverse Words

    Google Code Jam Africa 2010 Qualification Round Problem B. Reverse Words https://code.google.com/cod ...

  8. Google Code Jam Africa 2010 Qualification Round Problem A. Store Credit

    Google Code Jam Qualification Round Africa 2010 Problem A. Store Credit https://code.google.com/code ...

  9. VK Cup 2016 - Qualification Round 2 A. Home Numbers 水题

    A. Home Numbers 题目连接: http://www.codeforces.com/contest/638/problem/A Description The main street of ...

随机推荐

  1. Solr5.2.1+Zookeeper3.4.9分布式集群搭建

    1.选取三台服务器 由于机器比较少,现将zookeeper和solr都部署在以下三台机器上.(以下操作都是在172.16.20.101主节点上进行的哦) 172.16.20.101 主节点 172.1 ...

  2. touch下拉刷新

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. python常用模块2

    collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict. ...

  4. es6 String.raw()

    模板字符串可以是原始的: ES6还为原生的String对象,提供了一个raw方法. 若使用String.raw 作为模板字符串的前缀,则模板字符串可以是原始(raw)的.反斜线也不再是特殊字符,\n  ...

  5. 洛谷—— P1407 工资

    https://www.luogu.org/problemnew/show/P1407 题目描述 有一家世界级大企业,他们经过调查,发现了一个奇特的现象,竟然在自己的公司里,有超过一半的雇员,他们的工 ...

  6. Jackson反序列化错误:com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field的解决方法

    说明:出现这种问题的情况是由于JSON里面包含了实体没有的字段导致反序列化失败. 解决方法: // 第一种解决方案 // ObjectMapper对象添加 mapper.configure(Deser ...

  7. IntelliJ IDEA重构技巧收集

    https://segmentfault.com/a/1190000002488608(重命名文件) http://www.jianshu.com/p/ab298b46bf50(快速生成方法) htt ...

  8. IIS下安装memcached管理工具—MemAdmin

    1.先看这篇文章 http://www.cnblogs.com/joylee/archive/2013/01/07/memadmin.html . 2.在IIS下安装的php-cgi.exe程序版本为 ...

  9. javascript 对象初探 (四)--- 内建对象之旅之Boolean

    var a = new Boolean() 我们要明白一点在这里的b是一个对象而不是一个基本数据类型的布尔值.如果想将b转化成基本数据类型的布尔值,我们可以调用她的valueof()方法(继承自Obj ...

  10. awk如何区分shell脚本传进来的参数和自身的参数?awk如何获取shell脚本传进来的参数;awk中如何执行shell命令

    问题:对于shell脚本,$0表示脚本本身,$1表示脚本的第一个参数,$2……依次类推:对于awk,$1表示分割后的第一个字段,$2……依次类推.那么对于shell脚本中的awk如何区分两者呢? 答案 ...