hdu4908 中位数子串
题意:
给你N个数字组成的数列,然后问你这里面有多少个是以M为中位数的子序列。
思路:
首先分四中简单的情况求
(1) 就是只有他自己的那种情况 那么sum+1
(2) 从自己开始向左延伸,x, x - 1, x - 2 ...这种可以记录大于m的个数max和小于m的个数min当两个数相等的时候(min == max)就 sum++,然后在这样 mark[max - min]++;记录差值产生的次数,可以开两个数组,一个寸正差,一个存负差,或者直接开一个容器,我开的是容器,这个地方随意
(3) 从自己开始向又延伸,跟上面的操作一样,唯独就是在mark[max - min]++那不一样,这一步不用记录差值的出现次数,而是直接算 sum += mark[min-max],这里很简单,就是优化了暴力,这个题目如果直接暴力是O(n^2)的,这样算出来是O(N)的。不是很难理解就不多解释了,还不懂得看看下面的代码就懂了,水题一道。
#include<stdio.h>
#include<map> #define N 44000
using namespace std; map<int ,int>mark; int num[N] ,L[N] ,R[N]; int main ()
{
int sum ,n ,m ,i ,mk;
while(~scanf("%d %d" ,&n ,&m))
{
for(i = 1 ;i <= n ;i ++)
{
scanf("%d" ,&num[i]);
if(num[i] == m) mk = i;
}
mark.clear();
sum = 0;
int min = 0,max = 0;
for(i = mk + 1 ;i <= n ;i ++)
{
num[i] < m ? min++ : max++;
if(min == max) sum ++;
mark[max - min] ++;
}
min = 0 ,max = 0;
for(i = mk - 1 ;i >= 1 ;i --)
{
num[i] < m ? min ++ : max ++;
if(min == max) sum ++;
sum += mark[min - max];
}
printf("%d\n" ,sum + 1);
}
return 0;
}
hdu4908 中位数子串的更多相关文章
- 8.3-8.7 usaco
summary:38 vijos1002:青蛙跳河. dp+压缩.距离大于100可以直接%100.然后数据范围小了很多可以dp了. #include<cstdio> #include< ...
- hdu4908(中位数)
传送门:BestCoder Sequence 题意:给一个序列,里面是1-N的排列,给出m,问以m为中位数的奇数长度的序列个数. 分析:先找出m的位置,再记录左边比m大的状态,记录右边比m大的状态,使 ...
- HDU4908——BestCoder Sequence(BestCoder Round #3)
BestCoder Sequence Problem DescriptionMr Potato is a coder.Mr Potato is the BestCoder.One night, an ...
- 题目1004:Median(查找中位数)
问题来源 http://ac.jobdu.com/problem.php?pid=1004 问题描述 给你两个非降序序列,让你求中位数.中位数为第(n+1)/2个数(从0开始计算). 问题分析 这个问 ...
- Leetcode(5)最长回文子串
Leetcode(4)寻找两个有序数组的中位数 [题目表述]: 给定一个字符串 s,找到 s 中 最长 的回文子串.你可以假设 s 的最大长度为 1000.' 第一种方法:未完成:利用回文子串的特点 ...
- luogu P3031 [USACO11NOV]高于中位数Above the Median (树状数组优化dp)
链接:https://www.luogu.org/problemnew/show/P3031 题面: 题目描述 Farmer John has lined up his N (1 <= N &l ...
- LeetCode[5] 最长的回文子串
题目描述 Given a string S, find the longest palindromic substring in S. You may assume that the maximum ...
- 最长回文子串-LeetCode 5 Longest Palindromic Substring
题目描述 Given a string S, find the longest palindromic substring in S. You may assume that the maximum ...
- C语言计算字符串子串出现的次数
#include<stdio.h>#include<string.h>int substring(char *str,char *str1);//函数原型int main(vo ...
随机推荐
- 2.2 Python3基础-基本数据类型
>>返回主目录 源代码 # 基本数据类型 # Number类型:如何查看变量的数据类型? name = 'Portos' print(type(name)) # 结果:str print( ...
- 不用任何框架,Java 就能实现定时任务的 3 种方法!
是的,不用任何框架,用我们朴素的 Java 编程语言就能实现定时任务. 今天,栈长就介绍 3 种实现方法,教你如何使用 JDK 实现定时任务! 1. sleep 这也是我们最常用的 sleep 休眠大 ...
- scrapy框架爬取图片并将图片保存到本地
如果基于scrapy进行图片数据的爬取 在爬虫文件中只需要解析提取出图片地址,然后将地址提交给管道 配置文件中:IMAGES_STORE = './imgsLib' 在管道文件中进行管道类的制定: f ...
- python学习之基础内容
python基础内容① 什么是python? -一种计算机语言,计算机语言分为 -高级语言:python.java.Ruby.C#.C++...... -基础语言:C语言.汇编 -计算机可以直接执行基 ...
- 利用jmeter对WebRTC应用进行压力测试(java)
利用jmeter对WebRTC应用进行压力测试(java) 说明:WebRTC是一款开源的多人即时视频API,与一般的http请求不同,webrtc应用实际压力主要是码流 最近负责了一个WebRTC的 ...
- c++ 反汇编 继承
单继承,父类中没有虚函数 单继承,父类存在虚函数,子类重写虚函数 单继承,父类存在虚函数,子类不新定义虚函数 单继承,父类存在虚函数,子类新定义虚函数 单继承,父类不存在虚函数,子类定义虚函数 多继承 ...
- [组合][DP]luogu P3643 [APIO2016]划艇
题面 https://www.luogu.com.cn/problem/P3643 对于一个序列,第i项可取的值在{0}∪[ai,bi]之间,求使序列非零部分单调递增的方案数 分析 设 $f[i][j ...
- 【Linux学习笔记1】-centos6.9部署django
一,centos6.9部署django 部署套件:centos6.9+nginx+mysql+uwsgi+python3+django 首先还是要明白这几个部分之间的关系(自己也是初学者,希望 ...
- 面试官:聊一聊SpringBoot服务监控机制
目录 前言 SpringBoot 监控 HTTP Endpoints 监控 内置端点 health 端点 loggers 端点 metrics 端点 自定义监控端点 自定义监控端点常用注解 来,一起写 ...
- 第13 章 : Kubernetes 网络概念及策略控制
Kubernetes 网络概念及策略控制 本文将主要分享以下 5 方面的内容: Kubernetes 基本网络模型: Netns 探秘: 主流网络方案简介: Network Policy 的用处: 思 ...