当前位置: 首页 > news >正文

专业做网文的网站网站维护具体怎么做呀

专业做网文的网站,网站维护具体怎么做呀,如何用自己的域名做网站,wordpress主机需要多大Leetcode 3049. Earliest Second to Mark Indices II 1. 解题思路2. 代码实现3. 算法优化 题目链接:3049. Earliest Second to Mark Indices II 1. 解题思路 这道题我看貌似难度报表,比赛的时候貌似只有36个人搞定了这道题目,然后最快的人…
  • Leetcode 3049. Earliest Second to Mark Indices II
    • 1. 解题思路
    • 2. 代码实现
    • 3. 算法优化
  • 题目链接:3049. Earliest Second to Mark Indices II

1. 解题思路

这道题我看貌似难度报表,比赛的时候貌似只有36个人搞定了这道题目,然后最快的人耗时也花了40min以上,就很离谱,和平时基本15分钟就能有大佬全部做出来4道题的情况完全不懂,就很吓人。

所以基本上我对这道题也算是一个半放弃的状态,不过后来还是看了一下,然后发现其实也不是完全无法上手,本质上还是求一个处理的最优解,且显然这个操作依然是单调的,即从某一个位置开始,后续所有的操作序列都可以使得所有的位置都被mark上。

因此,最开始我的思路也是二分法来求任意一个位置作为操作序列的结束点时能否判断其是否可以使得所有的位置都被mark上,然后就和上一题一样,这里就变成了一个贪婪算法,要最优的分配点数使得所有的值都可以先降为0然后再mark上。

但是比较尴尬的是这里我们的贪婪算法并没有完成,因此有以下一个判断无法彻底想明白:

  • 已知任何一次直接归零操作都必须附加一次mark操作进行完成,因此对于任意一个点,我们需要判断是否要等待后续直接操作位然后再多加一轮操作使之mark还是直接使用当前富裕的点数(如果有的话)进行归零然后mark。

因此后续干脆就是直接绕开这个,走了最暴力的动态规划的方法,遍历了所有的可能,即每一个位置到底是走的快速清零还是进行-1或者mark操作,这里,显然如果要进行快速清零那必然是在某个位置在changeIndices当中最早出现的位置上。

但是,直接地实现会出现内存爆炸的情况,因此,我们做了一些不严谨的剪枝,即如果某次快速清零可以省出100以上的富裕,那么必走快速清零,反之考虑是否忽略掉这个快速清零的路线。

需要强调,这个方式是不严谨的,因为如果存在全面富裕了非常多的点数远大于100,而最后来一个可以清空100的操作,那不一定要走快速清零的,因为那样会需要额外多一次操作。

但是对于绝大多数的情况上述结果是对的,在这里也确实可以通过测试样例。

2. 代码实现

给出python代码实现如下:

class Solution:def earliestSecondToMarkIndices(self, nums: List[int], changeIndices: List[int]) -> int:n, m = len(nums), len(changeIndices)changeIndices = [x-1 for x in changeIndices]needed = sum(nums) + nfirst_seen = {}for i, x in enumerate(changeIndices):if x not in first_seen and nums[x] > 1:first_seen[x] = ifirst_seen = {v:k for k, v in first_seen.items()}@lru_cache(None)def dp(idx, need, extra):if need <= 1 and extra <= 1:return idxelif idx >= m:return mif idx not in first_seen:return dp(idx+1, need-1, max(extra-1, 0))i = first_seen[idx]if nums[i] >= 100:return dp(idx+1, need-nums[i], extra+1)else:return min(dp(idx+1, need-1, max(extra-1, 0)), dp(idx+1, need-nums[i], extra+1))ans = dp(0, needed, 0)return ans+1 if ans != m else -1

提交代码评测得到:耗时1219ms,占用内存288.9MB。

3. 算法优化

因为前面也反复强调了,上述解法有效,但是剪枝的存在使得上述解法并不严谨,因此,我们在这里摘录一下其他大佬们的解法作为补充,有兴趣的读者可以自行研读学习一下,这里就让我偷个懒了……

class Solution:def earliestSecondToMarkIndices(self, nums: List[int], changeIndices: List[int]) -> int:first_idx = [-1] * len(nums)for i in range(len(changeIndices)):if first_idx[changeIndices[i]-1] == -1:first_idx[changeIndices[i]-1] = ifor i, num in enumerate(nums):if num <= 1:first_idx[i] = -1default_needs = sum(nums) + len(nums)def is_possible(k):left = 0h = []pos_count = 0flag = Falsefor j in range(k, -1, -1):if flag:pos_count += 1flag = Falseelse:flag = Trueleft += 1i1 = first_idx[changeIndices[j]-1]if i1 == j:heapq.heappush(h, [nums[changeIndices[j]-1] - 1, changeIndices[j]-1])if len(h) > pos_count:heapq.heappop(h)return default_needs - sum(h1[0] for h1 in h) <= leftans = 0return ansl, r = len(nums)-1, len(changeIndices)-1while l < r:m = (l + r) // 2if is_possible(m):r = melse:l = m + 1if l > r or not is_possible(l):return -1return l+1
http://www.yayakq.cn/news/199053/

相关文章:

  • 网站建设如何做用户名密码医院咨询男科
  • 公司网站内容更新该怎么做阿里巴巴国际站运营培训
  • 静态网页模板网站推广网站制作怎么做
  • 有做网站设计的吗微信小程序客户管理系统
  • wordpress网页打开加快广州专做优化的科技公司
  • 滨江网站建设公司有没有99块钱做网站
  • wordpress集成微博登陆青岛谷歌优化公司
  • asp.net搭建网站农业信息网站建设方案
  • 有什么做vi设计的网站企业软件下载
  • 网站建设 职责品牌推广与传播方案
  • 全国建设项目竣工验收公示网站钦州电商网站建设
  • 怎样做自己的网站加入百度联盟网站建设设计费会计分录
  • 网站 app 共同架构移动路由器做网站服务器
  • 网站架构优化 amp中小企业有哪些公司
  • cms建站系统简易的在线数据库网站模板下载
  • 重庆网站仿站维护网站一年多少钱
  • 网站开发 强制兼容模式深圳个人形象设计
  • 一个互联网公司可以做几个网站建设银行理财网站
  • 深圳大型网站建设公司云主机 网站 多个二级域名 seo优化
  • 学校网站建设意义营销型网站的特点有哪些
  • 网站高并发前端怎么做祥云县网站
  • 外贸建站与推广如何做人体内脉搏多少是标准的?大型网站 cms
  • 购物网站建设哪家好微信微网站教程
  • 网站文章seo申报城市维护建设税上哪个网站
  • 河南建设银行官方网站windows 2003建设网站
  • 哈尔滨企业建站服务商网站平台建设缴纳什么税
  • 网站外链平台建网站建设公司
  • 珠海网站建设百度app下载官方免费最新版
  • 怎么样自己做百度网站模板自助建站
  • 昆明做网站多少钱最好网站制作工具