题目要求:对于所有一个长度为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. Software Testing hw1

    I still remember the error which I made in my java project last year. I spent a whole night solving  ...

  2. php 正则

    1.中括号 [0-9]匹配0-9 [a-z]匹配a-z小写字母 [A-Z]匹配A-Z大写字母 [a-zA-Z]匹配所有大小写字母 可以使用ascii来制定更多 2.量词 p+匹配至少一个含p的字符串 ...

  3. Linux系统MySQL开启远程连接

    1.远程连接上Linux系统,确保Linux系统已经安装上了MySQL数据库.登陆数据库.mysql -uroot -p(密码). 2.创建用户用来远程连接 GRANT ALL PRIVILEGES ...

  4. [XAF] How to improve the application's performance

    [自己的解决方案]数据量大时,可显著提升用户使用体验! 1.Root ListView 参考官方的E1554 点击导航菜单后首先跳出查询条件设置窗体进行设置 可设置查询方案或查询方案的查询条件,排序字 ...

  5. http://blog.sina.com.cn/s/blog_4c3b6a070100etad.html

    http://blog.sina.com.cn/s/blog_4c3b6a070100etad.html

  6. Database Schemas Found in Oracle E-Business Suite

    https://docs.oracle.com/cd/E26401_01/doc.122/e22952/T156458T659606.htm Table of Database Schemas in ...

  7. .Net mvc 后台传单引号错误&#39

    今天调试半天程序 结果出现JS 无法eval() 网上找个半天解决办法无果 最后 是因为后台输出单引号’ 到前台为&#39 解决办法 给一个隐藏文本框或者标签赋值 再取出来就能显示单引号了

  8. windows下PHP与Apache的安装配置

    1.下载安装apache:官网 http://httpd.apache.org/download.cgi#apache24 下载httpd-2.2.25-win32-x86-no_ssl.msi并安装 ...

  9. Jexus web server V5.4.5 已经发布

    Jexus 是运行于 Linux/FreeBSD 平台的一款以支持 ASP.NET 为主要特色的,同时非常重视安全性和稳定性的高性能 WEB 服务器.最新版 5.4.5 已经发布,官方网站是:www. ...

  10. Apache Marmotta 3.1.0-incubating 发布

    Apache Marmotta 3.1.0-incubating 发布了,Apache Marmotta 项目的目的是提供 Linked Data Platform 的开源实现,可让组织轻松的使用.扩 ...