转跳到内容

Mr.K 018

【会员】高级会员
  • 内容数

    730
  • 加入

  • 最后访问

  • 赢得天数

    1

Mr.K 018 发表的所有内容

  1. 这个题DFA实际上是不够的(笑 需要下推DFA才行,就是DFA加一个符号栈
  2. 没错,你已经在名单(指参与者名单)里了 这个题其实跟上一期是同一道题,区别无非是语法的复杂程度不同 当然,这并不意味着这个题是个表达式求值(
  3. 第21期来啦!本题是接着第20期继续出的一道题,所以本题要连着20期的题干一起读。 第21期 冰系魔法2b 各位已经见过了基本款的魔法骰子。实际上,魔法骰子还有更多改进款,支持很多更为复杂的功能。之前说的异世界来客就有这么一款骰子,她向我们展示了这个骰子的用法。 这个骰子依然可以像前一款那样计算表达式。它一次可以顺序处理多个掷骰表达式,每个掷骰表达式都需要用分号;结尾。同时,这个骰子还支持流程控制(不愧是魔法师的骰子),就是if,while和for语句。同时,多个语句还可以用大括号括起来,成为一个语法上的整体。它们的语法也不复杂,上例子: r1d6; if (r1d6-3) { while(r1d6-3) 15; (r3d20)*(r1d6); } else for(r1d6) if(r12d10-60) 1+1; r2d6; for (5) { r1d2; } 我们的异世界来客是个冰元素使,这个魔法骰子的语法和她魔法咒语的语法很接近,所以她很喜欢这个骰子。唯一美中不足的是,这个骰子没有判断输入是否合法的能力。如果输入了不正确的掷骰程序,魔法骰子就可能坏掉。因此,她打算编制一个魔法,可以预先判断输入是不是合法的。 输入 一段魔法骰子的输入程序。 输出 如果输入程序合法,就输出一行OK,否则输出一行Fail。 样例输入 r1d6;if (r1d6-3){while(r1d6-3) 15; (r3d20)*(r1d6);}else for(r1d6) if(r12d10-60) 1+1;r2d6;for (5){ r1d2;} 样例输出 OK 读到这里的朋友,是不是觉得这个题里魔法骰子的语法似曾相识?没错,这个语法是有意仿照C语言函数定义的部分来编制的。把rd运算符改成别的C语言运算符之后,甚至可以在C语言里跑起来(当然,要放在某个函数的函数体里才行,而且后面要加上return)。其实C语言的语法没那么难,不是么? 另外,总觉得今天这道题,非相关专业的学生应该不太好答出来了……那么,如果觉得自己不太会答这个题,那么可以试试ANTLR4. 微型召唤阵: @yhz012
  4. 这就是为啥我要设置一个运算符rd(笑 没错,就是为了给标准的表达式求值板子制造困难
  5. 我本来想说这里有一个文法二义性的问题来着,后来拿antlr4跑了一遍发现其实没有 因为运算符rd的优先级没有运算符*高,所以*会先算,因此实际运算是2 附一个生成的文法树:
  6. 看大佬讨论问题,流下了不懂数学的泪水…… 前三问都可以直接计算的,大不了O(n^5)嘛,有些情况下多项式时间已经不错了,参考我上午的回答和其他人的讨论 后面两问暂时没想出来有效的算法,因此考虑走个邪道:GA 先随机初始化n个解当作初始种群,然后迭代执行以下操作: 1. 对种群中的每个解打分 2. 按一定比例去掉打分最低的解。设去掉了n个解 3. 进行n次繁殖,补回去掉的解。繁殖方法可以是随机抽取两个解(解的评分越高,被抽中的概率也应越高),两个解的编码做适当的交叉互换,并按一定概率突变以后作为新的解加入到种群中。 重复以上迭代操作直至收敛或执行完了指定的轮数或时间为止。 要解决以下几个问题: 1)评分算法。考虑进行若干次模拟,统计因中陷阱而GG的情况的占比,作为评分。考虑到计算代价,模拟次数似乎不必做特别多,几十次就行? 2)解的编码。假设要挖出k个坑,考虑将每个坑的位置用一个整数表示。不必从小到大排列。 3)交叉互换和突变。考虑将交叉互换算法设置为:对每一个子代基因编码中的整数,均随机地从两个亲本的对应数字中抽出一个。如果出现重复数字,则将其中一个赋随机值。突变可考虑设置为将某一个数字赋上随机值。 --- 这个算法不知道行不行得通,但是调参多半是没跑了
  7. 其实一样,把d当成一个优先级比加减号还低的运算符就行
  8. p'[k][j]求法跟p[k]差不多,唯一的区别是到p'[k][k]的值强行设为0,跟其他地方的运算规则不一样 同样的道理适用于p(n)[k]1[k]2⋯[k]n
  9. 第一问跟楼上说的一样,设p[k]表示踏上第k个台阶的概率,dp一下取出最大的那个就行。 第二问我觉得可以把第一问的算法做修改,设p‘[k][j]表示在已知第k个台阶没有被踏上的情况下,第j个台阶被踏上的概率。这样,假设要在k,j位置挖坑,那么访客掉坑里的概率就是p[k]+(1-p[k])p'[k][j]。O(n^2)搞定 我觉得推广到埋n个坑的情况应该也差不多 如果在上文看到了i,请把它理解成k( 是否可以尝试证明用这种方法连续挖六个坑肯定能行呢?正在尝试,感觉能行
  10. 仅就这个题而言,可以把所有的r都丢掉,然后把d当成运算符 冰系魔法系列的题实际上都是编译原理来着。刚学数据结构的话,可以考虑把整个表达式当成一颗树来看待 另外,不要忘记数字有两种表示方式哦
  11. 那行,那明天我就不出算法挑战21了,计划通(不是 期待明天的概率论
  12. 什么,你要出概率挑战?那正好我咕几天(x
  13. 有糖拿的! 给出伪代码就行,能拿200节操(max)呢!
  14. 这个题不难哦,数据结构第一章内容 少侠不来试试吗?
  15. 真要是java转汇编,那这个题怕是真的要做一个月 每 月 算 法 挑 战
  16. 一步到位草 好 既然你都这么说了,那就这么定了吧
  17. 对这道题而言是的 但是显然下一道题就不会这么轻松了x
  18. 第20期来啦! 如各位所见,我给自己挖了两个需要填上的大坑…… 这个题虽然是一个表达式求值,但考虑到以后可能出现的冰系魔法2b啥的(暗示),说明这题的目的不是简单的表达式求值哦。大家不一定非要打一个表达式求值的板子出来。 第20期 冰系魔法2a 传说在某个异世界里是存在元素的,也存在元素魔法。那里有一所魔法学院。与其他魔法学院不同,这所学院哪个系的魔法也不教,教的全是魔法背后玄而又玄的深奥知识。但是,来这所学院求学的人却是络绎不绝,因为从这所学院里学到大成之人已经可以自创一系魔法,早已超脱用某个系魔法施法的境界。不过,我们地球人想要一下理解异世界的艰深魔法理论还是很困难的,所以我们当然不会直接像大成之人那样自创魔法。我们从最简单的开始。 在那个异世界有一个魔法小工具,叫做骰娘魔法骰子。向这个骰子输入一个掷骰表达式(别问怎么输入,问就是魔法),这个骰子就能按照表达式的要求自动掷骰子,然后输出(别问怎么输出,问就是魔法)结果。这个小工具在异世界非常流行,几乎家家户户都有。 异世界魔法骰子比地球的骰娘要强大很多。地球的骰娘最多只支持形如rAdB+C的表达式,表示投掷A个B面的均匀骰子,结果取出目的总和再加上C。异世界的骰娘不光支持掷骰,还支持加减乘除四则运算。并且,表达式还能嵌套,允许加括号。比如说:(r3*5+7d2*(r1d6)-1)/2。这个表达式的意思是:先掷一枚6面骰子,出目乘2后减去1,作为骰子的面数(记为A),之后投掷15+7=22个这样的骰子(注意每个骰子都有A个面,而非每个骰子的面数都不相同),出目总和除以2,舍弃小数部分后作为结果输出。 我们规定,括号的运算优先级最高(废话),其次是乘除法,再次是加减法,最后是掷骰子运算。 MrK-018手头已经有了一些用来进行四则运算、模拟掷骰子和输出用的魔法。给定一个掷骰子表达式,他想知道怎样按顺序地调用这些魔法,才能得到表达式要求的输出。 输入 一个掷骰表达式。保证涉及到的数字只有十进制非负整数,不涉及小数。整数可能以以下几种形式出现: 一般形式,如114514 科学计数法,如1.14e5,1.14E5,3E8等等。 输出 这个表达式对应的魔法调用序列。对于不符合文法的表达式,输出一行Syntax error!。输出的数字格式要与 样例输入1 (r3*5+7d2*(r1d6)-1)/2 样例输出1 输出不唯一,此处展示一种可行的输出。 1: rd 1 6 2: mul 2 [1] 3: sub [2] 1 4: mul 3 5 5: add [4] 7 6: rd [5] [3] 7: div [6] 2 8: out [7] 样例输入2 4e50 样例输出2 1: out 4e50 样例输入3 4d 样例输出3 Syntax error!
  19. 我觉得可以改成:在剩下两个没有炸弹的地方里,抽了一个告知蕾米莉亚;已知告诉她没有炸弹的那个地点是图书馆
  20. 已更新,概率论忘光了,不知道想的对不对
  21. 三门问题?三门问题的正确解我记得是换门来着,不过我得想一下是不是同样 ---Upd1--- 第1层:我们只考虑炸弹在哪这个问题。 我们首先认为P(地下室)=P(门卫室)=P(图书馆)=1/3,而P(地下室|不在图书馆)=1/2,所以去哪都一样。 第2层:把这个问题当成三门问题考虑。 三门问题的答案是应该换门,具体为啥我就不用多说了,网上全是。因此,应该改去门卫室。 第5层:考虑到古明地觉希望看到红魔馆爆炸这个假设。 若炸弹在地下室,古明地觉告诉蕾米莉亚“炸弹不在图书馆”以后,蕾米莉亚肯定会认为这个问题是个三门问题,就会改去门卫室找炸弹,古明地觉想看红魔馆爆炸的意图就达成了。所以这条消息一定是阿共古明地觉的阴谋,还是应该去地下室。 以此类推, 第n(n为奇数且大于等于5)层:考虑到第n-1层的阴谋,应该去地下室; 第n(n为偶数且大于5)层:考虑到第n-1层的阴谋,应该去门卫室。 ---Upd2--- 又仔细想了想,觉得这个题只是题面跟三门问题一样,但实际上不同。原因在于在三门问题中,主持人是挑一扇后面是羊的门放掉,这个行为实际上改变了另外两扇门出现羊的概率。用本题类比,就是如果炸弹实际上就在图书馆,古明地觉就会说炸弹不在值班室了。但实际的本题是从题干上禁止了这个情况出现的。换句话说,在这道题里的三个可能地点和三门问题中的三扇门不同。所以我觉得问题本质上就是一个炸弹在哪的问题,应该取上述第1层的结论,后面都是千层饼骚话。
×
×
  • 新建...

重要消息

为使您更好地使用该站点,请仔细阅读以下内容: 使用条款