转跳到内容

Mr.K 018

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

    730
  • 加入

  • 最后访问

  • 赢得天数

    1

Mr.K 018 发表的所有内容

  1. 看大佬讨论问题,流下了不懂数学的泪水…… 前三问都可以直接计算的,大不了O(n^5)嘛,有些情况下多项式时间已经不错了,参考我上午的回答和其他人的讨论 后面两问暂时没想出来有效的算法,因此考虑走个邪道:GA 先随机初始化n个解当作初始种群,然后迭代执行以下操作: 1. 对种群中的每个解打分 2. 按一定比例去掉打分最低的解。设去掉了n个解 3. 进行n次繁殖,补回去掉的解。繁殖方法可以是随机抽取两个解(解的评分越高,被抽中的概率也应越高),两个解的编码做适当的交叉互换,并按一定概率突变以后作为新的解加入到种群中。 重复以上迭代操作直至收敛或执行完了指定的轮数或时间为止。 要解决以下几个问题: 1)评分算法。考虑进行若干次模拟,统计因中陷阱而GG的情况的占比,作为评分。考虑到计算代价,模拟次数似乎不必做特别多,几十次就行? 2)解的编码。假设要挖出k个坑,考虑将每个坑的位置用一个整数表示。不必从小到大排列。 3)交叉互换和突变。考虑将交叉互换算法设置为:对每一个子代基因编码中的整数,均随机地从两个亲本的对应数字中抽出一个。如果出现重复数字,则将其中一个赋随机值。突变可考虑设置为将某一个数字赋上随机值。 --- 这个算法不知道行不行得通,但是调参多半是没跑了
  2. (尴尬) emmm好像是这样的
  3. 其实一样,把d当成一个优先级比加减号还低的运算符就行
  4. p'[k][j]求法跟p[k]差不多,唯一的区别是到p'[k][k]的值强行设为0,跟其他地方的运算规则不一样 同样的道理适用于p(n)[k]1[k]2⋯[k]n
  5. 第一问跟楼上说的一样,设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( 是否可以尝试证明用这种方法连续挖六个坑肯定能行呢?正在尝试,感觉能行
  6. 仅就这个题而言,可以把所有的r都丢掉,然后把d当成运算符 冰系魔法系列的题实际上都是编译原理来着。刚学数据结构的话,可以考虑把整个表达式当成一颗树来看待 另外,不要忘记数字有两种表示方式哦
  7. 那行,那明天我就不出算法挑战21了,计划通(不是 期待明天的概率论
  8. 什么,你要出概率挑战?那正好我咕几天(x
  9. 有糖拿的! 给出伪代码就行,能拿200节操(max)呢!
  10. 这个题不难哦,数据结构第一章内容 少侠不来试试吗?
  11. 真要是java转汇编,那这个题怕是真的要做一个月 每 月 算 法 挑 战
  12. 一步到位草 好 既然你都这么说了,那就这么定了吧
  13. 对这道题而言是的 但是显然下一道题就不会这么轻松了x
  14. 第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!
  15. 我觉得可以改成:在剩下两个没有炸弹的地方里,抽了一个告知蕾米莉亚;已知告诉她没有炸弹的那个地点是图书馆
  16. 已更新,概率论忘光了,不知道想的对不对
  17. 三门问题?三门问题的正确解我记得是换门来着,不过我得想一下是不是同样 ---Upd1--- 第1层:我们只考虑炸弹在哪这个问题。 我们首先认为P(地下室)=P(门卫室)=P(图书馆)=1/3,而P(地下室|不在图书馆)=1/2,所以去哪都一样。 第2层:把这个问题当成三门问题考虑。 三门问题的答案是应该换门,具体为啥我就不用多说了,网上全是。因此,应该改去门卫室。 第5层:考虑到古明地觉希望看到红魔馆爆炸这个假设。 若炸弹在地下室,古明地觉告诉蕾米莉亚“炸弹不在图书馆”以后,蕾米莉亚肯定会认为这个问题是个三门问题,就会改去门卫室找炸弹,古明地觉想看红魔馆爆炸的意图就达成了。所以这条消息一定是阿共古明地觉的阴谋,还是应该去地下室。 以此类推, 第n(n为奇数且大于等于5)层:考虑到第n-1层的阴谋,应该去地下室; 第n(n为偶数且大于5)层:考虑到第n-1层的阴谋,应该去门卫室。 ---Upd2--- 又仔细想了想,觉得这个题只是题面跟三门问题一样,但实际上不同。原因在于在三门问题中,主持人是挑一扇后面是羊的门放掉,这个行为实际上改变了另外两扇门出现羊的概率。用本题类比,就是如果炸弹实际上就在图书馆,古明地觉就会说炸弹不在值班室了。但实际的本题是从题干上禁止了这个情况出现的。换句话说,在这道题里的三个可能地点和三门问题中的三扇门不同。所以我觉得问题本质上就是一个炸弹在哪的问题,应该取上述第1层的结论,后面都是千层饼骚话。
  18. 不不不,我只负责吸人精气(确信
  19. Java和C这样的成熟的语言语法其实很复杂,但是词法部分其实还算简单,因为无非就关键字/运算符/常量/标识符这么几大类,再往下分也不是词法分析能干的事情。所以这些语言的词法分析任务不难,写一个DFA,然后遍历一遍输入的程序就完了 实际上调库的话也是得自己定义出词法的确切定义的,flex和antlr能做的只是帮你搭一个DFA,没了。这也是为什么这里允许调库,但是要给出相应库使用的脚本
  20. 没事 执此flex/bison/antlr4,微笑面对词法分析器,java是大便(
  21. 不是parser,lexer就行 parser预计是2,不过工作量太大了,我不知道要不要出
  22. 第19期来力! 照例是个模拟题,这一期敲样例输出可把我累坏了( 有工具专门做这件事没错,所以用了工具的要贴出所有源代码(包括工具的输入脚本等)哦 虽然写了1,但是估计不会有2,因为我估计2的工作量就太大了,不符合我们的初衷。不过这道题还好。 第19期 冰系魔法1 传说在某个异世界里是存在元素的,也存在元素魔法。有一次,那个世界的来客向我们展示了一种那个世界的冰系魔法: public class Artia{ public static void main(String[] argv){ System.out.println("Artia's Ice Magic"); } } MrK-018发现,这段魔法的咒语好像可以分解成一个个的单词,好像还能给单词分类。不过,手动把它们一个个摘出来也太麻烦了,还是写一个程序自动区分出魔法咒语里的单词吧。 输入 一段Java源代码冰系魔法咒语。保证符合语法规范。 输出 对每个单词,输出其单词序号、原文和单词类别。格式参考输出样例。 样例输入 package artia; import java.util.*; public class Artia{ char ch = 'a'; String str = "Artia's Ice magic"; public static void main(String[] argv){ double d = 10.25+1; System.out.println(str); return; } } 样例输出 Token 1: 'package', 'package' Token 2: 'artia', identifier Token 3: ';', ';' Token 4: 'import', 'import' Token 5: 'java', identifier Token 6: '.', '.' Token 7: 'util', identifier Token 8: '.', '.' Token 9: '*', '*' Token 10: ';', ';' Token 11: 'public', 'public' Token 12: 'class', 'class' Token 13: 'Artia', identifier Token 14: '{', '{' Token 15: 'char', 'char' Token 16: 'ch', identifier Token 17: '=', '=' Token 18: '\'a\'', character Token 19: ';', ';' Token 20: 'String', identifier Token 21: 'str', identifier Token 22: '=', '=' Token 23: '"Artia\'s Ice magic"', string Token 24: ';', ';' Token 25: 'public', 'public' Token 26: 'static', 'static' Token 27: 'void', 'void' Token 28: 'main', identifier Token 29: '(', '(' Token 30: 'String', identifier Token 31: '[', '[' Token 32: ']', ']' Token 33: 'argv', identifier Token 34: ')', ')' Token 35: '{', '{' Token 36: 'double', 'double' Token 37: 'd', identifier Token 38: '=', '=' Token 39: '10.25', floating Token 40: '+', '+' Token 41: '1', integer Token 42: ';', ';' Token 43: 'System', identifier Token 44: '.', '.' Token 45: 'out', identifier Token 46: '.', '.' Token 47: 'println', identifier Token 48: '(', '(' Token 49: 'str', identifier Token 50: ')',')' Token 51: ';', ';' Token 52: 'return', 'return' Token 53: ';', ';' Token 54: '}', '}' Token 55: '}', '}' Token 56: <EOF>, <EOF>
  23. 终点没开之前是墙,而且不允许停(那样就太没意思了(笑)) 而且,这个DFS是没法找到最短路径的,会导致有些能yes的例输出no
×
×
  • 新建...

重要消息

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