当前位置: 首页 > news >正文

CSP-S2025复赛模拟4补题报告(无AC code)

一、比赛分数

T1、智能公交:[100/100]

T2、暴力操作:[0/100]

T3、competition:[0/100]

T4、货物运输:[0/100]

(知足了孩子们,和wyh一样了)

二、题目正解

1、智能公交

题目重现:

马路上总共有n个公交站台,编号1,2,\dots ,n,有一辆智能公交车会在这n各占太之间穿梭。

如果智能公交车上没有乘客,只需要按动公交站台上的按钮,智能公交就会很快到达相应的站台。

例如,有人想从第五个公交站台到第十个公交站台,那么公交车会先从第x

个站台跑到第五个站台,然后再从第五个站台跑到第十个站台,然后再回到第 x站台停下。(智能公交可以随意的双向移动,不需要考虑智能公交是否掉头转弯等因素)假设相邻的两个站台的距离都是1千米,那么智能公交总共行走了\left | x-5 \right |+\left | 5-10 \right |+\left | 10-x \right |的距离。

现在有m个人要依次乘坐智能公交,每个人都会等待智能公交停在x站台之后在按动当前站台按钮准备乘坐公交。现在已知第i个人都是从a站台到b站台。请你计算x,使得智能公交移动距离最短。最终输出x和最短的距离,x若有多个,输出最小的一个。

输入格式

输入第一行,包含两个整数n,m

然后输入m行,每行给定两个数字a_i,b_i(a_i\leq b_i),表示当前第i人要从a_i站台到b_i站台。

输出格式

输出一行包含两个整数,第一个数字表示公交停靠的位置x,第二个数字表示最短距离。

思路(我的):

把所有a_i ,b_i扔到一个数组里,找到中位数(这里不是严格意义上的中位数,这里指的是构成中位数的两个数字中小的那一个),输出其站台号,再O(n)算出时间,累加输出即可。

Teacher:

公交车从站台a到站台b,且停靠位置xab之间,那么移动距离为:

\left| x-a\right|+\left| a-b\right|+\left| b-x\right| =2\times \left| a-b\right|

若停靠位置在a-1,则公交车要多移动2距离。若停靠位置在a-2,则公交车要多移动4距离。我们可以发现,停靠位置从a- 11,公交车多移动的距离呈公差为2的等差数列。

我们可以假设f[x]表示公交车停靠在x的总移动距离,那么给定a,b的时候,相当于将整个数组全部加2*\left| a-b\right|,并且将a-11的位置额外加一个公差为2的等差数列;同理,将b+1n的位置加一个公差为2的等差数列。

考虑用差分来维护区间加法,等差数列加法。

2、暴力操作

题目重现:

有一个长为n的序列\{a_i\},你可以选择一个i,每次操作花费c_j的代价使得a_i\leftarrow \lfloor \frac{a_i}{j}\rfloor。可以多次选择同一个i。你总共有k元。问最终序列的中位数最小是多少。保证n为奇数,1\leq a_i\leq m

输入格式

第一行三个正整数n,m,K

第二行共n个数,第i个数表示a_i

第三行共m个数,第j个数表示c_j

输出格式

一行一个整数表示答案。

思路:

一定会将最小的\lfloor \frac{n}{2}\rfloor个变小,将c_i修补为c_{i-1}\leq c_i,c_{ij}\leq c_{ic_j}的形式,再二分答案即可解决。复杂度O(n\log n+m\log m)

3、competition

题目重现:

现在有一个题目数量为m的比赛,有一个团队想要来参加。

这个团队有n位选手,编号为i的选手能做出来第l_i \sim r_i道题,每一道题他都有100\%的概率能做出来。

这个团队会随机派出一支队伍来参加这个比赛。

因为编号相邻的人关系更好,默契度也更高,所以说一个团队派出的队伍一直都是编号为连续的区间的选手。

一个队伍的得分为该队伍能做出的题的数量。

求这个团队参加比赛的期望得分。

注:一道题只能被做出来一次

输入格式

第一行为两个整数n,m表示选手人数和比赛题数。

2\sim n+1行,每行有2个整数l_i ,r_i表示编号为i的人会做第l_i\sim r_i道题。

输出格式

一行一个整数,为该团队参加比赛的期望得分(对10^9+7取模)

思路:

如果题目能做很多次那么答案就是

\sum _{i=1}^n (r_i-l_i+1)\times i\times (n-i+1)

我们令pre_{i,j}表示第i个人前面的最靠右的能做出题目j的人的编号。

可以发现,多出的答案就是每个队伍重复AC的次数之和

显然ipre_{i,j}在做第j道题时会重复,多出的方案数为pre_{i,j}\times (n-i+1)

然后我们用区间赋值+区间求和线段树维护随着i变化的pre数组即可

对于一道题,我们让每个组第一个做出来的人做贡献即可。

对于i在第j道题目的贡献即为(i-pre_{i,j})\times (n-i+1)

同样用线段树维护。

对于每一道题目,考虑用set维护哪些人能做这道题,并同时维护有多少区间不能做出贡献。

我们考虑设不能做出贡献的人的连续区间分别是len_1,len_2\dots ,len_n,显然不能做出贡献的区间数量是\sum (^{len_i}_2)

我们加入一个人,显然会让原本的非连续区间断开,变成两个

删除一个人,会让两个区间合为一个

因此,我们不能贡献的区间数量便可以动态维护了。

4、货物运输

题目重现:

K 国有 n 座城市,被 m 条双向道路连接,道路的长度为 w_i​,并且任意一条道路最多在一个简单环内。每一座城市都有 s_i 个单位的资源,为了均衡城市的发展,K 国的国王希望均分这 \sum s_i 的资源,即让每座城市的资源数等于 \frac{\sum s_i}{n}(数据保证 \sum s_i​ 是 n 的倍数)。已知将每单位的资源运输到相邻城市需要花费道路长度 w_i 的代价。

​ 求使得资源均分的最小代价。

输入格式

第一行两个整数 n,m,表示城市的数量和道路的数量。

​ 第二行输入 n个整数 s_i,表示城市i 的资源数量。

​ 接下来 m 行,每行三个整数 u_i,v_i,w_i,表示双向道路。

输出格式

​ 一个整数,表示运输资源使得均分所需的最小花费。

思路:

Ⅰ、树做法

m=n-1时,图就为一棵树。令a_i=s_i-\frac{\sum s_i}{n},最终要令a_i=0

通过树形DP,从叶子开始往上转移,产生的代价为当前节点的\left| a_i\right |与道路长度的乘积。

a_{fa}+=a_u

ans+=w_i\times \left | a_u\right |

Ⅱ、环的做法

考虑原图为环的做法,令a_i=s_i-\frac{\sum s_i}{n},最终要令a_i=0

不妨设环上的节点编号为1,2,3,\dots ,n

x_i表示ii-1运输的资源数量,当x_i<0时表示i-1i运输。

可列出方程

a_1-x_1+x_2=0

a_2-x_2+x_3=0

\dots

a_{n-1}-x_{n-1}+x_n=0

a_n-x_n+x_1=0

故有

x_2=x_1-a_1

x_3=x_2-a_2=x_1-a_1-a_2

\dots

因此可以将x_ix_1表示,:x_i=x_1-X_i,最后的答案为\sum w_i \left| x_i\right |=\sum w_i\left| x_1-X_i\right |

现在问题转化为求出x_1的值,使得\sum w_i\left | x_1-X_i\right|最小。对于w_i=1的情况,x_1直接取X_i的中位数类似地,对于w_i没有限制的情况,可以看作有w_iX_i,取\sum w_i个数的中位数。复杂度为排序的O(n\log n)

Ⅲ、基环树的做法

基环树就是在树中添加一条边,可以看作是一个环上挂着若干棵树。

对于环上的树,采用树上的做法,将除了根以外的a_i变为0.

这样就将原图变成了环,使用方法Ⅱ求解,再加上树上的答案即可。

Ⅳ、仙人掌图的做法

发现边最多在一个简单环内,满足仙人掌图的性质,搜索的时候将环处理出来计算贡献并转移,非环边用类似树上DP的方式向上转移。

三、赛后总结

这次还行马,起码T1过掉了,后面的题等以后练练线段树之类的数据结构&算法再看看吧,总之这是一个好的开始,也算是最后一天的小惊喜,以后继续加油!

http://www.dtcms.com/a/441816.html

相关文章:

  • 什么是Agent及其在人工智能中的角色
  • 爱授权系统V3.0免授权版 支持插件和插件商城
  • MySQL 本机压测分析
  • 华清远见25072班C++学习假期10.4作业
  • 建网站学什么软件全国医院的网站建设
  • 【深度学习计算机视觉】09:语义分割和数据集——应用场景与前沿探索
  • 【LeetCode热题100】No.1——两数之和(Java)
  • 系分论文《论边缘计算在工业质检系统中的分析与设计》
  • 利用 ArcMap 的 MXD 布局视图以及ArcPy 脚本实现批量自动生成油井点之记并导出 PDF(实操+亲测)
  • 计算机工作原理(简单介绍)
  • 自己如何建设网站聊天室做医药代表去什么招聘网站
  • 指针和数组解析
  • 【AI4S】3DSMILES-GPT:基于词元化语言模型的3D分子生成
  • Transformer推理优化全景:从模型架构到硬件底层的深度解析
  • MySQL 索引全解析:结构、优化与索引下推实战指南​
  • clear configuration interface概念及题目
  • 设计模式(C++)详解——策略模式(1)
  • 基于html5设计的网站建设做一些购物网站
  • Vivado综合通关指南:从IP打包失败到工具崩溃的四重考验
  • 语义分割概述
  • 数据结构之排序算法
  • 绍兴网站建设优化手机企业网站建设开发
  • 偏导数解释
  • Linux内核与设备管理:USB存储驱动usb_storage/uas的安全卸载与复原
  • fallocate: fallocate failed: Text file busy
  • visio实现扇形图绘制的方式方法-以三等分扇形为例
  • 以太坊私有链搭建与智能合约部署指南
  • 网站开发 教学大纲网页设计图片与图片的位置
  • python+flask_socketio+pyautogui实现简易远程桌面功能
  • flask_socketio+pyautogui实现的具有加密传输功能的极简远程桌面