D - BestCoder Sequence
2015-07-31 23:08
344 查看
题目要求的是中位数,不是中间那个数,,,所以要对 选取的那几个连续的数排一下序, 例如 9 2 8 5 1 她的中位数是5不是8
我的思路是 以要求的数m为基准,往右边for 一遍,如果a[i]>m cun1++ else cun1-- 然后把vis[cun1]++; 注意由于要求长度是奇数,所以还把每一个cun1分成奇数的cun1和偶数的cun1
同理左边也是这样
最后for 左端点到 m的位置 如果奇数对应的cun1==奇数对应的cun2(也就是合成的子串长度是奇数,并且大于m和小于m的个数一样多)
就为符合条件的子串
最后要注意的是 cun1或==0 且与m构成子串长度为奇数时 也能单独和m构成一个合法子串
我的思路是 以要求的数m为基准,往右边for 一遍,如果a[i]>m cun1++ else cun1-- 然后把vis[cun1]++; 注意由于要求长度是奇数,所以还把每一个cun1分成奇数的cun1和偶数的cun1
同理左边也是这样
最后for 左端点到 m的位置 如果奇数对应的cun1==奇数对应的cun2(也就是合成的子串长度是奇数,并且大于m和小于m的个数一样多)
就为符合条件的子串
最后要注意的是 cun1或==0 且与m构成子串长度为奇数时 也能单独和m构成一个合法子串
#include <cstdio> #include <cmath> #include <cstring> #include <string> #include <algorithm> #include <iostream> #include <queue> #include <map> #include <set> #include <vector> using namespace std; int tm[40000+5]; struct node { int odd; int even; } vis[40000+50]; int zero[40000+50]; int min(int a,int b) { if (a<b) return a; return b; } int main() { int n,m,i; int j,k; while(scanf("%d%d",&n,&m)!=EOF) { memset(vis,0,sizeof(vis)); int mark; int ok=0; for (i=1;i<=n;i++) { scanf("%d",&tm[i]); if (tm[i]==m) { mark=i; } } int sum=0; int cun1=0; for (i=mark+1;i<=n;i++) { if (tm[i]<m) cun1--; else cun1++; if (cun1==0) { zero[++ok]=i; } if ((mark-i)%2==0) vis[20000+cun1].odd++; else vis[20000+cun1].even++; } int cun2=0; for (i=mark-1;i>=1;i--) { if (tm[i]<m) cun2++; else cun2--; if (cun2==0) { zero[++ok]=i; } if ((mark-i)%2==0) sum+=vis[20000+cun2].odd; else sum+=vis[20000+cun2].even; } for (i=1;i<=ok;i++) { if (zero[i]>mark) { if ((zero[i]-mark)%2==0) sum++; } else { if ((mark-zero[i])%2==0) sum++; } } printf("%d\n",sum+1); } return 0; }
相关文章推荐
- android UI设计 layout_weight解析
- hdu 5312 Sequence(数学)
- Can you answer these queries?---hdu4027
- NGUI(三)背包系统页面
- iOS学习(UIImageView)
- ubuntu下vagrant up经常出现Failed to upload a file to the guest VM via SCP due to a permissions error.最终解决
- hdu 5297 Y sequence(容斥)
- 黑马程序员------API(String类,StringBuffer,StringBuilder及基本数据类型包装类)
- Entityframework~Fluent Api配置数据模型与数据库结构关系
- mysql启动错误:Starting MySQL.. ERROR! The server quit without updating PID file错误
- 递归和循环---从EasyUI Tree 发现自己的硬伤
- uva11235 Frequent values(线段树区间合并)
- LTView 自定义视图 UIAlertView
- EasyUi 新组件 switchbutton 根据状态切换显示内容
- Android API Guides 阅读笔记(9)----Bound Service
- UVA1152-4 Values whose Sum is 0
- UIViewController(视图控制器)下的View切换
- UVA1605-Building for UN
- 仿Uber主界面布局,框架简单实现
- iOS-01-UILabel