【学习笔记】ABC265/AGC012

ABC265

Manhattan Cafe

d p i [ j ] [ k ] dp_i[j][k] dpi[j][k]表示考虑前 i i i维,其中 D 1 − D 2 = j D1-D2=j D1D2=j, D 1 + D 2 = k D1+D2=k D1+D2=k的方案数

d = ∣ p i − q i ∣ d=|p_i-q_i| d=piqi,转移如下:

1.1 1.1 1.1 p i ≤ x ≤ q i p_i\le x\le q_i pixqi d p i − 1 [ j ] [ k ] → d p i [ j − d ] [ k + d ] ∼ d p i [ j + d ] [ k + d ] dp_{i-1}[j][k]\to dp_i[j-d][k+d]\sim dp_i[j+d][k+d] dpi1[j][k]dpi[jd][k+d]dpi[j+d][k+d]

1.2 1.2 1.2 x < p i ≤ q i x<p_i\le q_i x<piqi d p i − 1 [ j ] [ k ] → d p i [ j − d ] [ k + d + 2 + 2 y ] dp_{i-1}[j][k]\to dp_i[j-d][k+d+2+2y] dpi1[j][k]dpi[jd][k+d+2+2y]

1.3 1.3 1.3 p i ≤ q i < x p_i\le q_i<x piqi<x d p i − 1 [ j ] [ k ] → d p i [ j + d ] [ k + d + 2 + 2 y ] dp_{i-1}[j][k]\to dp_i[j+d][k+d+2+2y] dpi1[j][k]dpi[j+d][k+d+2+2y]

注意到转移其中一维是定值,可以维护其差分序列,做到转移 O ( 1 ) O(1) O(1),总复杂度 O ( n d 2 ) O(nd^2) O(nd2)

AC Code

012 Inversion

sb数据结构

相信大家都会吧

AC Code

AGC012

Colorful Balls

若原序列中位置 i i i和位置 j j j能交换那么连一条边 ( i , j ) (i,j) (i,j)

显然同一连通块内可以任意排列 并不显然 ,因为不在同一连通块可以看作是独立的,对于同一连通块可以归纳法证明。

并查集维护连通性即可。

Tautonym Puzzle

考察序列前半部分是 1 ∼ n 1\sim n 1n的排列 p p p,后半部分是 1 ∼ n 1\sim n 1n

问题转化为左边上升子序列的数目。设空串合法,考虑从末尾插入一个数那么数目乘 2 2 2,从开头插入一个数那么数目加 1 1 1。最终序列长度为 4 log ⁡ n 4\log n 4logn

AC Code

Splatter Painting

简单题。倒序操作,记录从每个点出发能扩散的最远距离,显然是递增的,复杂度 O ( m d ) O(md) O(md)

AtCoder Group Contest

简单题。显然从大到小排序,然后隔一个位置选一个即可。

Camel and Oases

我会转化!!

问题转化为把原序列划分成若干区间,区间内相邻距离不超过 V 2 i \frac{V}{2^i} 2iV

然后就比较简单了。

Prefix Median

dp神题啊。

考虑逆序构造。每次删除两个数后中位数会不动或移动到相邻位置,因此合法的 b b b序列应该满足:
1.1 1.1 1.1对于任意 i ∈ [ 1 , n − 1 ] i\in [1,n-1] i[1,n1],不存在 j < i j<i j<i满足 b i < b j < b i + 1 b_i<b_j<b_{i+1} bi<bj<bi+1 b i + 1 < b j < b i b_{i+1}<b_j<b_i bi+1<bj<bi
1.2 1.2 1.2对于任意 i ∈ [ 1 , n ] i\in [1,n] i[1,n],满足 b i ∈ [ i + 1 , 2 n + 1 − i ] b_i\in [i+1,2n+1-i] bi[i+1,2n+1i]

首先对于连续的 a i a_i ai只保留离中位数最近的那一个。

考虑从当前位置向左挪或向右挪时把跨过的全部删掉,不能作为后续选择,并且其限定的区间每次会向左和向右扩展一位,那么我们设 d p [ i ] [ L ] [ R ] dp[i][L][R] dp[i][L][R]表示填了 i ∼ n i\sim n in,当前位置左边有 L L L个可以选择,右边有 R R R个可以选择的方案数。转移时枚举往哪边跳,复杂度 O ( n 4 ) O(n^4) O(n4)

AC Code

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值