20241013 洛谷SCP模拟

20241013 洛谷SCP模拟

J1. 带余除法

急眼了,J 组 T1 做不出来。经 cyq 大神指点。

考虑将题中给出的带余除法转化:n=kq+r,移项得到 r=nkq

这里 n,k 都是定值,于是对于每一个 q,都有唯一的一个 r 与之对应。考虑余数的性质:

0r=nkq<q

解不等式得到 nk+1<qnk。容易发现这个范围内的所有整数都可以取到,于是答案为 nknk+1

J2. 奖牌排序

急眼了,J 组 T2 做不出来。经 cyq 大神指点。

对于每个人,有三种排序方式取最优。

那么对某种方式考虑,我们先对这一维排序,接着对每个人更新答案。考虑每个人在这种方式下的最高排名怎么算,发现其实就是这一维比他小的人的个数加一,于是可以二分求解。

J4. 配对序列

cyq 大神说这题代码很简单并且是 O(n) 的,可是我只会无脑数据结构,破防。

考虑一个朴素的 dp。设 fi,0/1 表示选第 i 个位置,且这个位置是相邻数对中的第 1/2 个数,最长序列的长度。转移枚举上一个选的位置 j,那么若 aj=ai,则 fj,0 可以转移到 fi,1;否则 fj,1 可以转移到 fi,0

对于第一种转移,我们记录 gi 表示所有满足 aj=ij 中,fj,0 的最大值,这样就能 O(1) 转移了。对于第二种转移,我们开一颗权值线段树,记录 fj,1 的最大值,转移时只要查询区间 [1,ai)(ai,V] 即可。O(nlogV)

这题 n,V 同阶,V 开大时加个离散化就行了。所以时间复杂度是 O(nlogn) 的。

S1. 商店砍价

这题绝对比 J 组 T1T2 都简单。

注意到 v 只有 105,那么容易看出,第二种操作进行时,剩余数的位数一定不超过 5。于是容易想到枚举进行第二种操作时的 n 并计算贡献,注意这里枚举的数一定是原数的子序列,子序列自动机判一下即可。

cyq 大神说我绝对是非正解。又被 D 了。

posted @   陆羽扬  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示