bzoj1303[CQOI2009]中位数图
1303: [CQOI2009]中位数图
Time Limit: 1 Sec Memory Limit: 162 MB
Submit: 1969 Solved: 1264
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
5 7 2 4 3 1 6
Sample Output
HINT
第三个样例解释:{4}, {7,2,4}, {5,7,2,4,3}和{5,7,2,4,3,1,6}
N<=100000
Source
在不考虑数据范围的情况下,用连续字段和,大概2000以内的数据都能过,但是这题数据居然给到了100000,那么暴力是解决不了问题了。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
这是一个分外机智的思路。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
把比b大的定为1,把b小的定为-1,等于b的定为0,这道题就变成了,求在给的数字段里边找到连续的奇数个数,并且和为0,我们用一个cnt数组来记录当前所有数字的和,即cnt[i]=cnt[0]+cnt[1]+......cnt[i],那么只要cnt[i]==0并且i为奇数,肯定满足,但是其他情况也需要考虑,即不是从头开始的,但是有一段的和等于0,这是就得分情况了,如果这一连续的段为奇数,那么肯定符合,如果是偶数就肯定不符合,我们用a数组表示当i为奇数使前i个数的和是否出现过,1为出现过,0 表示未出现,用数组b表示i为偶数时的情况,那么问题来了,如果对于同一个数,a数组里边出现过,b数组里边也出现过,是不是说明了,给定的数字串在某一个奇数区间里边的和为0,那么问题便得到了解决,详细见代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int a[110000*2],b[110000*2],cnt[110000],t,i,j,k,l,m,n;
int main()
{while(scanf("%d%d",&n,&m)!=EOF){memset(cnt,0,sizeof(cnt));memset(a,0,sizeof(a));memset(b,0,sizeof(b));int ans=0;for(i=1;i<=n;i++){scanf("%d",&k);if(k>m)l=1;if(k==m)l=0;if(k<m)l=-1;cnt[i]+=cnt[i-1]+l;//记录前i个数的和 if(cnt[i]==0&&i%2)ans++;//如果满足,直接相加即可 if(i%2){ans+=a[cnt[i]+n];//加上偶数时当前和出现的次数 b[cnt[i]+n]++;//标记当i为奇数时,当前这个和出现过 ; }if(i%2==0){ans+=b[cnt[i]+n];//加上奇数时当前和出现的次数 a[cnt[i]+n]++;//标记i为 偶数时,当前这个和出现过 } }printf("%d\n",ans);}
}
bzoj1303[CQOI2009]中位数图相关推荐
- [bzoj1303][CQOI2009]中位数图
来自FallDream的博客,未经允许,请勿转载,谢谢. 给定一个n个数排列,求有多少段长度为奇数的区间,中位数是b. n<=100000 时间限制0.1s 我一开始没看到排列,想着怎么还能O( ...
- BZOJ 1303: [CQOI2009]中位数图【前缀和】
1303: [CQOI2009]中位数图 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 2737 Solved: 1698 [Submit][Sta ...
- bzoj 1303: [CQOI2009]中位数图
1303: [CQOI2009]中位数图 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 2747 Solved: 1704 [Submit][Sta ...
- [CQOI2009]中位数图
[CQOI2009]中位数图 这是一道OI真题,我们来看看题目: 顺便放下地址吧:[CQOI2009]中位数图 读了题目之后发现直接枚举是不行的,会超时,那么我们就得换种思路了,我们可以把大于目标数的 ...
- [CQOI2009]中位数图 详细题解
题目链接: https://ac.nowcoder.com/acm/problem/19913 题目描述: 给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b.中位数是指把所有 ...
- 牛客网【每日一题】5月22日 [CQOI2009]中位数图
链接: 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 给出1~n的一个排列,统计该排列有 ...
- 【CQOI2009】中位数图
Powered by:NEFU AB-IN [CQOI2009]中位数图 题意 给出 1 − n 1-n 1−n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是 b b b. 中位数是指 ...
- [CQOI2009] 中位数 (前缀和)
[CQOI2009] 中位数 题目描述 给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b.中位数是指把所有元素从小到大排列后,位于中间的数. 输入输出格式 输入格式: 第一行 ...
- 2019.4.summary
2019.4.1 BZOJ1061: [Noi2008]志愿者招募 真心有点难QAQ https://www.byvoid.com/zhs/blog/noi-2008-employee 看void爷的 ...
最新文章
- 根据镜像安装oracle插件,docker镜像alpine中安装oracle客户端
- 联想S820 MIUI刷机包 MIUI 4.4.30 流畅执行 在线主题破解
- Mobile first! Wijmo 5 + Ionic Framework之:Hello World!
- 二十一、String、StringBuffer和StringBuilder的区别是什么?
- javascript做极简时钟特效,再简单没思路你也做不出来
- mysql 表ful,你所不知的table is full那些事
- 【CodeForces - 722D】Generating Sets(二分,贪心)
- ddos常见攻击报文
- redhat linux 5 nfs
- SpringCloud Sentinel 熔断降级、热点参数限流、与系统自适应限流介绍与配置
- 京东健康暗盘涨幅超27% 成交额超1.6亿港元
- 自创解决键盘最后退出的问题
- css改火狐滚动条样式_自定义滚动条,可解决火狐滚动条默认样式修改不了问题...
- 模因(meme)收集
- mac 查看本机ip地址命令
- 泊松分布 二项分布 正态分布之间的联系,与绘制高斯分布图
- 怎么用nginx搭建文件服务器,使用nginx搭建简单文件服务器
- “水晶糖果字体”练习
- From Word Embeddings To Document Distances论文总结
- 使用DGL实现基于闲鱼图进行边分类算法