题目要求:对于所有一个长度为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_代码字的更多相关文章

  1. 收集入侵Windows系统的证据

    随着网络的不断扩大,网络安全更加会成为人们的一个焦点,同时也成为是否能进一步投入到更深更广领域的一个基石.当然网络的安全也是一个动态的概念,世界上没有绝对安全的网络,只有相对安全的网络.相对安全环境的 ...

  2. R语言之RCurl实现文件批量下载

    前言: RCurl工具包的作者是由Duncan Temple Lang现任加州大学 U.C. Davis分校副教授.他曾致力于借助统计整合进行信息技术的探索.使用者通过RCurl可以轻易访问网页,进行 ...

  3. Objective-C之字典

    //字典:(关键字 值) //插入代码字太小 //        NSArray *array = [NSArray array];//空数组 //        NSDictionary *dict ...

  4. Hamming Codes

    1. 海明校验码检错采用的是分组交叉奇偶校验法.     将编码中的数据位分成r个校验组,组内采取奇偶校验,每组一个校验位,可构成r位检错码.r>1     全部检错码为0表示数据正常,不为零时 ...

  5. TMDS协议

    1 概述 1.1    连接结构 图1 TMDS连接结构 数据流中包含了像素和控制数据,发送器在任何给定的输入时钟周期,到底是编码像素数据还是控制数据取决于数据使能信号DE,DE有效时,指示像素数 据 ...

  6. ECC校验原理以及在Nand Flash中的应用

         本篇文章主要介绍ECC基本原理以及在Nand Flash中的应用,本文记录自己对ECC校验原理的理解和学习. ECC介绍      ECC,全称为Error Correcting Code, ...

  7. JavaScript代码规范和性能整理

    性能 Js在性能方面有多要注意的地方: 避免全局查找 Js性能优化最重要的就是注意全局查找,因为作用域的查找是先找局部作用域在没有找到之后在去上一级作用域查找直到全局作用域,所以全局作用域查找的性能消 ...

  8. LVDS/DVI/HDMI Interface

    数字视频信号 以SXGA为例,其时序如下: 垂直:         水平: 图中DSPTMG为使能信号,VSYNC为场同步信号,HSYNC为行同步信号.在行场的消隐期(T1与T7),DSPTMG为低电 ...

  9. [IR] XML Compression

    Ref: https://www.ibm.com/developerworks/cn/xml/x-datacompression/ Language-Equivalent (类似路径压缩 ) root ...

随机推荐

  1. iOS navigationcontroller pop 回到上一层视图 如何刷新

    1.从视图A中navigation controller push到视图B,当视图B navigationcontroller pop回到视图A时,并不会调用A的viewDidLoad,但是会调用vi ...

  2. java中String的一些方法

    1.public String(char[] c,begin,length). 从字符数组c的下标begin处开始,将长度为length的字符数组转换为字符串. begin与length可以省略,即将 ...

  3. (原创)古典主义——平凡之美 佳作欣赏(摄影,欣赏)

    文中图片摘自腾讯文化网:www.cal.qq.com 1.Abstract     生活本就是平淡的,如同真理一般寂静.平时生活中不经意的瞬间,也有它本来的美丽.下面一组图是上上个世纪到上个世纪末一个 ...

  4. Linux内核--网络栈实现分析(九)--传输层之UDP协议(下)

    本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7549340 更多请查看专栏,地 ...

  5. mysql group_concat 使用 (按分组组合字段)

    语法: GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | expr}[ASC | DES ...

  6. 使用IronPython给.Net程序加点料

    开发的时候,经常被策划频繁变动的方案而苦恼.这时候就想要加入点动态语言来辅助一下. 在考虑用动态语言之前也曾想过使用动态加载dll的方式,实现基础接口来调用.在卸载的时候遇到了问题,虽可以通过应用程序 ...

  7. Mac OS X上编写 ASP.NET vNext 系列中断和再开声明

    这个系列其实已经中断有一段时间了,主要是由两个原因: 第一是微软那边把以前的KRE改成了XRE,所以导致前两篇有点过时了. 第二是自己年前1月份被裁员,Mac的机器被回收,再加上忙于和公司扯皮和找工作 ...

  8. 【吐血分享】SQL Server With As 递归获取层级关系数据

    纯洁的一周又开始了,今天看到一则新闻,笑尿了,和袁友们一起娱乐下 最近两月在做基于Saas模式的人力资源管理产品,平常数据库设计我经常会遇到如下需求场景: 以前商城类网站在设计类型表的时候,设计成单表 ...

  9. 如何在IIS7/7.5上配置IISADMPWD

    问题 很多IIS用户还记得在早期的IIS版本上有一个web应用, IISADMPWD. 该应用是与IIS5 和IIS6一起发布的. 主要用于为域用户提供修改密码的功能, 同时也可以修改本机用户的密码. ...

  10. 把 Notepad++ 打造成一款易用的C#脚本编辑器

    以前一直用Linqpad在写小程序脚本,但是Linqpad自动完成功能要收费,且不开源,这样的话就不方便扩展了.今天在 http://csscriptnpp.codeplex.com/ 发现了一款C# ...