T1.修改文章(amend)

给出n个单词和一个长度为m的字符串,求改动多少个字符才能使字符串全由单词组成。

要说这道题还真的坑很坑超坑非常坑无敌坑……不过还是先想到了动规。毕竟要修改的前提是要组成的出来。所以转了一下变成用单词来拼凑字符串。

Std的方法(为何70分?):f[k1][k2][k3][k4]表示k1k2k3k4可由现有单词经过几步转化而来。其中k1k2k3k4取值从0~27(原来是-1~26,我改了一下,因为c++数组下标不能为负),0表示该位不存在,1表示是任意字母,其他表示A~Z。很明显,如果是原输入单词,则f[k1][k2][k3][k4]=0,同理f[1][k2][k3][k4]=0。但是进行后三位时要判断该位是否存在,然后按组合来赋0。

那么不是原输入单词呢?首先位数不一样肯定转不了。可以递归来求。每次从现有位数中去掉一位,看看这样转移加一步是否更优。(复杂到难以描述反正代码量达到2500B)同时一定要记忆化否则。。。boom。。。

这只是第一步,现在用g[i]表示处理到第i位的最优解,则g[i]=min(g[i-4]+f[a[i-3]][a[i-2]][a[i-1]][a[i]],g[i-3]+f[a[i-2]][a[i-1]][a[i]][0],g[i-2]+f[a[i-1]][a[i]][0][0],g[i-1]+f[a[i]][0][0][0])

但是g[1]g[2]g[3]g[4]是要初始化的。

还有yyl大神的方法完美解决了这个问题,只要把单词长度也作为数组的一维,变成5维,就可以代替-1的作用从而更简单。而且采用的是纯递归的方法,代码量急速下降而且不易出错。

T2.智力大冲浪(riddle)

这题以前水过了,给出初始的前m和n个小游戏以及扣的钱,每个游戏在规定的时间内完成否则失效。求最大奖励。

贪心,先按扣得钱多到少排序,然后在时限内尽量向后安排。然后算一下扣多少钱就好了。

T3.电梯(lift)

有一台电梯,n层楼,每层楼一个数字ki,每层楼只能选择上或下。求A到B的最小按键数

Bfs水题。易证,最优解每层楼最多走一次,然后就从A开始扩展,直到到B或队列为空。

二模11day2解题报告的更多相关文章

  1. 二模13day1解题报告

    二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...

  2. 二模14day1解题报告

    注:Index数☞由4,7组成的十进制数. T1.全排列(permutation) 求n个数的第k个排列中,有多少个Index位置上是Index数. 由于k的范围比较小,n的范围比较大(都是109), ...

  3. 二模12day2解题报告

    T1.笨笨玩糖果(sugar) 有n颗糖,两个人轮流取质数颗糖,先取不了的(0或1)为输,求先手能否必胜,能,输出最少几步肯定能赢:不能,输出-1. 一开始天真的写了一个dp,f[i]表示i颗糖最少取 ...

  4. 二模01day1解题报告

    T1.音量调节(changingsounds) 有n个物品的背包(有点不一样,每个物品必须取),给出初始价值,物品价值可正可负(就是两种选择嘛),求可能的最大价值,不可能(<0或>maxs ...

  5. 二模15day1解题报告

    T1.合并序列(minval) 给出长为 n的AB两个序列求两两相加中最小的n个. 据说有证明(在蓝书上,优先队列部分)先把A[1~n]+b[1]入队,然后每取一个a[x]+b[y]就把a[x]+b[ ...

  6. 二模14day2解题报告

    T1.砍树(cuttree) 给出n棵树,要锯下m米木材,现在有一个高度h,h以上所有木头都砍下来,求满足m米的最小h 很简单的二分答案判断可行性. T2.快速求和(quicksum) 给出数字串s, ...

  7. 二模12day1解题报告

    T1.笨笨与电影票(ticket) 有n个1和m个0,求每个数前1的个数都大于等于0的个数的排列数. 非常坑的一道题,推导过程很烦.首先求出所有排列数是 C(n+m,m),然后算不合法的个数. 假设存 ...

  8. 二模02day1解题报告

    T1.淘汰赛制 比赛时的淘汰赛制,给出每两个球队比赛的胜率,求出最终胜率最高的队伍. 这题的概率真的很难算啊感觉...一开始打的代码打下来就是用f[i][j]表示i场比赛后第j人还在场的概率.不难看出 ...

  9. 二模07day1解题报告

    T1.种树(tree) 有n棵树,各有高度,要求每棵树的高度都小于它到其他树的距离(可能种一起).求砍掉的总高度是多少. Ok,那么可以想到,只要满足每棵树和最近的树满足条件就可以保证和其他树满足了. ...

随机推荐

  1. Mysql存储过程简明使用

    mysql> \d //  改变命令行下的结束符标志mysql> create procedure p3() -> begin -> set @i=1;  # 这样也可以定义变 ...

  2. 黄聪:wordpress源码解析-数据库表结构(转)

    如果是一个普通的用户,不需要了解wordpress数据库的结构.但是,如果你正在写一个插件,你应该会对wordpress如何处理它的数据和关系感兴趣.如果你已经尝试使用已经存在的wordpress a ...

  3. 黄聪:VS2010开发T4模版引擎之基础入门

    原文:http://www.cnblogs.com/lzrabbit/archive/2012/07/15/2591085.html 额,T4好陌生的名字,和NuGet一样很悲催,不为世人所熟知,却又 ...

  4. CF 518 D. Ilya and Escalator

    Ilya got tired of sports programming, left university and got a job in the subway. He was given the ...

  5. POJ 1466 Girls and Boys 黑白染色 + 二分匹配 (最大独立集) 好题

    有n个人, 其中有男生和女生,接着有n行,分别给出了每一个人暗恋的对象(不止暗恋一个) 现在要从这n个人中找出一个最大集合,满足这个集合中的任意2个人,都没有暗恋这种关系. 输出集合的元素个数. 刚开 ...

  6. java 子接口中定义与父接口相同的方法

    今天碰到一个很有意思的问题,在java中如果子接口中定义了与父接口中已经有的方法会发生什么事情呢?比如: interface IRunnable extends Runnable{ void run( ...

  7. 转--Android中自定义字体的实现方法

    1.Android系统默认支持三种字体,分别为:“sans”, “serif”, “monospace 2.在Android中可以引入其他字体 . 复制代码 代码如下: <?xml versio ...

  8. Log4j乱码

    在log4j.properties里添加encoding , 例如 : log4j.appender.fuscent=org.apache.log4j.DailyRollingFileAppender ...

  9. android-Service和Thread的区别

    1.服务不是单一的进程.服务没有自己的进程,应用程序可以不同,服务运行在相同的进程中. 2.服务不是线程.可以在线程中工作. 一.在应用中,如果是长时间的在后台运行,而且不需要交互的情况下,使用服务. ...

  10. jsp+bean+servlet 案例代码

    包结构图: 代码下载地址