santisify Site

Back

Atcoder beginner contest 374Blur image

A.Takahashi san 2#

Takahashi san 2

题目描述#

判断字符串末尾是否有 san 这个后缀

参考代码#

B.Unvarnished Report#

Unvarnished Report

题目描述#

给定字符串 SSTT,若字符串 SS 和字符串 TT 完全相等,则输出 00 否则输出 SSTT 第一个不相同的位置.

解题思路#

首先判断两个字符串是否相同,

若相同直接输出 00

否则用 forfor 遍历一次字符串

参考代码#

C.Separated Lunch#

Separated Lunch

题目描述#

给出一个数 nn, 和一个长度为 nn 的数组 KK, 将这个数组划分为 AA , BB两个部分,使得这两个部分的和 SAS_{A}SBS_{B} 中的最大值最小

数据范围: 2n202 \leq n \leq 20, 1Ki1081 \leq K_{i} \leq 10^{8}

解题思路#

瞄一眼中文题面, 有点像 0101 背包, 但是你可以发现数据范围好像不能用背包,有没有其他方法呢?

好像 nn 的范围比较小,我们可以使用 dfsdfs 来搜索每一种情况,最多为 2202^{20},那么怎么判断哪种情况最优?只需要满足 SAS_{A}SBS_{B} 的差值最小,答案即为差值最小时的最大值。

参考代码#

D.Laser Marking#

Laser Marking

题目描述#

在一个平面上给出 nn 条线段的起始点(Ai,Bi)(A_{i}, B_{i})和终点(Ci,Di)(C_{i}, D_{i}) 现在要使用激光打印机打印这些线段,在打印线段时的移动速度为每秒 TT 个单位长度, 不打印的时候的移动速度为每秒 SS 个单位长度, 问打印这些线段的最短时间为多少?

解题思路#

由于一个线段可以从两个端点中的任意一个开始打印,看来这个题又和上面一个题一样使用 dfsdfs ,循环初始到达线段,先移动到其中一个端点,再移动到另一个端点,答案记录下来,再dfsdfs, dfsdfs函数中的参数 xx, yy, uu, vv 表示在此之前是从点(x,y)(x,y) 移动到了 (u,v)(u,v).其实 dfsdfs 只传当前位置就行了,只是个人方便识别.

参考代码#

hypot()函数详解: hypot(x, y) 返回的是浮点型数据类型,值为 x2+y2\sqrt{x^{2} + y^{2}} 即将x,yx, y作为直角三角形的两条直角边的斜边。 hypot(x,y,z) 返回类型同上值为 x2+y2+z2\sqrt{x^{2} + y^{2} + z^{2}}

Atcoder beginner contest 374
https://santisify.top/blog/old/abc374
Author santisify
Published at October 7, 2024
Comment seems to stuck. Try to refresh?✨