3.17爆零赛

前言

好久没考过试了,居然考这么挫qwq。。。

T1 water

题目描述

给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b。

中位数是指把所有元素从小到大排列后,位于中间的数。(来源:[CQOI2009]中位数)

【数据规模】

对于30%的数据中,满足n≤100;

对于60%的数据中,满足n≤1000;

对于100%的数据中,满足n≤100000,1≤b≤n。

考试分析

emmm....不是说好第一题是水题吗?我觉得再怎么模拟也只有O(n^2)啊!

肯定TM又是一道找规律题..............推了1h居然没退出来,wc,果断60分滚粗

正解

(ps:思路来自lsq大佬)

  1. 首先开一个sum[]数组、一个变量q,线性扫一遍,
    如果a[i]>b,则++q;如果a[i]<b,则--q;如果找到了b,就用pos将其位置记录下来

    扫描二维码关注公众号,回复: 5636447 查看本文章

    接着令sum[i]=q(sum[i]表示从i+1开始匹配还差sum[i]个比b小的数 )

Code

T2 str

T3 tree

猜你喜欢

转载自www.cnblogs.com/p-z-y/p/10587126.html