hdu 4908 BestCoder Sequence && BestCoder Round #3 1002
来源:互联网 发布:算法工程师职业规划 编辑:程序博客网 时间:2024/05/17 22:36
最近总在做一些bestCoder的题目,很多题可以通过自己的思考解决出来,不需要太依赖题解文献啥的了,比较开心的
题意:1-n的排列,求给定中位数的子串个数
题解&思路:1.感觉肯定不是暴力,时间过不去,感觉可能是记录前缀和的这种思想,就是用点值来表示一段数据;
2.从给定中位数的物理位置往后遍历,将大于中位数的数的个数与小于中位数的数的个数之差hash到一个数组中;
3.再从给定中位数的物理位置向前遍历,并找到中位数后面所对应的hash值
4.注意对只有中位数前半段和后半段的情况
#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define MAXN 40005int num[MAXN],dp[MAXN << 1];int main(){ int n,m,ind; while(scanf("%d%d",&n,&m) != EOF) { memset(dp,0,sizeof(dp)); int more = 0; ind = n; for(int i = 0;i < n;i++) { scanf("%d",&num[i]); if(num[i] == m)ind = i; if(i > ind) { if(num[i] > m)more++; dp[(i - ind) - 2 * more + n]++; } } int ans = ++dp[n]; more = 0; for(int i = ind - 1;i >= 0;i--) { if(num[i] > m)more++; ans += dp[2 * more - (ind - i) + n]; } printf("%d\n",ans); }}
0 0
- hdu 4908 BestCoder Sequence && BestCoder Round #3 1002
- [BestCoder Round #3] hdu 4908 BestCoder Sequence (计数)
- HDU 4908 BestCoder Sequence——BestCoder Round #3
- BestCoder Round #3 1002 BestCoder Sequence
- BestCoder Round #3 BestCoder Sequence
- HDU4908 - BestCoder Sequence(BestCoder Round #3 计数)
- hdu 4908 BestCoder Sequence
- hdu 4908 BestCoder Sequence
- HDU 4908 BestCoder Sequence
- hdu 4908 BestCoder Sequence
- HDU 4908 BestCoder Sequence
- hdu 4908 BestCoder Sequence
- hdu 4908 BestCoder Sequence
- HDU 4908 BestCoder Sequence
- HDU 4908BestCoder Sequence
- hdu 5147 Sequence II BestCoder Round #23 1002
- 【HDU】4908 BestCoder Sequence 预处理
- hdu 4908 BestCoder Sequence(计数)
- 随机数发生器
- html+css图片首页
- 第三章
- TCP基础--协议包基本分析
- Linux编程-----实用技巧
- hdu 4908 BestCoder Sequence && BestCoder Round #3 1002
- 通过鼠标控制精灵
- Java学习笔记21
- CentOS5.5 LVS+keepalived 负载均衡冗余技术
- tomcat配置jndi的三种方式
- 7个你不知道的Linux的事实
- Linux CentOS PhpMyAdmin安装
- html+css实现图片展示桌面
- linux编程-----shell脚本