GCJ Qualification Round 2016 D题
这题就是找规律。小数据还是挺容易想的。大数据得再深入分析一下。
题意挺绕的。
其实就是字符串转换。字符串只能有两种字母,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题的更多相关文章
- GCJ Qualification Round 2016 C题
题意是给定了一个叫“jamcoin”的定义,让你生成足够数量满足条件的jamcoin. jamcoin其实就可以理解成一个二进制整数,题目要求的要么长度为16位,要么为32位,一头一尾两个位必须是1, ...
- GCJ Qualification Round 2016 B题
经典的翻饼问题,直接做:从下往上看,已翻好的饼忽略掉:从上往下,连续的已翻好的一起翻过来:整个翻过来. /* * Author : ben */ #include <cstdio> #in ...
- Facebook Hacker Cup 2014 Qualification Round 竞赛试题 Square Detector 解题报告
Facebook Hacker Cup 2014 Qualification Round比赛Square Detector题的解题报告.单击这里打开题目链接(国内访问需要那个,你懂的). 原题如下: ...
- Facebook Hacker Cup 2014 Qualification Round
2014 Qualification Round Solutions 2013年11月25日下午 1:34 ...最简单的一题又有bug...自以为是真是很厉害! 1. Square Detector ...
- [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 ...
- DP VK Cup 2012 Qualification Round D. Palindrome pairs
题目地址:http://blog.csdn.net/shiyuankongbu/article/details/10004443 /* 题意:在i前面找回文子串,在i后面找回文子串相互配对,问有几对 ...
- 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 ...
- 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 ...
- 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 ...
随机推荐
- 【CF1015C】Songs Compression(贪心)
题意: 给定n和m,n组(a[i],b[i]),每一组a[i]可以压缩为b[i],求最少只需要压缩几个,使得m可以存下所有数据,无解输出-1 思路:按差贪心,排序 #include<cstdio ...
- Object转json-常见问题总结
Object转json-常见问题总结 1.Object中有Timestamp.Date等日期类型数据 http://blog.csdn.net/without0815/article/details/ ...
- 转 SPOOLING技术——操作系统
传送门 SPOOLING技术——操作系统 SPOOLING技术(Simultaneous Peripheral Operating On Line) 同时联机外围操作技术,它是关于慢速字符设备如何与计 ...
- Python日志(logging)模块使用方法简介
A logger is configured to have a log level. This log level describes the severity of the messages th ...
- 本地hosts文件
(1)什么是Hosts文件? Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网 ...
- Android Q 兼容那些事
文章微信公众号「AndroidTraveler」首发 5 月 20 号参加了 Android Q Labs,因此本篇说一说会议的部分内容以及自己的一些想法. 会议主要是加深开发者对 Android Q ...
- 洛谷—— P1847 轰炸II
https://www.luogu.org/problemnew/show/1847 题目背景 本题为轰炸数据加强版 题目描述 一个城市遭到了M次轰炸,每次都炸了一个每条边都与边界平行的矩形 在轰炸后 ...
- git移除上一次的commit中误添加的文件
在使用git进行版本管理时,往往会出现一些误操作,比如将一些不加上传的文件放到了暂存区,即上传到了上一次commit中 比如: commit c134ab90ca7c4daf8bfa22e3ad706 ...
- Cocos2d-X中Menu的综合运用
今天将曾经写的代码和项目集成到了一个菜单中,能够通过菜单切换到曾经做的项目 程序的project文件夹 主要代码分析: LessonMenu.h中实现创建菜单,遍历菜单通过菜单切换到各个项目 #ifn ...
- 3D投影
3D投影方式的几大种类: 1.快门式 主动快门式即时分式,不过我们通常用前面的叫法,快门式3D眼镜(3D Shutter Glasses,也称作LC shutter glassesor active ...