二模11day2解题报告
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解题报告的更多相关文章
- 二模13day1解题报告
二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...
- 二模14day1解题报告
注:Index数☞由4,7组成的十进制数. T1.全排列(permutation) 求n个数的第k个排列中,有多少个Index位置上是Index数. 由于k的范围比较小,n的范围比较大(都是109), ...
- 二模12day2解题报告
T1.笨笨玩糖果(sugar) 有n颗糖,两个人轮流取质数颗糖,先取不了的(0或1)为输,求先手能否必胜,能,输出最少几步肯定能赢:不能,输出-1. 一开始天真的写了一个dp,f[i]表示i颗糖最少取 ...
- 二模01day1解题报告
T1.音量调节(changingsounds) 有n个物品的背包(有点不一样,每个物品必须取),给出初始价值,物品价值可正可负(就是两种选择嘛),求可能的最大价值,不可能(<0或>maxs ...
- 二模15day1解题报告
T1.合并序列(minval) 给出长为 n的AB两个序列求两两相加中最小的n个. 据说有证明(在蓝书上,优先队列部分)先把A[1~n]+b[1]入队,然后每取一个a[x]+b[y]就把a[x]+b[ ...
- 二模14day2解题报告
T1.砍树(cuttree) 给出n棵树,要锯下m米木材,现在有一个高度h,h以上所有木头都砍下来,求满足m米的最小h 很简单的二分答案判断可行性. T2.快速求和(quicksum) 给出数字串s, ...
- 二模12day1解题报告
T1.笨笨与电影票(ticket) 有n个1和m个0,求每个数前1的个数都大于等于0的个数的排列数. 非常坑的一道题,推导过程很烦.首先求出所有排列数是 C(n+m,m),然后算不合法的个数. 假设存 ...
- 二模02day1解题报告
T1.淘汰赛制 比赛时的淘汰赛制,给出每两个球队比赛的胜率,求出最终胜率最高的队伍. 这题的概率真的很难算啊感觉...一开始打的代码打下来就是用f[i][j]表示i场比赛后第j人还在场的概率.不难看出 ...
- 二模07day1解题报告
T1.种树(tree) 有n棵树,各有高度,要求每棵树的高度都小于它到其他树的距离(可能种一起).求砍掉的总高度是多少. Ok,那么可以想到,只要满足每棵树和最近的树满足条件就可以保证和其他树满足了. ...
随机推荐
- 黄聪:Emeditor 编辑器常用的正则表达式
Emeditor 目前来说是我个人感觉非常不错的一款记事本软件, 其中查找替换功能由于支持正则表达式而显得非常强大. <tr[^>]*> 匹配:<tr xxxxxxxxxxxx ...
- C#学习笔记五: C#3.0Lambda表达式及Linq解析
最早使用到Lambda表达式是因为一个需求:如果一个数组是:int[] s = new int[]{1,3,5,9,14,16,22};例如只想要这个数组中小于15的元素然后重新组装成一个数组或者直接 ...
- js复习(一)
一.常用数据框1.alert(""):警告对话框,作用是弹出一个警告对话框 2.confirm(""):确定对话框,弹出一个带确定和取消按钮的对话框--确定返回 ...
- SqlServer2005基于已有表创建分区
随着当今数据库的容量越来越快的朝着在大型数据库或超大型数据库的发展,对于数据库中的大 型表以及具有各种访问模式的表的可伸缩性和可管理性运行环境变得尤为重要, SQL server 从 SQL serv ...
- struts(五) 使用通配符 接收参数
1.使用通配符简化配置 约定优于配置 <action name="student*" class="com.gc.StudentAction" metho ...
- 为何你的php代码没有写结束标签
PHP闭合标签"?>"在PHP中对PHP的分析器是可选的.但是,如果使用闭合标签,任何由开发者,用户, 或者FTP应用程序插入闭合标签后面的空格都有可能会引起多余的输出.ph ...
- T450设置插入USB鼠标时自动禁用触摸板
刚入手T450,打字时经常碰到触摸板,很是恼火,于是求助万能的度娘,找了卡饭基佬的教程,实测可行,大家可以试试.<win7下如何设置插入USB鼠标时自动禁用触摸板>,地址:www.kafa ...
- lower_bound 和 upper_bound
Return iterator to lower bound Returns an iterator pointing to the first element in the range [first ...
- AndroidManifest.xml 屏幕上下反转
通常我们的应用只会设计成横屏或者竖屏,锁定横屏或竖屏的方法是在AndroidManifest.xml 文件中设定属性android:screenOrientation为"landscape& ...
- IntelliJ IDEA调整控制台输出字体大小
File->Settings->Editor->Colors & Fonts->Console Font Size: 16