timus_1007_代码字
题目要求:对于所有一个长度为N的字(这些字由0和1组成),在经过一条线路后,这些字可能会做如下的修改:
1. 0可能变成1,但只能发生一次。
2. 0或者1可能被去掉,但也只能发生一次。
3. 0或者1可能被插入到字中,但也只能发生一次。
输入是字的长度n和经过线路后的字,求输入线路前的字。输入线路前的字的长度为n,字中1的位置之和要么是n+1的倍数,要么是0。如字1001,字长为4,其中1的位置之和为1+4=5,所以满足字中1的位置之和为4+1的倍数。
样例输入:
4
0000
011
1011
11011
样例输出:
0000
0110
1001
1111
这道题其实有点歧义,一种理解是字在通过线路后只能被三种可能中的一种修改,另一种理解是可以被三种中的一种,两种或者三种同时修改。
如果是第一种情况,题目就很简单了,只要根据输入字的的长度,就可以判断字是由三种情况的哪种改变的。
情况1:如果字的长度为n,说明是被第一种情况改变的。首先计算字中1的位置之和sum,然后便可以知道被1取代的0的位置是sum%(n+1)。当然如果sum%(n+1)==0,说明字根本就没有改变;
情况2:如果字的长度是n-1,说明是被第二种情况改变的。试探性地将0或者1插入到字的第一个或者第二个....或者第n个位置,从而得到长度为n的字。计算这时字中1的位置之和sum,如果sum%(n+1)为0,则这个字就是我们要的字。
情况3:如果字的长度是n+1,说明是被第三种情况改变的。试探性地将字的第一个或者第二个....或者第n个位置的数字删除,得到长度为n的字。计算这时字中1的位置之和sum,如果sum%(n+1)为0,则这个字就是我们要的字。
通过这种方法提交,结果是AC。不过感觉题目应该不是这个意思,也许是测试数据太简单了吧。
如果是第二种情况,要比第一种复杂一些。也是根据输入字的长度来分三种情况:
情况1:如果字的长度是n-1,说明一定是被第二种情况改变的过的,当然有可能也被第一种情况改变过,一定不可能被第三种情况改变过。试探性地将0或者1插入到字的第一个或者第二个....或者第n个位置,从而得到长度为n的字。计算这时字中1的位置之和sum,如果sum%(n+1)为0,则这个字就是我们要的字。如果不为0,而且字在sum%(n+1)的位置是1,那么这就变成了第一种理解的情况1,只要把位置sum%(n+1)的1改变成0就可以得到我们想要的字。
情况2:如果字的长度是n+1,说明是被第三种情况改变的,当然有可能也被第一种情况改变过,一定不可能被第三种情况改变过。试探性地将字的第一个或者第二个....或者第n个位置的数字删除,得到长度为n的字。计算这时字中1的位置之和sum,如果sum%(n+1)为0,则这个字就是我们要的字。和情况1一样,如果不为0,而且字在sum%(n+1)的位置是1,只要把位置sum%(n+1)的1改变成0就可以得到我们想要的字。
情况3:如果字的长度为n,又要分三种情况:
- 这种情况就是第一种理解的情况1。
- 试探性的删除字中的一位(这一位可以是在位置1,2...n),然后就变成情况1了。
- 试探性的向字中插入一位(这一位可以是在位置1,2...n+1),然后就变成情况2了。
不过用这种理解写的代码去提交,结果是WA。所以感觉这道题目做的真实没意思,不知道是不是我理解错了题目的意思,反正discuss里面讨论了很多。
附件:源代码
timus_1007_代码字的更多相关文章
- 收集入侵Windows系统的证据
随着网络的不断扩大,网络安全更加会成为人们的一个焦点,同时也成为是否能进一步投入到更深更广领域的一个基石.当然网络的安全也是一个动态的概念,世界上没有绝对安全的网络,只有相对安全的网络.相对安全环境的 ...
- R语言之RCurl实现文件批量下载
前言: RCurl工具包的作者是由Duncan Temple Lang现任加州大学 U.C. Davis分校副教授.他曾致力于借助统计整合进行信息技术的探索.使用者通过RCurl可以轻易访问网页,进行 ...
- Objective-C之字典
//字典:(关键字 值) //插入代码字太小 // NSArray *array = [NSArray array];//空数组 // NSDictionary *dict ...
- Hamming Codes
1. 海明校验码检错采用的是分组交叉奇偶校验法. 将编码中的数据位分成r个校验组,组内采取奇偶校验,每组一个校验位,可构成r位检错码.r>1 全部检错码为0表示数据正常,不为零时 ...
- TMDS协议
1 概述 1.1 连接结构 图1 TMDS连接结构 数据流中包含了像素和控制数据,发送器在任何给定的输入时钟周期,到底是编码像素数据还是控制数据取决于数据使能信号DE,DE有效时,指示像素数 据 ...
- ECC校验原理以及在Nand Flash中的应用
本篇文章主要介绍ECC基本原理以及在Nand Flash中的应用,本文记录自己对ECC校验原理的理解和学习. ECC介绍 ECC,全称为Error Correcting Code, ...
- JavaScript代码规范和性能整理
性能 Js在性能方面有多要注意的地方: 避免全局查找 Js性能优化最重要的就是注意全局查找,因为作用域的查找是先找局部作用域在没有找到之后在去上一级作用域查找直到全局作用域,所以全局作用域查找的性能消 ...
- LVDS/DVI/HDMI Interface
数字视频信号 以SXGA为例,其时序如下: 垂直: 水平: 图中DSPTMG为使能信号,VSYNC为场同步信号,HSYNC为行同步信号.在行场的消隐期(T1与T7),DSPTMG为低电 ...
- [IR] XML Compression
Ref: https://www.ibm.com/developerworks/cn/xml/x-datacompression/ Language-Equivalent (类似路径压缩 ) root ...
随机推荐
- java小结
1.UUID.randomUUID()是潜在线程安全的,SecureRandom.nextBytes()为synchronized
- 一个用shell写的统计目录下统计文件行数的代码
此代码是用来回忆当初学的shell脚本,很多知识忘了,写这个花了我三个小时的时间 #!/bin/ksh #count *.c file the num of lineg_csum=0g_hsum=0 ...
- Individual Project - Word frequency program - Multi Thread And Optimization
作业说明详见:http://www.cnblogs.com/jiel/p/3978727.html 一.开始写代码前的规划: 1.尝试用C#来写,之前没有学过C#,所以打算先花1天的时间学习C# 2. ...
- MSP430单片机的位操作
MSP430单片机属于RISC(Reduced Instruction Set Computer)型处理器.与普通的51单片机的复杂指令集相区别.普通51单片机执行一条指令最少需要12个时钟周期,而R ...
- #include <stdarg.h>
名称描述相容 // 作用描述 va_start使va_list指向起始的参数 va_arg检索参数C89 va_end释放va_list va_copy拷贝va_list的内容 实例解析: #inc ...
- js php json
js端生成json函数 function json_encode_js(aaa){ function je(str){ var a=[],i=0; var pcs="abcdefghijkl ...
- HTML + JS随机抽号。
[设置第三次抽取的号码为 (张三6)]<script language="javascript"> var k = 0 ; function star(){ k++ ; ...
- 关于FluentNhibernate数据库连接配置,请教
在用FluentNHibernate映射数据库,出现这个问题,一天多了也没解决,求各位大神支招 问题是与map对应的表已成功创建,出错的地方是最后的 .BuildSessionFactory(); ...
- 一致性hash的理解
参考: http://www.blogjava.net/hello-yun/archive/2012/10/10/389289.html http://blog.csdn.net/cywosp/art ...
- mongodb(回滚)
事实上mongodb是不支持事务的,个人理解原因如下:1.避免大量对document加锁,从而影响性能,2.非关系型的数据库,从设计上就应能尽可能的比较关联复杂的多document,一个数据应能记录在 ...