Skip to content

Latest commit

 

History

History
243 lines (133 loc) · 11.8 KB

File metadata and controls

243 lines (133 loc) · 11.8 KB

PA 2007

Round 0

Plane (sam)

题意:给出$n_1,k_1,n_2,k_2$,求$n_1 \cdot k_1 + n_2 \cdot k_2$

$1 \le n_1, k_1, n_2, k_2 \le 1000$

题解:略

Round 1

Dyslexia [B] (dys)

题意:给出两个长度为$n$的字符串,问有多少个位置不同。

$1 \le n \le 10^5$

题解:略

Round 2

Conference [B] (kon)

题意:有$m$场会议,第$i$场会议的票价是$c_i$。会议需要在房间里举办,每个房间最多容纳$k$人,租一个房间的价格是$s$。现在有$l$个订票信息,第$i$个表示第$p_i$个会议新订了$r_i$张票。你可以取消一些票,问怎么才能使收益最大。

$1 \le m \le 100, 2 \le l \le 10^6, 2 \le k \le 400, 1 \le c_i \le s \le 1000$

题解:统计每场会议的人数,对$k$取模,如果余数不能产生收益,则把这些票取消掉。

Conference - Rectification [A] (ko2)

题意:同上,但是取消的话,同一个订单的票必须都取消。

题解:每场会议可以分开处理。根据题目条件,可以证明最多只需要取消$k$张票,于是可以背包出取消$x$张票是否可行,然后枚举下$x$计算收益。

Round 3

Sheets [A] (kar)

题意:有个队列一开始有$n$个数,从头到尾分别是$1$到$n$。每次从队头取出$k$个数,求个和,然后放到队尾。如果队列里不够$k$个数,会全部取出来。问第$r$次操作取出来的数的和是多少。

$1 \le n, k, r \le 10^9$

题解:考虑把队尾的数都拿出来算一轮,那么队列里面除了最后一个数,其他其实都是连续区间,维护下区间起点,个数,宽度即可。

Encyclopedia [B] (enc)

题意:有$2n$个数,其中$n$个是$0$,另外$n$个非零。每次可以交换相邻两个数,求最小步数使得$0$和非零数交替出现。

$1 \le n \le 10^6$

题解:最终位置其实定了,有两种方式,分别求逆序对数后取最小值。

Round 4

Sport Clubs [A] (klu)

题意:给出$k$个$n$维向量,找到一个长度为$n$的向量,满足是$n$的一个排列,且到这$k$个向量的距离之和最小。距离是每一维差绝对值之和。

$1 \le k \le 150, 1 \le n \le 500$

题解:裸km

Improvisation [B] (imp)

题意:实现Improvisation Algorithm

$1 \le n, m \le 10^5$

题解:略

Round 5

Video-Poker [A] (vid)

题意:$52$张扑克,从2A,每种$4$张。一开始会随机选$5$张给你,然后你可以选择若干张丢掉,然后会从剩下的牌中随机选取同样张数的牌给你。最后根据你当前手中$5$张牌决定收益。

  • Pair - 两种数字一样的牌,只有当数字为JQK或者A的时候才能获得收益。
  • Two pairs - 两个对子。
  • Three of a kind - 有三张牌数字一样。
  • Straight - 五张数字连续的牌,A可以作为最小值,也可以作为最大值,但不能同时为最大值或者最小值。
  • Flush - 五张花色一样的牌。
  • Full House - 三张数字一样的牌加上一个对子。
  • Four of a kind - 四张数字一样的牌。
  • Straight Flush - 五张数字连续且花色一样的牌
  • Royal Flush - 由10JQKA组成的Straight Flush。

现在给出每种牌的收益,问对于每一手初始的牌,最优策略下,需要换多少张牌。你需要输出换$0$,$1$,$2$,$3$,$4$和$5$张牌的方案数。

Buses [B] (aut)

题意:有$m$个公交站,从左到右标号为$1$到$m$。有$n_1$趟公交从$1$出发一直开到$m$,有$n_2$趟公交从$m$出发一直开到$1$。第$i$趟从$j$出发或者到达$j$的时间为$x_{i,j}$。你和朋友约好在$1$号公交站见面,你在$t_1$时刻到达,你的朋友会在$t_2$时刻到达。你可以在你朋友到来之前选一趟公交乘若干站,然后换另一趟公交在不超过$t_2$回到$1$号公交站。问怎样才能使你不在乘坐的时间最短,也就是花在公交站换乘公交或者等你朋友的时间最短。

$0 \le t_1 \le t_2 \le 10^9, 2 \le m \le 1000, n_1, n_2 \ge 1, m(n_1+n_2) \le 10^6, 0 \le x_{i,j} \le 10^9$

题解:枚举两趟公交就可以直接计算了。

Clouds [A] (chm)

题意:给$n$个简单多边形,保证任意两个没有公共点。问一条直线和他们最多相交次数。

$\sum n_i \le 2000, 0 \le |x|, |y| \le 10^9$

Round 6

Brackets [B] (naw)

题意:给出$n$和$k$,求字典序第$k$大的长度为$2n$的合法括号序列。

$1 \le n \le 4000, 1 \le k \le 10^{18}$

题解:预处理出$f_{x,y}$表示长度为$x$,还有$y$个未匹配的括号序列方案数,如果$x$和$y$奇偶性相同,这个其实等价于A033184的第$\frac{(x+y)}{2}+1$行,第$y+1$列;否则$f_{x,y}$为$0$。

然后从第一位开始贪心填即可。

Almost Conjugates [B] (pra)

题意:定义两个字符串conjugates当且仅当他们循环同构,两个字符串almost conjugates当且仅当他们不conjugates并且存在一个循环使得它们只有一个位置不同。

现在给出两个长度为$n$的字符串$s$和$t$,判断他们是不是almost conjugates

$1 \le n \le 10^6$

题解:扩展kmp

Cubes [A] (sze)

题意:有个边长为$n$的cube,每个面被分成了$n \times n$的小格。每个面上有些小格填上了1,保证任意两个面可以通过旋转操作使得1的填法完全一样。现在每个面你可以选择一些没有填上1的位置填上2,求本质不同的方案数,对$10^9+7$取模。两个方案一样当且仅当可以把$6$个面拆下来,通过旋转和交换面操作,使得$6$面都一样。

$1 \le n \le 1000$

题解:假设$n \times n$格子本质不同方案数是$m$,那么答案就是$\binom{m+5}{6}$。用burnside引理计算$m$即可。算出它的顺时针旋转$0^\circ$,$90^\circ$,$180^\circ$,$270^\circ$的图案,把和原本相同的图案拿出来数置换的循环个数。

Subsets [A] (pod)

题意:给出$n$,$k$和$x$,求有多少大小为$k$的${1,2,\dots,n}$的子集$P$,使得$y$和$xy$不同时属于$P$,对$m$取模。

$1 \le n \le 10^{18}, 2 \le m \le 10^6, 0 \le k \le 1000, 2 \le x \le 10$

题意:倍数关系构成了若干条链,算出长度为$l$的链的条数,然后就是做个卷积,长度一样的链可以倍增优化。

Trial Finals

ROT13 (rot)

题意:给出$n$个字符串,问有多少字符串加密得到的字符串也在里面。加密就是ROT13

$1 \le n \le 10^6$

题解:略

Finals

Barricades (bar)

题意:给出$n$个点的一棵树,对于每个$k$,求出最少需要删掉多少条边才能得到一个大小为$k$的连通子树。

$1 \le n \le 3000$

题解:$dp_{i,j}$表示以$i$为根的子树,包含$i$共选了大小为$j$的连通子树的最少删边数。用子树大小来限制背包的上界,复杂度是$O(n^2)$的。

Dyslexia (dy2)

题意:给出两个长度为$n$的字符串,求有多少位置一样。

$1 \le n \le 10^5$

题解:略

Speed Limits (ogr)

题意:有一段高速路,你从$s$位置进入,从$k$位置离开,最大速度是$v_{max}$。有$n$段限速区间,表示$[a_i,b_i]$这个区间最大速度不能超过$v_i$。如果你用速度$v$开了$x$单位,那么你的满足度会增加$vx$。现在你可以取消一个限速,求在高速路的满意度之和的最大值。

$0 \le s < k \le 10^6, 1 \le v_{max} \le 300, 1 \le n \le 10^5, 0 \le a_i < b_i \le 10^6, 1 \le v_i \le 400$

题意:按照$v$从小到大覆盖线段,用并查集维护每个位置的最小值和次小值,然后枚举每个区间,那么区间内最小值和区间限制一样的可以在这个区间删掉后产生贡献,贡献就是最小值和次小值之差的和。

Microchips (ukl)

题意:给出$n$个点$m$条边的有向图,每条边上有个权值$w$。问存在多少条有向路径,使得边上权值乘积恰好是$I$,对$k$取模。

$2 \le n \le 50, 1 \le m \le n(n-1), 1 \le I, w \le 2 \times 10^9, 2 \le k \le 10^9$

题解:$dp_{i,j}$表示到点$i$,权值乘积为$j$的方案数。考虑把边权为$1$的单独拆出来先预处理出任意两点方案数,每次计算完依次$dp_{i,j}$后,把方案数用$1$的边权传播到其他点上去。

Sunsets (zac)

题意:给出$n \times n$的格子,每个位置上有个不超过$10^9$的非负权值。给出$k$,对于每个位置,求出距离它曼哈顿距离不超过$k$的位置的权值的最大值。

$1 \le n \le 1500, 1 \le k \le n$

题解:可以分解成$4$个等腰直角三角形,然后每个等腰直角三角形又可以分解为一个正方形和两个等腰直角三角形

Inversions (inw)

题意:给出$n$和$k$,求有多少$n$的排列恰好有$k$个逆序对,对$30011$取模。

$1 \le n \le 500, 0 \le k \le \frac{n(n-1)}{2}$

题解:$dp_{i,j}$表示$1$到$i$都插入后,逆序对个数恰好为$j$的方案数。考虑枚举$i$插到哪个位置,那么有$dp_{i,j}=\sum_{k=0}^{i-1}dp_{i-1,j-k}$,拿个前缀和优化下。

Straight Lines 2 (pro)

题意:给出$n$个点的简单多边形,然后给出$m$个直线$A_ix+B_iy+C=0$,每次询问多边形内部或者边上点距离直线的最短距离。

$3 \le n \le 50000, 1 \le m \le 50000, 0 \le |x_i|, |y_i| \le 10^9, 0 \le |A_i|, |B_i|, |C_i| \le 10^9, A_i^2+B_i^2 > 0$

题解:先求出凸包,如果凸包和直线有交,那么距离就是$0$。对于一条直线,把它看成两个向量,然后再凸包上分别二分出距离这两个向量最近的一个点。如果这两个点在直线两侧,那么直线和凸包有交,否则和凸包相离。如果相离的话,枚举这两个点附近的几个点,分别求下距离,取最小值即可。