10.1日NOIP模拟赛

这篇博客介绍了NOIP模拟赛中的三道题目,包括最接近神的人(涉及序列排序问题)、过路费(求城市间最低费用路径)和上课问题(优化做作业的数量)。提供了解题思路和部分核心程序,如T1的逆序对解法,T2的Floyd和SPFA算法,以及T3的动态规划策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

十月一日国庆狂欢!!题目大放送!

T1:最接近神的人

题目:

【问题描述】
因小CC平时不遵守规矩,被伟大的石老师下了符文之语,为了破解了符文之语,小CC不小心开启了通往地下的道路,当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案。而石门上方用古代文写着“神的殿堂”。小CC猜想里面应该就有王室的遗产了。但现在的问题是如何打开这扇门……。
仔细研究后,他发现门上的图案大概是说:古代人认为只有智者才是最接近神明的。而最聪明的人往往通过一种仪式选拔出来。仪式大概是指,即将隐退的智者为他的候选人写下一串无序的数字,并让他们进行一种操作,即交换序列中相邻的两个元素。而用最少的交换次数使原序列变成不下降序列的人即是下一任智者。
小CC发现门上同样有着n个数字。于是他认为打开这扇门的秘诀就是找到让这个序列变成不下降序列所需要的最小交换次数,但小CC不会……只好又找到了你,并答应事成之后与你三七分……。

【文件输入】
第一行为一个整数N,表示序列的长度
第二行为n个整数,表示序列中每个元素

【文件输出】
一个整数ans,即最少操作次数。

【样例输入】
4
2 8 0 3

【样例输出】
3

【样例说明】
开始序列为2 8 0 3,目标序列为0 2 3 8,可以进行三次操作的目标序列:
step1:swap(8,0):2 0 8 3
step2:swap(2,0):0 2 8 3
step3:swap(8,3):0 2 3 8
【数据规模】
30%的数据满足1≤n≤10^4;
100%的数据满足1≤n≤5*10^5。

-maxlong≤A[i] ≤maxlong;

T2:过路费

题目:

【问题描述】
有一天你来到了一个奇怪的国家,它有N个城市,城市之间有若干条双向道路连接,每条道路都有一定的费用,经过城市也要一定的费用。从一个城市到达另一个城市的总花费为路径上费用最大的城市费用(包括起点和终点)加上路径上所有的道路的费用。给出Q次询问,分别回答每次询问中两城市间的最少花费。保证城市之间可以互达。
【输入格式】
第一行两个整数N,M,表示有N个城市M条道路。
接下来N行每行一个整数,表示城市的费用ci。
接下来M行每行三个整数,x,y,z,表示城市x和城市y间有一条费用为z的道路。
接下来一行一个整数Q,表示询问次数。
接下来Q行每行两个整数x,y(x不等于y),表示询问从城市x到城市y的最小花费。
【输出格式】
共Q行每行一个整数,第i行的整数表示第i次询问的答案。
【样例输入】
3 3
1
3
2
1 2 1
2 3 1
1 3 3
2
1 3
1 3
【样例输出】
5
5
【数据规模】
对于30%的数据,N<=10,M<=20,Q<=5。
对于60%的数据,N<=200,M<=4000,Q<=100。
对于100%的数据,N<=300,M<=40000,Q<=100000,1<=ci<=100000,1<=z<=1000。

T3 上课

题目:

【问题描述】
学校里有许多节课,第i节课从ti时刻开始上,上课的时间为si,如果上了第i节课,你的做题能力将变成ci(是能力的数值,不是能力的增长值)。有N类作业,每类作业数量不限,每类作业完成一份所需要的时间为ai,做某类作业需要的做题能力达到qi(>=qi)才能完成。在每个时刻你可以选择上课、休息、做作业,如果选择上课则必须上完整节课,如果选择做作业必须花完整的ai时间做,同一时刻只能上一节课或做一份作业。而且人的精力有限,在T时刻后必须停止学习(部分课可能上到T时刻后)。求在时限内最多可以完成几份作业。在刚开始时,你的做题能力为1,时刻为1。
【输入格式】
第一行三个整数T,M,N,表示总时间,有M节课,有N类作业。
接下来M行每行三个整数ti,si,ci。
接下来N行每行两个整数ai,qi。
【输出格式】
共一行,一个整数ans,表示时限内最多可以完成几份作业。
【输入样例】
10 1 2
3 2 5
4 1
1 3
【输出样例】
6
【数据规模】
20%的数据满足M,N<=4,T<=15。
50%的数据满足M<=100,N<=1000,T<=1000。
100%的数据满足M<=1000,N<=100000,T<=100000,1<=ci<=100,1<=ai、ti<=T,1<=qi<=100。

T1解法:(水题)

核心程序:无

逆序对O(nlogn)归并排序。(具体做法参照其他博客)

T2解法:(做过,不水)

解法一:Floyd(n^3)N<=300
这题最主要的是要将city的位置排序,用sort的话得用一个很玄妙的make_pair或者用struct结构体,再存其排序后的位置与实际位置,存了后就Floyd跑一遍就可以了。(但是这也很玄学)

解法二:SPFA O(knm)较慢,大数据跑了0.6s
对于一个有两个条件的题目,我们可以从1到n分别枚举节点,使其为最大点,再SPFA找寻路径,加入到ans[][]里:

核心程序:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值