首页 > 其他分享 >2024杭电多校2&3

2024杭电多校2&3

时间:2024-07-31 16:06:10浏览次数:11  
标签:杭电多校 cnt 复杂度 2024 怪物 ans ind dp

能补多少是多少吧(大哭

2

1002 梦中的地牢战斗 (hdu7446

本来看到66/386的战况差点打算跳过,看一眼题解似乎是dp+最短路之类,或许可以再想想?

于是开始认真读题,数据范围很小,尤其是怪物数量 \(k\leq 10\),加之题目时限 \(4s\),考虑略显暴力的状态压缩。由于角色血量 \(\leq 0\) 时失去所有金币,为了优先保证角色存活,可直接将所受伤害总和当作贷款生命值处理,若最后还不起贷款,在开头选择离开地牢即可。经观察可得,角色受到的伤害值与其位置和周围怪物是否存活有关,而获得的金币数量仅与已死的怪物有关,因此用状压表示怪物死亡情况,可同时维护这两个变量。

设 \(dp[i][j][s]\) 表示角色在 \((i,j)\) 位置、已经杀死怪物状态为 \(s\) 时所受的最小伤害,由于角色可往上下左右四个方向运动,dp操作不便(或者是由于我dp没学好),考虑建图计算最短路,经计算 \(n*m*2^k*t\) 最大为 \(10^7\) 左右,复杂度符合要求。将每个dp状态换算为点的编号,角色的移动即在不同状态之间连边,为快速计算出移动过程中杀死的怪物,可用前缀和表示 \(x,y\) 方向上的怪物“前缀状态”;边的权值即到达状态下角色受到的伤害,预处理出每个格子受哪些怪物影响、每种怪物影响状态下的伤害值,连边时即可 \(O(1)\) 计算边权。最后统计答案,最大金币数量即获得金币数 \(-\) 损失生命值,获得的金币数即已死怪物的价值和,可以做类似于伤害值的预处理。为保证时间复杂度,需预处理的变量较多,代码实现时注意理清思路,避免混淆出错。我就莫名其妙写挂了好几次,我是猪

最后回去看题解,大体思路差不多,不过上述状态设计中边权非负,dijstra计算最短路即可。

1008 成长,生命,幸福 (hdu7452

又错半天才过,真是太幸福了(闭眼)(心满意足地似了)

首先一个有趣的小结论:若最终树的直径经过了原树上某节点 \(x\) 生成的点,为了使直径最大,\(x\) 生成的所有点都应被包含在直径中。于是可以将 \(x\) 生成的点数视为其权值,问题转化为求一棵节点带权的树的直径。

对于生成点数,易知每个点在一次生长后,生成的所有节点度数不超过 \(3\),具体来说,度数 \(ind\geq 2\) 时,生成 \(ind-2\) 个度数为 \(3\) 的点和 \(2\) 个度数为 \(2\) 的点。由此可尝试递推,设 \(a_i\) 为 \(i\) 次操作后生成的点总数,其中度数为 \(3\) 的点有 \(b_i\) 个,度数为 \(2\) 的点有 \(c_i\) 个,则有 \(b_{i+1} = b_i, c_{i + 1} = 2b_i + 2c_i;\space b_{i + 2} = b_i,c_{i + 2} = 2b_i+2*(2b_i + 2c_i); ......\) 观察规律,由高中学过的数列求和知识可得, $a_m = b_1*{\sum\limits_{i = 0}^{m - 1} 2^i} + c_1* 2^{m -1 } = b_1 * (2^m - 1) + c_1 * 2^{m - 1} $;代入最初度数值 \(ind,\space b_1 = ind - 2, c_1 = 2\),得 $a_m = (ind - 2)* (2^m - 1) + 2^m = (ind - 1)* (2 ^ m - 1) + 1 $.

数据范围 \(m\leq 10^9\),结果对 \(10^9 + 7\) 取模,当 \(m\) 过大时,取模后的权值无法准确比较大小。考虑分类讨论:\(m\leq 30\) 时,最终结果不会超过long long的数据范围,可直接求直径后对答案取模。\(m>30\) 时,由于最后一项 \(1\ll 2 ^ m - 1\),可近似将 \((ind - 1)* (2 ^ m - 1)\) 作为权值计算,而整体 \(2 ^ m - 1\) 系数不变,比较路径上 \(\sum (ind - 1)\) 大小即可;当 \(\sum (ind - 1)\) 相同时,再考虑最后一项带来的误差,即比较路径上节点的数量。注意这几处特判,其他部分与树上求直径的代码实现基本相同。

1012 图计算 (hdu7456

答案计算时只需考虑图的联通性,与其他性质无关,故用并查集维护。\((u,v)\) 联通意味着它们在每张图上都有相同的祖先,可记录每个点在 \(d+1\) 张图上的祖先集合,用随机哈希法可快速比较两个集合是否相同,给每张图赋一个随机哈希值 \(val\),各点在每张图上的祖先集合即可用 \(val*fa\) 的异或值表示,保存在unordered_map中。

mt19937 ra(random_device{}()); //非常好随机数,我天天忘
for(int i = 1; i <= d; i++) {
    val[i] = ra();
    for(int j = 1; j <= n; j++) {
        h[j] ^= val[i] * j;
    }
}

对于每次加边操作,需修改其中一个并查集内所有点的祖先情况,复杂度较大,考虑使用启发式合并优化复杂度。每次合并操作时,以并查集大小为序、将较小者并入较大者,由于每次合并后并查集大小翻倍,可保证每个点被修改的次数不大于 \(dlogn\),复杂度即稳定于 \(d*nlogn\). 合并改祖先的同时修改哈希值,赋值规律同上所述,此时可直接计算 \(ans\) 的变化量,省去每次重新统计答案的复杂度。点对无序的情况下,设 \(cnt=mp[hash]\),其对答案的贡献即 \(cnt*(cnt - 1) / 2\);每次改变一个点的祖先情况,\(cnt+1\) 时答案即变化 $cnt * (cnt + 1) / 2 - cnt * (cnt - 1) / 2 = cnt $, \(cnt - 1\) 时同理计算即可。

双倍经验(bushi):洛谷P8026(事实上看了洛谷的题解才理解启发式合并··· 感谢洛谷题解区的大佬呜呜)

3

1001 深度自同构 (hdu7457

快乐找规律题,赛时两人经过一番乱搞推理过的。

由于最后形成森林,可对一棵树与多棵树的情况分类讨论,为保证深度自同构,多棵树的形状必须完全相同,若 \(x\) 是 \(y\) 的倍数,则 $ ans[x]$ 与 $ans[y] $ 之间存在递推关系。设 \(dp[i]\) 为 \(i\) 个点形成一棵树的情况数, \(ans[i]\) 为 \(i\) 个点时形成的森林总数,则对于 \(x\) 的所有因数 \(y\),$ans[x]=\sum\limits_{y = 1} dp[y] $;而 \(dp[x]\) 可视为将 \(ans[x - 1]\) 中所有树连接至新增的根节点上,有 \(dp[x] = ans[x - 1]\). 计算答案时在循环中将 \(dp[i]\) 累加至 \(ans[i * k]\) 上,貌似用调和级数可算出复杂度 \(nlogn\).

标签:杭电多校,cnt,复杂度,2024,怪物,ans,ind,dp
From: https://www.cnblogs.com/meowqwq/p/18331359

相关文章

  • 宝兰德受邀出席2024光合组织领导人大会,共话产业生态开放共赢之道
    近日,2024光合组织领导人大会在郑州国际会展中心圆满召开。大会以“共启AI,豫见未来”为主题,立足AI计算产业生态协同发展,广邀院士专家、行业领袖、软硬件生态厂商齐聚一堂,共话先进计算产业高质量发展。作为光合组织的重要成员单位和国内领先的基础软件供应商,宝兰德受邀出席此次盛......
  • 2024 年过半,AI 大模型在各行业的落地实践走到哪了?
    转眼之间,2024年已经过半,AI大模型的热度从去年的技术探索转向落地实践,肉眼可见的是,各行各业都纷纷在这场热潮中寻找新的业务创新点和行业增长点。“大模型的出现带来了变革,它实现了知识平权,为我们提供了技术条件,使得我们能够参与到AI的应用中来。”宁德核电人工智能实验......
  • 20240731题解
    这么简单的题目没有AK(计时器(timer)题目:每次可以加上\(2^n-1\),问多少次变成\(x\)题解:因为较大的数大于较小的数的两倍,直接贪心的选最大的即可。复杂度\(\Theta(T\logn)\)代码:#include<cstdio>#defineintlonglongconstintN=105,A=1000000000000000000;intT,x,f[N......
  • 老式移动和联通标准SIM卡在2024的今天
    前言在我手里的,是一张普通联通和一张移动M-ZONE标准SIM卡桌上散落的SIM卡碎片已经说明了一切———我要把这些00后的SIM卡装入2024年的手机(图中为大卡的测试机,没那么有风险)联通输入123456,直接被锁,提示要用puk码解锁我后来再搜索puk码的时候才知道默认pin码是1234,草率了......
  • 2024“钉耙编程”中国大学生算法设计超级联赛(1)
    1001循环位移双哈希1002星星简单\(dp\),使用\(dp[i][j]\)表示前\(i\)轮获取\(j\)颗星星的最小贡献。时间复杂度\(O(\sumn\timesk)\)。1003树树上启发式合并,当时只知道原理,没写过题目,不应该按照自己理解瞎写的,应该先简单学一下……考虑将一个节点\(j\)添加进......
  • 【面试题一】 2024 大厂进阶Vue2面试题及答案(10道)
    Vue2进阶面试题及答案1.Vue2的数据响应原理是什么?答案概要:Vue2使用了观察者模式和发布订阅模式来实现数据的响应式。具体来说:当数据被初始化时,Vue会遍历数据对象的每一个属性,使用Object.defineProperty为每一个属性添加getter和setter。在getter中,会收集......
  • 2024/7/31 每日一题
    LeetCode3111覆盖所有点的最少矩形数目方法1:贪心classSolution:defminRectanglesToCoverPoints(self,points:List[List[int]],w:int)->int:lst=sorted(set(xforx,_inpoints))ans,idx,i=1,0,0#位于第一个whilei<le......
  • 2024网站动态文字广告安全检测跳转源码
    源码介绍网站动态文字广告安全检测html源码,适合做网址跳转提示页,简约美观,喜欢的朋友可以拿去使用效果预览使用方法1.创建一个空白文件,命名ad.html或者go.html2.将下面代码拷贝到创建的html文件里面3.将创建的html文件上传到服务器或者虚拟主机里面,然后根据域名或者ip......
  • 2024年最佳个人项目管理软件评测
    国内外主流的10款个人项目管理软件对比:PingCode、Worktile、蓝凌OA、Teambition、Tower、禅道、Asana、Trello、Monday.com、Jira。在管理日益复杂的个人项目时,找到一款能够真正符合需求的管理软件,常常是许多人面临的难题。市面上的工具琳琅满目,功能千差万别,这使得选择一款合适......
  • 第十三届先进材料与工程材料国际会议(ICAMEM 2024)
    https://www.icamem.org/**会议简介**2024年第十三届国际先进材料与工程材料会议(ICAMEM2024)将于2024年12月16日至18日在迪拜举行。自2011年以来,ICAMEM已在沈阳、宁波、北京、香港、泰国、新加坡等多个国家和地区成功举办,成为国际性的重要学术盛会。ICAMEM旨在为研究人员、学......