CF2000
CF1294F Three Paths on a Tree
除去整棵树是一条链的情况,答案的构成应该是两条链拼在一起。考虑贪心,先找到直径,再枚举不在直径上的点,求出它们到直径的距离最大值与直径加和即可。最后特判一下一条链的情况。
CF1288E Messenger Simulator
首先最靠上的位置很显然是
考虑如何求最靠下的位置。
一个很巧妙的做法是在数组前面添加
CF1288D Minimax Problem
最小值最大化问题显然可以二分答案,对于每次二分出来的
CF1280C Jeremy Bearimy
感性理解一下,对于距离和的最小值,肯定是让每个点与尽量近的点匹配,使得每条边被经历尽量少次,最大值则相反。
那么考虑贪心,先说最小值,对于一条边
在考虑最大值,还是对于一条边
CF1268B Domino for Young
对网格黑白染色,一个骨牌一定覆盖在一个黑格和一个白格上,最多能放的骨牌数量就是黑格数量和白格数量取 min。
CF1266D Decreasing Debts
对于一个点如果既有出边又有入边,那么就将该点的这两条边权同时减去它们的最小值,这样就可以将所有点分为两大类,只有出边或者只有入边。可以理解为,一个人如果借给别人
CF1257E The Contest
首先将
转移方程显然:(
CF1256F Equalizing Two Strings
题目中并不在意操作的次数,所以不妨将
首先如果每个字母的出现次数不同,那么输出
先考虑没有相同字母出现的情况,这样将第一个数组的字母顺序映射到第二个数组,形成一个排列。问题转化成将一个排列通过交换相邻数字变成升序排列,显然交换次数为偶数时合法,否则不合法。经典用逆序对求解,逆序对个数即为交换次数。
再考虑存在相同字母的情况,可以通过将逆序对数量
CF1256E Yet Another Division Into Teams
首先排序,同组的人一定是排序后连续的一段。容易想到这是一个 dp,dp状态显然:
一个显然的结论是每组的人数区间为
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现