程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdu 4908 BestCoder Sequence

hdu 4908 BestCoder Sequence

編輯:C++入門知識

hdu 4908 BestCoder Sequence


比賽的時候絕逼整不出來啊,看了別人的blog,才理解什麼解法

 

題目給出中位數,求有多少子串也是以m為中尉

思路:找出m的位置sign,然後向前找比m小,cou++,的index[]在相應的位置加一(等向m後面找的時候發現比m大的元素,構成了一個BestCoder Sequence,直接就sum+=index[]),比m大,cou--,也在的index[]在相應的位置加一(這樣就把m前面比m大的數 也加入到准備數組index中,當m後面有比m大的時候sum+=index[],就把m前面比m大的元素也算上了,也構成了一個BestCoder Sequence)

 

 

/*************************************************************************
	> File Name: hdu4908.cpp
	> Author: yang
	> Mail:[email protected] 
	> Created Time: 2014年08月17日 星期日 17:11:59
 ************************************************************************/

#include
#include
#include
#include
using namespace std;
#define N 40010
int main(){
	int a[N],index[N],mid=N/2;
	int n,m;
	while(cin>>n>>m){
		int sign;
		for(int i=1;i<=n;i++){
			scanf(%d,&a[i]);
			if(a[i]==m) 
				sign=i;
		}
		int cou=0;
		memset(index,0,sizeof(index));
		for(int i=sign;i>=1;i--){
			if(a[i]>m) cou++;
			if(a[i]m) cou++;
			if(a[i]

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved