2019杭电多校训练营(第二场)

RankSolvedABCDEFGHIJkL
26/9297/12.O..OØ.OOOOO

O: 当场通过

Ø: 赛后通过

.: 尚未通过

A Another Chess Problem

unsolved


B Beauty Of Unimodal Sequence

solved by chelly&viscaria


chelly’s solution

从后往前依次求出 d p [ i ] [ 0 ] dp[i][0] dp[i][0]表示以 i i i开头的"“形状序列的长度, d p [ i ] [ 1 ] dp[i][1] dp[i][1]表示以 i i i开头的”^"形状序列的长度。
然后就可以贪心去依次确定每个位置的方式得到最小字典序方案和最大字典序方案。
时间复杂度 O ( n l o g n ) O(nlogn) O(nlogn)

C Coefficient

unsolved


D Double Tree

unsovled


E Everything Is Generated In Equal Probability

solved by viscaria&Feynman1999


Feynman1999’s solution

F Fantastic Magic Cube

upsolved by chelly


chelly’s solution

结果是定值,所以考虑如何算出贡献即可。设 f [ x ] f[x] f[x]表示权值为 x x x的点的个数,那么如果知道了 f [ ] f[] f[],答案就能很容易算出来。可以通过 F W T FWT FWT f [ ] f[] f[]

G Game

unsolved


H Harmonious Army

solved by chelly


chelly’s solution

经典最小割套路题。

I I Love Palindrome String

solved by chelly


chelly’s solution

本质不同的回文子串个数是 O ( n ) O(n) O(n)的。判断一个回文串是否是good string可以通过字符串哈希在 O ( 1 ) O(1) O(1)的时间内解决。所以问题就变成了求出所有的本质不同的回文子串以及它出现的次数,建一个回文树即可。

时间复杂度 O ( n ) O(n) O(n)

upsolved by chelly


chelly’s solution

将字符串reverse一下,一个长度为 p p p回文串是合法的当且仅当他拥有长度为 ( p + 1 ) / 2 (p+1)/2 (p+1)/2的回文后缀。建立出回文自动机,根据 f a i l fail fail指针建立 f a i l fail fail树,在树上 d f s dfs dfs即可。

J Just Skip The Problem

solved by viscaria


viscaria’s solution

K Keen On Everything But Triangle

solved by viscaria&chelly


chelly’s solution

用主席树求出区间前50大的数字,然后暴力枚举即可。
时间复杂度 O ( 50 n l o g n ) O(50nlogn) O(50nlogn)

L Longest Subarray

solved by chelly


chelly’s solution

考虑从小到大枚举 j j j作为区间右端点,计算最远的一个 i i i,使得 [ i , j ] [i,j] [i,j]是以 j j j为右端点的最长区间。
对于之前出现的每个数字,一定对应一个区间 [ l , r ] [l,r] [l,r],即 i i i不能出现在这个区间内。于是我们可以用一个线段树来维护,一开始每个位置都是0,对于不合法的区间 [ l , r ] [l,r] [l,r],我们只需要给 [ l , r ] [l,r] [l,r]都加上 1 1 1。对于询问就是查询最左边的 0 0 0的位置,这样只需要维护区间 m i n min min即可。

时间复杂度 O ( n l o g n ) O(nlogn) O(nlogn)

Dirty Replay

  • K题:在主席树上取前k大的数字的时候,没有考虑到一个数字出现多次的情况。
  • E题:数组开小了,WA了一发。
  • I题:回文树板子中,应该是-‘a’,而不是-‘0’
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值