Timeline

07:50-08:20

通看了一遍题目,怎么感觉都好难,忘了海伦公式具体是什么然后考场现推近半小时(((,把 A 题 70 分暴力写了

08:20-09:10

把三题最低档暴力写了

09:20-09:40

把 C 题 4,5,6 写了

09:40-10:10

把 B 题 3,4,5 写了,开始罚坐

Result

30+50+0+4030+50+0+40

A 题海伦公式爆精度 40-40,C 题两个包各有一个错,第一个包还 nt 了 60-60,输麻了。

Summary

  1. 有时间要检查自己暴力有没有写对

  2. 坐标系求面积不要用海伦公式,以后用这个:

S=xAyByAxB+xByCyBxC+xAyCyAxC2S=\frac{|x_Ay_B-y_Ax_B+x_By_C-y_Bx_C+x_Ay_C-y_Ax_C|}{2}

Problem

T1

平面直接坐标系上给定 nn 个点,问任选三点能组成多少面积为整数的三角形

n50000n\leq 50000

Solution

由面积公式可看出只与横纵坐标奇偶性有关,统计下奇偶性情况,枚举三点横纵坐标奇偶性然后排列组合计算方案数即可。

时间复杂度 O(n)\mathcal{O}(n)

T2

n+1n+1 种无限多物品,体积分别为 0,1,,n0,1,\dots,n,价值为 wiw_i

qq 次询问,选择恰好 kk 个物品,使总体积恰好vv,最大化价值。

0k,vn2500,q3×1050\leq k,v \leq n\leq 2500,q\leq 3\times 10^5

Solution

fi,j,kf_{i,j,k} 为考虑体积为 i,,ni,\dots,n 的物品,选择了 jj 件,总体积为 kk 的最大价值,注意所有考虑过的东西体积至少为 ii

fi,j,k=maxfi+1,j1,ki+wijnif_{i,j,k}=\max f_{i+1,j-1,k-i}+w_i\leftarrow j\leq \frac{n}{i}

第一维只和 i+1i+1 维有关,故省去一维。

体积为 00 的物品怎么办?设初值为 fi,0=i×w0f_{i,0}=i\times w_0,且转移后再特别转移一次:

fj,k=maxfj,k1+w0f_{j,k}=\max f_{j,k-1}+w_0

时间复杂度 O(n2logn+q)\mathcal{O}(n^2\log n+q)

T3

有长度为 nn 的序列 aima_i\leq m,有 qq 条信息,有以下种类:

  1. 某些数的最小值 [l,r]\in [l,r]

  2. 某些数的最大值 [l,r]\in [l,r]

i=1nai\sum_{i=1}^{n} a_i 的最小可能值和最大可能值。

n8,q500n\leq 8,q\leq 500

Solution

枚举排列 pip_i,设 xpixpi+1x_{p_i}\leq x_{p_{i+1}},由 qq 条信息得到每个数的取值范围 [li,ri][l_i,r_i],因为 xpixpi+1x_{p_i}\leq x_{p_{i+1}},有 lpilpi+1l_{p_i}\leq l_{p_{i+1}}rpirpi+1r_{p_i}\leq r_{p_{i+1}},枚举子集即可得到一组解。

时间复杂度 O(n!2n)\mathcal{O}(n!2^n)

T4

给定 nn 个数对 (pi,vi)(p_i,v_i) 及整数 kk,对于每个长度为 kk 的区间 [i,i+k1][i,i+k-1],求出不考虑该区间时 pip_i 不下降子序列中 vi\sum v_i 的最大值。

n105n\leq 10^5

Solution

fif_i 为考虑 [1,i][1,i] 且选 iivi\sum v_i 的最大值,gig_i 为考虑 [i,n][i,n] 且选 iivi\sum v_i 的最大值,然后用线段树优化,需要删除时仅需将对应点的值改成极小值即可。

时间复杂度 O(nlogn)\mathcal{O}(n\log n)