Codeforces 250 题目分析

附注 1:由于 Codeforces 服务器故障,本题的程序时限标称二分之一
附注 2:若难度标记为形如 XXX/YYY 的格式且斜线前后颜色不同,则前者为作者估计,后者为洛谷标注。(吐槽:洛谷很多题目难度虚高)

题目

Dashboard

题目分析

A

难度:入门 / 普及−
算法标签:贪心
题目大意:给你 n 个数,然后你分成若干个子序列,要求每个子序列至多有 2 个负数,求最少的子序列数。
题解:每个子序列分 2 个负数即为正解。读者自证不难。

B

难度:普及− / 普及/提高−
算法标签:模拟
题目大意:给定若干组 IPv6 地址的缩略形式,求这些地址的完整形式。
题解:字符串处理。
IPv6 的地址缩写(基本上)遵循两条原则:

  1. 省略前导 0
  2. 连续的 0000 串用 :: 代替(如 1234:5678:0000:0000:0000:0000:0938:00001234:5678::938:0),且保证 :: 符号最多出现一次;
  3. 特别的,0000:0000:0000:0000:0000:0000:0000:0000::

因此这样处理:遍历字符串,判断每“节”(即相邻 : 及头尾之间的内容)字符数,缺的补全。若某节中没有字符则判断长度后全部输出 0

1.5 倍经验:洛谷 P2815

C

难度:普及/提高−
算法标签:贪心
题目大意:

给出一个长度为 n 的序列,序列仅包含 1k 的数字,且对于每个数字,在序列中的出现次数至少为一次。
现在请你选出一个数字,使删去数列中所有的这个数字后,相邻位置的数字是不同的个数最小。
如果答案有多个,请输出最小的一个。

题解:不难发现形如 xxxxx 的子串对答案的贡献和 x 是一样的。然后直接做就做完了。

D

难度:普及+/提高
算法标签:几何、三分、双指针
题目大意:

现在有 n 个点 Ai=(a,yi)m 个点 Bi=(b,yi),点 O=(0,0)
定义 |XY|X,Y 两点间欧几里得距离,最小化 mini=1nminj=1m(|OAi|+|AiBj|+lj),求对应的 ij

题解:暴力的复杂度是 O(nm) 的。因此考虑优化。
不难发现排序后,当 j 是一个常数时,f(i)=|OAi|+|AiBj|+lj 是一个单谷函数。于是可以三分。
时间复杂度 O(mlog3n),可以通过这道题。

E

难度:普及+/提高
算法标签:暴力(?)
题目大意:

给一个怪物,然后它一开始看着右边,每一秒它会做出如下行动:

  • 如果它的下面是空着的,那么它就掉下去。特别注意它的视角不变,也就是说它一开始向右看,那么掉下去也向右看。
  • 否则它就往视线的方向走,如果碰到 + 它会破坏掉,然后转视角;如果是 # 那么它破坏不了,但它依然会换视角。
    每个操作可以看成 1 秒之内完成的。求出它下到 1 楼的时间。
    image

题解:暴力 O(nm2) 的会 T。可以看出某些时候它可能会重复走走过的路线。那么这种情况下考虑跳过空区间。这样复杂度就降为 O(nm) 就过了。

posted @   cwkapn  阅读(114)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示