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

题意挺绕的。

其实就是字符串转换。字符串只能有两种字母,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. Purpose of XMLString::transcode

    原文地址http://stackoverflow.com/questions/9826518/purpose-of-xmlstringtranscode I don't seem to underst ...

  2. doT.js-doT模板方便快捷的组织页面DOM

    重来没有想过,作为一个坐吃等死的前端也会有学习引擎模板的一天 都是被现实所逼呀.学习优秀代码时,一句一句翻译.忽然看到{{   }}这个包裹的代码.糟心了!看不懂,咋办?学呀!!!!!! 这是我开始学 ...

  3. Codeforces Gym101606 J.Just A Minim (2017 United Kingdom and Ireland Programming Contest (UKIEPC 2017))

    J Just A Minim 超级无敌大水题,但是被精度卡了一手,输出要精确到小数点后6位,我直接输出的... 代码: 1 #include<iostream> 2 #include< ...

  4. Xamarin.Forms特殊的视图BoxView

    Xamarin.Forms特殊的视图BoxView   BoxView是Xamarin.Forms比较特殊的视图.该视图构建非常简单,其作用也很单一.它的作用就是构成一个特定颜色的色块.在界面设计中, ...

  5. AnsiString类型定义的时候可以直接指定代码页,比如950繁体字,936日文

    procedure TForm3.FormCreate(Sender: TObject); type AnsiStringForPage = type AnsiString(950);//代码页 va ...

  6. php 打印今天,昨天,本周,上周,当月,上月,本季,上季,今年,去年数据

    if($filter['mode']) { switch ($filter['mode']) { case 1://今天的数据 $time_start = date("Y-m-d H:i:s ...

  7. 一道简单DP题

    问题: 给定一个整数的数组,相邻的数不能同时选,求从该数组选取若干整数,使得他们的和最大,要求只能使用o(1)的空间复杂度.要求给出伪码. 解答: int maxSum(vector<int&g ...

  8. 26个高效工作的小技巧 z

    1.时间常有,时间优先. 2.时间总会有的:每天只计划4-5 小时真正的工作. 3.当你在状态时,就多干点:不然就好好休息:有时候会连着几天不是工作状态,有时在工作状态时却又能天天忙活 12 小时,这 ...

  9. Boost.Asio c++ 网络编程翻译(18)

    同步服务端 同步服务端也相当简单.它须要两个线程,一个负责接收新的client.另外一个负责处理已经存在的client. 它不能使用单线程:等带一个新的client是一个堵塞操作,所以我们须要另外一个 ...

  10. maven编译maven-surefire-plugin插件报错

    1.编译错误信息: [INFO] ------------------------------------------------------------------------ [ERROR] Fa ...