【test】2024.10.8
次大值
思路
发现性质,对于一个数
当他取得最大值时
于是对于前&n-1&大的数,他的贡献值就是他本身,所以我们只需要保存第,大的数就可以。
但是此时要注意第大的数的贡献值没有计算,由于,所以如果他要对答案有贡献,当且仅当
因此我们只需要保存前大的数即可。
注意,如果去重后只有个数,那么答案就是。如果只有个数,那么输出。
我还没写正解。QAQ
倒水
思路
如果一堆瓶子最后可以合为一个,那么这堆瓶子的个数就一定是。
根据谈心原则如果想让当前瓶子数减少,那么只需要加上瓶子数的。即
注意,每次操作完后总瓶子数不一定减1。
Count Interval
思路
我们设表示右端点为的前缀和,于是满足条件的区间,
移项就可以得到
得到正解。我们从到遍历序列,遍历同时,开一个桶,记录的个数。
注意,要开
我也没写,QWQ
飞行路线
就是分层图的板子,时间复杂度
利用思想,设表示到第个点,已经使用此免费机会时的最小花费。
则
利用这个转移方程,再跑一遍
!!!注意 1.数组要开二位,即把每一个看成一个独立的点
2.跑会被卡
262144 P
思路
一道非常好的题目,暴力就是区间DP,设表示区间中所能合成的最大数的值。
但是由于都很大,所以状态错误,此时联想到一道的题目,考虑是否能互换状态,然后这道题就做完了。
设,表示左端点为,合成出的区间右端点。由于所以状态正确。
当左端点确定,且合成出数确定后,由于序列是给定的,右端点显然也是确定的。利用倍增思想
最后的答案就是值不为0的最大。
注意,决策时要保证不为0,因为如果为0就表示一个无法合成
Yet Another Monster Killing Problem
思路
考虑贪心,对于每一个,都想让它扩展出去最远,由于当前决策不会影响以后和以前的决策,所以贪心具有正确性。
对于一个区间,他是否能在一天内被打完,取决于,是否有一个英雄,他的耐力值大于等于该区间,且他的战斗力大于等于区间怪物战力最大值。
对于耐力值相同的英雄,显然我们要保留战力最大的那一个。
此时我们可以设两个桶,分别表示耐力值为的实力最大值,和耐力值大于等于的最大实力。
其中
由于随减小而增加,区间最大值随区间长度增加而增加,都满足单调性,所以可以写一个类似双指针的东西
我写的代码丢了,至今未调出来,QWQ
青蛙过河
思路
这题显然可以二分跳跃能力,那么问题是如何写
先看性质,如何由任何一个长度为(跳跃能力)的区间中的和小于,那么就不合法。
先证明必要性
对于一个区间和小于,那么一定会出现一种情况,使青蛙在区间左端点时无法跨越这一个区间。
再证明充分性
既然每一个区间都满足,那么青蛙一定可以在任意时刻的任一点,找到一个落地点。
Zuma
思路
有一个很重要的性质,对于每一个区间,他一定可以被分为若干个回文串(单个字符也算是回味串)。
这题一眼区间,设表示合并完所用的最小时间。
注意,
特殊的如果,那么之间的字符串,由性质可以得到,一定可以被合并位一个回文串,此时合并不需要额外花费
注意需要特判如果,那么中间为空,此时
代码丢了,崩
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话