美文网首页
51nod 1682 中位数计数

51nod 1682 中位数计数

作者: 无令便逐风 | 来源:发表于2018-08-13 15:27 被阅读0次

题目链接戳这里
题意很清晰。输入为A[],想象一个数组C,以A[i]为基准,若A[j]<A[i]则C[j]为-1,大于为1,等于为0,其中j属于[1,N]。假想有2个数组pre和tail。其中pre[j]是对元素C[j...i]的求和,tail[j]是对元素C[i..j]的求和。
若某一个区间A[s...e]中,排序后A[i]是这个区间的中位数,那么应该有pre[s]+tail[e]=0,其中i属于[s,e]。这个意思可以理解为:若某个数A[i]是区间[s,e]的中位数,那么A[i]的左侧和右侧小于or大于A[i]的数字数量是对称的。

写程序的时候,统计A[i]左侧前缀和,对这些和进行标记,若后缀和中有相同的,说明对称。

#include <bits/stdc++.h>
using namespace std;

const int maxN=8e3+5;
int N, A[maxN], vis[maxN * 2], sum[maxN];

int main() {
    scanf("%d", &N);
    for (int i = 1; i <= N; ++i)
        scanf("%d", &A[i]);

    for (int i = 1; i <= N; ++i) {
        sum[i] = 0;
        memset(vis, 0, sizeof vis);
        vis[N] = 1;
        for (int j = i - 1; j >= 1; --j) {
            int cmp = A[j] < A[i] ? -1
                : A[j] == A[i] ? 0 : 1;
            sum[j] = sum[j + 1] + cmp;
            ++vis[N + sum[j]];
        }

        int ans = vis[N];
        for (int j = i + 1; j <= N; ++j) {
            int cmp = A[j] < A[i] ? -1
                : A[j] == A[i] ? 0 : 1;
            sum[j] = sum[j - 1] + cmp;
            ans += vis[N - sum[j]];
        }
        printf("%d ", ans);
    }
    return 0;
}

相关文章

  • 51nod 1682 中位数计数

    题目链接戳这里题意很清晰。输入为A[],想象一个数组C,以A[i]为基准,若A[j]

  • 1682

    全新的数据,又将载入阿里的史册,只差一点点,就是1688。 全新的数字记录的背后,有成千上万的阿里人,成千上万的快...

  • 1682

    2021.11.07 星期日 晴转小雨 今早起来天气还不错,也没降温嘛,结果中午开始阴天、刮风、下雨了...

  • 上帝宠溺黑人【05】笨鸟应该多飞

    【05】笨鸟应该多飞 根据Statista网站2018年的统计数据,2016年亚裔美国人家庭收入中位数为81431...

  • 数据诊断常见指标

    均值/中位数/最大值/最小值等常规指标 计数类,如0值,1值,-1值等 缺失值/方差,方差为零,说明该特征没有区分...

  • 瑞德学习R语言day06

    基本统计数值 查看键值情况 平均数和中位数 标准差和方差 数据总结 查看筛选子集的的统计结果选择重量大于或等于 3...

  • 贪心算法 & 动态规划基础题

    [TOC] acm 标签(空格分隔): acm 贪心算法 51Nod 1191消灭兔子 越好,故对兔子血量升序排列...

  • 中位数的近似计算

    的公式求出中位数所在组的位置,然后再按下限公式或上限公式确定中位数。 Me——中位数;L——中位数所在组下限;U—...

  • 二分查找类题目小结

    问题的关键所在 两个中位数 区间选择 终止条件 两个中位数 下位中位数 上位中位数 区间的选择 开区间 闭区间 半...

  • LeetCode之Minimum Moves to Equal

    问题: 方法:首先,数学上中位数就存在距离和最小的特点,所以找出中位数然后遍历所有元素和中位数的距离和即得到最终结...

网友评论

      本文标题:51nod 1682 中位数计数

      本文链接:https://www.haomeiwen.com/subject/znkubftx.html