2019 Multi-University Training Contest 1

本文介绍了2019年一场多校联合编程竞赛的题目及解题思路,涵盖了包括Blank、Operation、Vacation、Path、Typewriter、Meteor、String等在内的多个题目,涉及动态规划、线段树、网络流、最短路等多种算法。

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

多校第一场,爆0自闭,真好玩

1001 Blank

题意

n(n≤100)n (n \le 100)n(n100)个位置,每个位置可以填0,1,2,3{0,1,2,3}0,1,2,3四种数字,有m(m≤100)m (m\le 100)m(m100)个限制。问有多少种满足所有限制的方案。

题解

设置状态DP[i][j][k][t]DP[i][j][k][t]DP[i][j][k][t]表示四种数字最后出现在 i,j,k,ti,j,k,ti,j,k,t 四个位置,转移时保持这四个位置位置有序,因为for i = 1 to n 循环时 t=it = it=i ,所以只开前三维空间并采用滚动的方式转移。时间复杂度O(n4)O(n^4)O(n4),空间复杂度O(n3)O(n^3)O(n3)

1002 Operation

题意

初始数组有n (1≤n≤5×105)n\ (1\le n\le5\times 10^5)n (1n5×105)个数字,一共有m (1≤m≤5×105)m\ (1\le m\le 5\times 10^5)m (1m5×105)次询问。
第一种询问会在数组后添加一个数字。
第二种询问一个区间,求出该区间内选出一些数字后,它们的异或和最大。

题解

利用线段树贪心维护线性基(这些中文字我完全不懂,学会了再补)

1004 Vacation

题意

n (1≤n≤5×105)n\ (1\le n\le5\times 10^5)n (1n5×105)辆车排成一列,每辆车都有一个离红绿灯线的初始距离,初始速度和自身车长。
如果后面的车撞上前面的车尾,那么后面的车会立即减速到前面的车的速度。通过红绿灯线的车依旧存在。
求最后一辆车通过红绿灯线的时间。

题解

思路一:维护车辆的s−ts-tst图或v−tv-tvt图,从前到后,每辆车可以二分出它在什么时候撞上前面的车。总复杂度O(nlog(n))O(nlog(n))O(nlog(n))
思路二:枚举最后一辆车通过红绿灯线的时候,它的车速降到之前了哪一辆车的速度,后者可以O(1)O(1)O(1)算出,总复杂度O(n)O(n)O(n)

1005 Path

题意

给定一个n (1≤n≤1×104)n\ (1\le n\le1\times 10^4)n (1n1×104)个点,m (1≤m≤1×104)m\ (1\le m\le1\times 10^4)m (1m1×104)条边的有向图,删掉一条边的代价为边权,要求以尽可能少的总代价删掉一些边。使得最短路的长度增长或不可达。

题解

先做出最短路图,当这张图起点和终点不连通时,将不再存在一条原来长度的最短路。
跑最短路这题SPFA不被卡。
分析到这就是显然是最小割了。
网络流中Dinic最大退化为O(n2m)O(n^2m)O(n2m),这题算是勉强通过,没有当前弧优化或者说是不优秀的网络流板子通过不了。

1006 Typewriter

题意

初始状态为空串,你可以往当前串的结尾添加单个任意字符,代价为ppp,或往当前串的结尾添加一个当前串的字串,代价为qqq。给出一个长度为n (1≤n≤1×105)n\ (1\le n\le1\times 10^5)n (1n1×105)的目标串,求构造出目标串的最小花费。

题解

用后缀自动机做。(后缀自动机不会,以后补)

1007 Meteor

题意

题意为求分子分母均小于等于某个值 n 的第 k 大的最简分数。

题解

看不懂题解,数学太差,有缘再补

1009 String

题意

给出一个长度为n (1≤n≤1×105)n\ (1\le n\le1\times 10^5)n (1n1×105)仅有小写字母的字符串,要求构造出一个长度为K (K≤n)K\ (K\le n)K (Kn)的子序列。子序列中每个字符出现的次数必须在区间[Li,Ri][L_i,R_i][Li,Ri]内,求能够造出的字典序最小的合法子序列。

题解

逐个字符贪心构造,优先构造字典序最小的。可以设置一个指针表示当前构造好的字符串在原串中至少要用到前多少位字符,再判断之后的字符数量能否满足约束的条件即可。

1013 Code

凸包题,先放着。

补题

  • 1001
  • 1002
  • 1004
  • 1005
  • 1006
  • 1007
  • 1009
  • 1013

读题

1003
1008
1010
1011
1012

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值