转跳到内容

yhz012

【会员】精英会员
  • 内容数

    2,754
  • 加入

  • 最后访问

  • 赢得天数

    2

yhz012 发表的所有内容

  1. 是的,这样对于如果要扩展matrix的话,运算复杂度远小于重算整个的逆,所以可以在一些特殊情况加速求逆
  2. 余子式我是觉得要快速解还要找规律吧,而且余子式会破坏掉本身上三角的漂亮感(x,所以我本能的在抗拒 不如说更通用的情况我也能不用余子式的方式我也不想用 其实看到这个答案之后还有一个递推的方法 首先1的逆矩阵是1 然后考虑[[1 1] [0 1]]的矩阵,令A为1,B为1,C为0,D为1,得到逆矩阵是[A^-1, -A^-1 B D^-1] [0, D^-1],其中A^-1上一次iteration已经有了是1,D是常数1所以逆恒为1,B是全1向量所以和A^-1右乘是对A^-1的行求和。 于是得到逆是[1 -1][0 1] 继续下一次iteration,A为[1 1][0 1]矩阵,B为[1 1]^T向量,C为[0 0]向量,D为1。 所以左上角是上一步的逆,右上角是上一步逆的行求和后加个负号[0, -1],左下角是0,右下角是1。得到[1 -1 0][0 1 -1][0 0 1] 于是规律出来了
  3. 上三角矩阵的逆我记得有快速公式吧? 而且这个矩阵,用初等行变换做就可以? 令该矩阵=A 考虑矩阵A和单位矩阵I 用初等行变换把A变为I的话,需要第二行*-1加到第一行,第三行*-1加到第二行…… 同样方法应用到I上 所以解是 1 -1 0 0 0 1 -1 0 0 0 1 -1 这样的主对角线1,主对角线往右一个是-1,剩余全0
  4. 第四题根据黑点个数盲猜A,不过没法解释黑点位置
  5. 看了下感觉是花2个小时时间解决的掉的问题,容我赶完作业回来补好了
  6. (我能说其实我不知道有这些开源的么) 不过反正每日挑战肯定还是自己写着玩比直接调包有意思就是了,至少我是这么觉得的 不过下周一之前我作业的ddl大概不够我自己再分出来一大块时间研究怎么写这个就是了 (顺带其实我真的一点都不会java,我是带类的C风格的C++党和python党(
  7. 没事,这俩对我来说痛苦程度没有根本上的区别 当然非要说的话就是lexer我对着书写大概能写出来点东西,parser……怕是我对着书也得疼个几天先 突然意识到我这种半路转ML的,CS最硬核的基础其实真的不强,遇到这种就会很疼。感觉不如我滚去出每日概率论挑战
  8. 是编译器模拟器…… 看意思应该是要写个parser? 是我最弱的项目了
  9. GRE的作文你可以理解为骂人的艺术(x 给你段看起来有那么点道理,但是实际上一点道理都没有的文字 你需要批判一下这段文字 这个是argument,另一个essay倒是正常作文的风格
  10. 雅思没考过,不知道是啥玩法,gre……大概是真的要丢去文学版了(笑)
  11. 让我回忆起了被GRE支配的恐惧……
  12. 来了来了 首先基本图算法能跑个最短路径出来,拿A*配曼哈顿距离问题不大,暴力一点BFS也可以 假设最短路径是d,那很显然如果d>s,那就别挣扎了,等死吧 如果大于等于d,那么需要进一步讨论 显然,如果d-s为偶数,那么左右横跳等着开门就完了(除非只有1个空间只能自闭 如果d-s是奇数,那么等死吧(因为不存在奇数长度的环。另一个说法是如果要回到原位,一定要执行和L同样次数的R,和U同样次数的D)
  13. (直球辱骂) 让我回忆起了洗数据的痛苦,这题绝对超丧心病狂,因为英语的各种不规则变形真的超智障 居然还不许有多余空格……边界条件怕是要判定疯了 思路其实很清晰,就是边界条件会比较恶心 给定数字n,首先 a, b = n / 1e9, n % 1e9 然后a的部分如果非0就调用toStr把这个三位数变成字符串,然后增加billion(空格),否则直接进入下一步 继续c, d = b / 1e6, b % 1e6, 同样的如果c非0就toStr带走,并增加million(空格),否则直接进入下一步 e, f = d / 1e3, d % 1e3, 同样,e非0就toStr,增加thousand(空格),否则直接下一步 接着就是天杀的toStr部分了,给定不超过3位数n a, b = n / 1e2, n % 1e2 如果a不为0,直接写个字典map到对应的英文(带空格)就好,然后增加hundred(空格),并判断b是否为0,。如果b不为0,增加个 and(空格)。否则直接结束 如果a为0,直接进入下一步。 给定两位数b,继续 c, d = b / 1e1, b % 1e1 如果c至少是2,那么输出对应的十位英文,map一下,并判断d是否为0。如果d不为0,增加个-。否则直接结束 如果c是1,那么根据d输出对应的英文(并带空格),还是map一下的事情 如果c是0,直接进入下一步 如果d非零,根据d输出对应各英文(带空格) 最后删除末位空格
  14. 没事……无论是win还是linux我都不会的(x
  15. 感谢,学到了全新的技巧,之前是真的不知道有这种功能
  16. 我怎么就想不到交换三行内呢 学到了学到了 前两步优化能想到,第三步优化会做不过未必想得到,第四步优化我是真的不会
  17. 反正最坏情况是我去抄50个数独的原型嘛,这个肯定不难,但是我觉得这个算机械降神的玩法 找原型这个事情我觉得应该是需要一些额外的引理的,当然暴搜+剪枝肯定能做就是了,第一行安排上abcdefghi不变,然后开始搜第二行,第三行这样 但是这样做不有趣(
  18. 我大概理解你说的意思了 实际上可以拓展我上面提到的引理,把123456789映射到abcdefghi上就完了 在确定了左上角的情况下,实际上我们还剩下8个数字到字母的映射,总计有8! = 40 320种不同的映射方法。 换句话说,我可以用abcdefghi来写数独,称作 “原型”,然后把原型经过映射得到实际的数独,每一个原型可以映射出4万种不同的数独 换句话说我只要有50个原型就已经可以带走了 而50个原型存到内存里并没有难度 所以接下来的问题就是我需要编出来这50个了 ↓问题是我现在还没编出来50个不同的“原型”啊 当然暴力点的做法是直接抄一些现成的数独答案,把里面的数字替换成abcd,看和之前的是否有相同的结构,反正肯定能抄出来50个吧……大概………… 不过我在想有没有更结构化的生成原型的方式
  19. 首次题目类型判断失误,完了我这回怕是要彻底回到最暴力的思路开始跑了……
  20. 感觉好像是动态规划问题? 说起来左上角数字是多少其实无所谓?毕竟对于数独来说,我只需要把123456789映射到abcdefghi上就完了。确定左上角只是确定其中一个数字的映射就完了?
  21. hard难度其实可以再做个hash set,每次计数的时候看一下有没有这个颜色,没有就加进来,有就丢掉。 不过果然是数据结构题……我想想怎么用数据结构解决好了
  22. 暴力确实能暴力打表做……但是大概会比较痛苦 感觉我需要一些精妙的数据结构…… 简单难度大概还好说? 给定q a b 倒序遍历之前的所有q x y c。我们会有4种情况 0. x y 和 a b 完全不搭界,那直接丢掉就好了,不用管 1. x < a < b < y,那ab区间直接被完全涂色了,所以之前无论做过什么都不影响了,倒序遍历到此为止,返回即可 2. x < a < y < b 或者 a < x < b < y,也就是单侧被涂了颜色,那我们需要记录单侧的位置y 或者 x,往前遍历的时候,如果再有类似的情况,比y还小或者比x还大的情况已经被盖住了,所以不用考虑了(可以理解为是一个窗口不断往中间缩) 3. a < x < y < b,即涂色在中间,类似于上一个情况,但是这回可以理解为一个窗口往两侧涨 2 和 3 混在一起的时候,如果这两个窗口的并集已经盖住了整个ab区间了,那直接可以停了,因为这意味着整条绳子已经在这个时候全都被重刷了一遍了 不过2和3混在一起应该还有一些情况需要排除掉…… 比如 p 1 100 0 p 60 100 1 p 0 50 2 p 20 80 3 p 40 60 4 p 0 30 5 很显然中间的p 0 50 2实际上已经全都被盖住了,但是按上文所述会被计入
  23. 是的,初看起来毕竟吓唬人,实际上注意到这一点之后会变得很简单 外加上因为怪物本身实际上可以理解为不存在先后顺序(因为不涉及到影响男主攻击力和血量还有大力储量的问题),所以就能确保局部最优就是全局最优,直接贪就可以了
  24. 那我觉得今天问题直接贪就可以了? 首先如果不吃药,怪物回合数 T_i = floor(L_i / D),受到的伤害 dH_i = T_i * K_i 吃药情况下,除了把大力理解为增加下一次攻击的方式,另一种理解方法是怪物看到了K018喝大力的姿势非常勇所以张嘴闭眼震惊到无法行动一回合。也就是怪物少出手了一回合。当然多喝几瓶就多白嫖几回合 而我们的目的是让K018不死,换另一个角度考虑可以理解为是找到完成任务所受到的最少伤害 因为整个魔塔没有加攻或者加血什么的复杂机制,都是超勇的直接对日,那么很显然好钢用在刀刃上,如果一个怪打我很疼,那么我就要超勇的喝大力。只要我秒了他,那他就没得出手了。(所以实际上如果一场战斗我注定要喝大力的话,那我不如先喝为敬 所以算法就很显然了(施工中 import numpy as np T = np.floor(L / D) #各怪回合数 idx = list(np.argsort(K)) #根据怪物攻击力升序排列 for i in reversed(idx): #从最疼的怪开始 dm = min(T[i], m) #大力能喝多少喝多少 m = m - dm #喝掉大力 T[i] = T[i] - dm #白嫖回合 if m == 0: #大力喝光了 break dH = np.sum(T * K) #统计受到的总伤害 return H > dH
×
×
  • 新建...

重要消息

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