题目要求:对于所有一个长度为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. [转]Android开发:Parallax效果的ScrollerView,改编自ParallaxListView

    https://github.com/nirhart/ParallaxScroll这个gethub上的地址 本文转自http://www.2cto.com/kf/201502/376970.html ...

  2. [收集]在iPhone桌面的应用程序图标右上角显示数字

    能够在ios桌面的程序icon右上角显示数字(badge number)的方法 在ViewController中的viewDidLoad方法中添加如下代码即可 - (void)viewDidLoad ...

  3. dataview将excel表格的数据导出成txt文件

    有时候需要处理大量的数据,且这些数据又存在于excel表格内,在平时的时候,我是非常喜欢这样的数据的,因为只要是excel表格内的数据,处理起来的方法就很方便.也可能我平时遇见的数据总是以一种杂乱无章 ...

  4. cmd输出的日志里有中文乱码的解决办法

    在命令行使用adb logcat命令直接输出日志中文内容显示乱码,原因是中文系统中cmd命令行窗口默认的编码是GBK,而LogCat打印的日志是UTF-8编码,所以adb logcat命令输出的中文内 ...

  5. python 多线程和多进程基本写法

    #coding=utf-8 def aJob(arg): """ 提供给多线程调用 """ import threading t = thr ...

  6. 负载均衡的mariadb集群搭建

    集群介绍: Galera是一个MySQL(也支持MariaDB,Percona)的同步多主集群软件,目前只支持InnoDB引擎. 主要功能: 同步复制 真正的multi-master,即所有节点可以同 ...

  7. Angularjs路由需要了解的那点事

    Angularjs路由需要了解的那点事 我们知道angularjs是特别适合单页面应用,为了通过单页面完成复杂的业务功能,势必需要能够从一个视图跳转到另外一个视图,也就是需要在单个页面里边加载不同的模 ...

  8. C#更改文件访问权限所有者(适用于各个Windows版本)

    前面也提到了,前段时间在做Online Judge系统,在正式上线前有几个比较老的版本,其中第一个版本使用ACL来控制权限以确保安全(但是这个版本完全建立在IIS上,所以这样做是没效果的),遇到了一些 ...

  9. iOS 视图,动画渲染机制探究

    腾讯Bugly特约作者:陈向文 终端的开发,首当其冲的就是视图.动画的渲染,切换等等.用户使用 App 时最直接的体验就是这个界面好不好看,动画炫不炫,滑动流不流畅.UI就是 App 的门面,它的体验 ...

  10. Homework 1 -- The beginning

    我是在北京在读的一位大学生.如果问我学的什么专业,我会用一个冷笑话回答你:我精通多种语言,在老家我说家乡话:跟北京我讲普通话:跟老外就玩English:我跟机器得敲代码.现在你知道我学的就是计算机了. ...