今天比赛真 TM ^{ \text{TM}} TM难,我比赛时接近弃疗 . . . . . . ...... ......
Total Mark:0+20+0+0=20( \text{Total Mark:0+20+0+0=20(} Total Mark:0+20+0+0=20(我了个(和谐),我了个大(和谐),我(和谐)了个大(和谐) ) ) )
【 T1 \text{T1} T1】比赛时便想出正解,因为总的比例就是局部比例,而题目有要求最多能分成几段,所以我们拿两个东西分别累加黑和白的个数,一满足总比例就可以 + + a n s ++ans ++ans了。
PS:
\text{PS:}
PS:我比赛时怕炸
long long
\text{long long}
long long,还特地打了个质数表准备约分,那样的话时间复杂度上限是
Θ
(
N
l
e
n
2
)
\Theta(N\sqrt {\frac{len}{2}})
Θ(N2len),
l
e
n
len
len是序列总长度,最后约等于
Θ
(
250000000
)
\Theta(250000000)
Θ(250000000),卡一下常数再吸一点氧 应该可以过,而且这是上界,远远跑不到。最后发现你开
long long
\text{long long}
long long的话再乘
1
0
9
10^9
109也不会炸,所以根本不需要约分。我比赛爆零的原因是没有判有一中颜色没有的情况,强烈谴责无良出题人每个数据出多组!!!
【
T2
\text{T2}
T2】这道题应该可以暴力满分的,支持随机数据!!!
首先说一下
20
20
20分解法:设
f
i
f_{i}
fi表示核融前
i
i
i个原子所需要的总代价,易得转移方程:
if (check(j+1,i)) f[i]=max(f[i],f[j]+MAX(j+1,i))
\text{if (check(j+1,i)) f[i]=max(f[i],f[j]+MAX(j+1,i))}
if (check(j+1,i)) f[i]=max(f[i],f[j]+MAX(j+1,i))
check(x,y)
\text{check(x,y)}
check(x,y)表示判断
x
x
x到
y
y
y之间有没有拥有相同质量质子的原子,
MAX(x,y)
\text{MAX(x,y)}
MAX(x,y)表示
x
x
x到
y
y
y当中最大的中子数量。时间复杂度
Θ
(
N
3
)
\Theta(N^3)
Θ(N3)
40 40 40分解法就是把 j j j从 i − 1 i-1 i−1到 0 0 0跑一遍,如果判断不满足就直接 break \text{break} break。
满分解法还要运用数据结构和分治思想。
【 T3 \text{T3} T3】“显然”三分,或者找规律,把题目给的数全部塞进一个数组里排一下序,输出中间两个即可。
【 T4 \text{T4} T4】只需要先用差分约束系统,再用 Floyd \text{Floyd} Floyd,最后跑一遍 Shortest Path Faster Algorithm \text{Shortest Path Faster Algorithm} Shortest Path Faster Algorithm即可。
明天继续加油!!!