「上帝一声不响,一切皆由我定」|

BadBadBad__AK

园龄:1年6个月粉丝:13关注:6

CSP-J游记

语文老师告诉我们游记要写时间人物地点

时间:2023年10月21日

地点:华中师范大学

人物:我

审题环节

开始考试了,我们老师告诉我们先审题30分钟

先看时间和内存限制

题目名称 时间限制 内存限制
小苹果 1.0秒 512 MiB
公路 1.0秒 512 MiB
一元二次方程 1.0秒 512 MiB
旅游巴士 1.0秒 512 MiB

还挺正常的,只不过看见一个一元二次方程有点慌

开始看题目

First question

小 Y 的桌子上放着 n 个苹果从左到右排成一列,编号为从 1n

小苞是小 Y 的好朋友,每天她都会从中拿走一些苹果。

每天在拿的时候,小苞都是从左侧第 1 个苹果开始、每隔 2 个苹果拿走 1 个苹果。随后小苞会将剩下的苹果按原先的顺序重新排成一列。

小苞想知道,多少天能拿完所有的苹果,而编号为 n 的苹果是在第几天被拿走的?

对于所有测试数据有:1n109

测试点 n 特殊性质
12 10
35 103
67 106
89 106
10 109

特殊性质:小苞第一天就取走编号为 n 的苹果。

乍一看,哎,这不是纯模拟题吗?

可是109是什么东西呀,就是O(n)的算法也会TLE吧

所以说我们必须要用O(logn)或O(n)以下的算法

让我们来看一下有哪些时间复杂度小于O(n)的算法吧

  1. 二分(logn)
  2. 部分数论(logn)

无非也就两种,而数论肯定不可能,所以只能是二分

Second question

小苞准备开着车沿着公路自驾。

公路上一共有 n 个站点,编号为从 1n。其中站点 i 与站点 i+1 的距离为 vi 公里。

公路上每个站点都可以加油,编号为 i 的站点一升油的价格为 ai 元,且每个站点只出售整数升的油。

小苞想从站点 1 开车到站点 n,一开始小苞在站点 1 且车的油箱是空的。已知车的油箱足够大,可以装下任意多的油,且每升油可以让车前进 d 公里。问小苞从站点 1 开到站点 n,至少要花多少钱加油?

对于所有测试数据保证:1n1051d1051vi1051ai105

测试点 n 特殊性质
15 8
610 103
1113 105 A
1416 105 B
1720 105
  • 特殊性质 A:站点 1 的油价最低。
  • 特殊性质 B:对于所有 1i<nvid 的倍数。

欸,这不纯纯动态规划吗

可是 我不会呀

所以这道题我直接弃掉了,在赛后才发现原来只是一道贪心

Third question

众所周知,对一元二次方程 ax2+bx+c=0,(a0),可以用以下方式求实数解:

  • 计算 Δ=b24ac,则:
    1. Δ<0,则该一元二次方程无实数解。
    2. 否则 Δ0,此时该一元二次方程有两个实数解 x1,2=b±Δ2a

例如:

  • x2+x+1=0 无实数解,因为 Δ=124×1×1=3<0
  • x22x+1=0 有两相等实数解 x1,2=1
  • x23x+2=0 有两互异实数解 x1=1,x2=2

在题面描述中 ab 的最大公因数使用 gcd(a,b) 表示。例如 1218 的最大公因数是 6,即 gcd(12,18)=6

题目描述

现在给定一个一元二次方程的系数 a,b,c,其中 a,b,c 均为整数且 a0。你需要判断一元二次方程 ax2+bx+c=0 是否有实数解,并按要求的格式输出。

在本题中输出有理数 v 时须遵循以下规则:

  • 由有理数的定义,存在唯一的两个整数 pq,满足 q>0gcd(p,q)=1v=pq

  • q=1则输出 {p},否则输出 {p}/{q},其中 {n} 代表整数 n 的值;

  • 例如:

    • v=0.5 时,pq 的值分别为 12,则应输出 -1/2
    • v=0 时,pq 的值分别为 01,则应输出 0

对于方程的求解,分两种情况讨论:

  1. Δ=b24ac<0,则表明方程无实数解,此时你应当输出 NO

  2. 否则 Δ0,此时方程有两解(可能相等),记其中较大者为 x,则:

    1. x 为有理数,则按有理数的格式输出 x

    2. 否则根据上文公式,x 可以被唯一表示为 x=q1+q2r 的形式,其中:

      • q1,q2 为有理数,且 q2>0
      • r 为正整数且 r>1,且不存在正整数 d>1 使 d2r(即 r 不应是 d2 的倍数);

    此时:

    1. q10,则按有理数的格式输出 q1,并再输出一个加号 +
    2. 否则跳过这一步输出;

    随后:

    1. q2=1,则输出 sqrt({r})
    2. 否则若 q2 为整数,则输出 {q2}*sqrt({r})
    3. 否则若 q3=1q2 为整数,则输出 sqrt({r})/{q3}
    4. 否则可以证明存在唯一整数 c,d 满足 c,d>1,gcd(c,d)=1q2=cd,此时输出 {c}*sqrt({r})/{d}

    上述表示中 {n} 代表整数 {n} 的值,详见样例。

    如果方程有实数解,则按要求的格式输出两个实数解中的较大者。否则若方程没有实数解,则输出 NO

对于所有数据有:1T50001M103|a|,|b|,|c|Ma0

测试点编号 M 特殊性质 A 特殊性质 B 特殊性质 C
1 1
2 20
3 103
4 103
5 103
6 103
7,8 103
9,10 103

其中:

  • 特殊性质 A:保证 b=0
  • 特殊性质 B:保证 c=0
  • 特殊性质 C:如果方程有解,那么方程的两个解都是整数。

这一看到题面就不想做呀,要不弃了吧

可是我突然看到特殊性质C,如果方程有解,那么方程的两个解都是整数

这不直接套用公式么

所以说只用看这个就行了

  • 计算 Δ=b24ac,则:
    1. Δ<0,则该一元二次方程无实数解。
    2. 否则 Δ0,此时该一元二次方程有两个实数解 x1,2=b±Δ2a

直接拿50分呀

Fourth question

[CSP-J 2023] 旅游巴士

题目描述

小 Z 打算在国庆假期期间搭乘旅游巴士去一处他向往已久的景点旅游。

旅游景点的地图共有 n 处地点,在这些地点之间连有 m 条道路。其中 1 号地点为景区入口,n 号地点为景区出口。我们把一天当中景区开门营业的时间记为 0 时刻,则从 0 时刻起,每间隔 k 单位时间便有一辆旅游巴士到达景区入口,同时有一辆旅游巴士从景区出口驶离景区。

所有道路均只能单向通行。对于每条道路,游客步行通过的用时均为恰好 1 单位时间。

小 Z 希望乘坐旅游巴士到达景区入口,并沿着自己选择的任意路径走到景区出口,再乘坐旅游巴士离开,这意味着他到达和离开景区的时间都必须是 k 的非负整数倍。由于节假日客流众多,小 Z 在旅游巴士离开景区前只想一直沿着景区道路移动,而不想在任何地点(包括景区入口和出口)或者道路上停留

出发前,小 Z 忽然得知:景区采取了限制客流的方法,对于每条道路均设置了一个
“开放时间”ai,游客只有不早于 ai 时刻才能通过这条道路。

请帮助小 Z 设计一个旅游方案,使得他乘坐旅游巴士离开景区的时间尽量地早。

【数据范围】

对于所有测试数据有:2n1041m2×1041k1001ui,vin0ai106

测试点编号 n m k 特殊性质
12 10 15 100 ai=0
35 10 15 100
67 104 2×104 1 ai=0
810 104 2×104 1
1113 104 2×104 100 ai=0
1415 104 2×104 100 uivi
1620 104 2×104 100

直接放弃吧,没啥好说的

做题环节

First question

我们通过小学奥数可以知道

每一次取得个数是原来的个数/3+1

而取到最后一个数怎么算呢?

我们可以用当前的个数-1%3,如果余0 也就是整除,那么就可以取到最后一个数

总结

  1. 每次去掉/3+1个
  2. 如果-1%3==0 那么当前次可以取到最后一个数

100分

Second question

放弃

0分

Third question

定义一个sum=b*b-4ac

如果sum<0 输出NO

否则输出max(-b+sqrt(sum)/2a,-b-sqrt(sum)/2a)

50分

Fourth question

直接骗分,输出k*2

5分

总结

总分:100+0+50+5=155=一等奖

第一题正常发挥

第二题类型判断错误

第三题侥幸

第四题运气

本文作者:BadBadBad__AK

本文链接:https://www.cnblogs.com/BadBadBad/p/2023CSP-J.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   BadBadBad__AK  阅读(103)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起