# SRM 634 #DIV2

#### 250题目：

Tom is in charge of a tourist agency. He has a lovely picture of the local mountain range. He would like to sell it to the tourists but first he needs to know how many peaks are visible in the picture.
The mountain range in the picture can be seen as a sequence of heights. You are given these heights as a vector height. An element of height is called a peak if its value is strictly greater than each of the values of adjacent elements. Compute and return the number of peaks in the given mountain range.

#### 分析：

#include <iostream>
#include <cstring>
#include <deque>
#include <cmath>
#include <queue>
#include <stack>
#include <ctime>
#include <list>
#include <map>
#include <set>
#include <string>
#include <vector>
#include <cstdio>
#include <functional>
#include <algorithm>
typedef long long LL;
#define REPF( i , a , b ) for ( int i = a ; i <= b ; ++ i )
#define REP( i , n ) for ( int i = 0 ; i < n ; ++ i )
#define CLEAR( a , x ) memset ( a , x , sizeof a )
using namespace std;
const int INF = 0x3f3f3f3f;
typedef pair<int,int>pil;
class MountainRanges {
public:
int countPeaks( vector <int> heights ) {
int sz=heights.size();
if(sz==1)
return 1;
int ans=0;
for(int i=0;i<sz;i++)
{
if(i==0&&heights[i]>heights[i+1])
ans++;
else if(i==sz-1&&heights[i]>heights[i-1])
ans++;
else if(heights[i]>heights[i-1]&&heights[i]>heights[i+1])
ans++;
}
return ans;
}
};

#### 500题目：

A store sells M different items, conveniently numbered 0 through M-1. For a shopping survey you interviewed N customers. Each customer responded to the survey with a list of items they’ve bought. Each customer bought at most one of each item. It is possible that some customers did not buy anything at all.
After collecting the responses, you’ve summed up the results and found that s[i] people have bought item i. Due to an unfortunate accident, you’ve then lost the actual survey responses. All you have left are the values s[i] you computed.
You are now supposed to report the number of big shoppers among the survey respondents. A big shopper is defined as a customer who has bought all M items. Of course, having lost the detailed responses, you might be unable to determine the actual number of big shoppers.
You are given the int N and the vector s with M elements. Compute and return the smallest possible number of big shoppers.

#### 分析：

#include <iostream>
#include <cstring>
#include <deque>
#include <cmath>
#include <queue>
#include <stack>
#include <ctime>
#include <list>
#include <map>
#include <set>
#include <string>
#include <vector>
#include <cstdio>
#include <functional>
#include <algorithm>
typedef long long LL;
#define REPF( i , a , b ) for ( int i = a ; i <= b ; ++ i )
#define REP( i , n ) for ( int i = 0 ; i < n ; ++ i )
#define CLEAR( a , x ) memset ( a , x , sizeof a )
using namespace std;
const int INF = 0x3f3f3f3f;
typedef pair<int,int>pil;
class ShoppingSurveyDiv2 {
public:
int minValue( int N, vector <int> s ) {
int sum=0;
int n=s.size();
for(int i=0;i<n;i++)
sum+=s[i];
for(int i=0;i<=N;i++)
{
int res=sum-i*n;
if(res<=(N-i)*(n-1))
return i;
}
}
};

#### 1000题目：

A string S is called special if it satisfies the following two properties:
Each character in S is either ‘0’ or ‘1’.
Whenever S = UV where both U and V are nonempty strings, U is strictly smaller than V in lexicographic order.
For example, the string S = “00101” is special because we have “0” < “0101”, “00” < “101”, “001” < “01”, and “0010” < “1”.
You are given a string current that is guaranteed to be special. Let N be the length of current. Consider the lexicographically sorted list of all special strings of length N. Compute and return the string that comes immediatelly after current in this list. If current happens to be the last string in the list, return an empty string instead.

#### 分析：

#include <iostream>
#include <cstring>
#include <deque>
#include <cmath>
#include <queue>
#include <stack>
#include <ctime>
#include <list>
#include <map>
#include <set>
#include <string>
#include <vector>
#include <cstdio>
#include <functional>
#include <algorithm>
typedef long long LL;
#define REPF( i , a , b ) for ( int i = a ; i <= b ; ++ i )
#define REP( i , n ) for ( int i = 0 ; i < n ; ++ i )
#define CLEAR( a , x ) memset ( a , x , sizeof a )
using namespace std;
const int INF = 0x3f3f3f3f;
typedef pair<int,int>pil;
bool ok(string s,int len)
{
string s1,s2;
for(int i=0;i<len-1;i++)
{
s1="";s2="";
for(int j=0;j<=i;j++)
s1+=s[j];
for(int j=i+1;j<len;j++)
s2+=s[j];
if(s1>s2||s1==s2)
return false;
}
return true;
}
class SpecialStrings {
public:
string findNext( string current ) {
int len=current.length();
for(int i=len-1;i>=0;i--)
{
if(current[i]=='0')
{
string s=current;
for(int j=i;j<len;j++)
s[j]='1';
if(ok(s,len))
{
for(int j=i+1;j<len;j++)
{
s[j]='0';
if(!ok(s,len))
s[j]='1';
}
return s;
}
}
}
return "";
}
};
• 本文已收录于以下专栏：

## SRM 649 div2 1000

• slowlight93
• 2015年02月12日 18:31
• 499

## TopCoder SRM 634 Div2 Problem 500 - ShoppingSurvey

• u014247806
• 2014年09月27日 16:27
• 870

## TopCoder SRM 634 Div2 Problem 1000 - SpecialStrings

• u014247806
• 2014年09月27日 16:18
• 1289

## TopCoder SRM 634 Div.2[ABC]

TopCoder SRM 634 Div.2[ABC] ACM 题目地址: TopCoder SRM 634 赛后做的，感觉现场肯定做不出来Orz，简直不能多说。 Level One-M...
• hcbbt
• 2014年09月27日 21:02
• 1944

## SRM 397 DIV2 [1000]

#includeiostream>#includevector>#includeset>#includealgorithm>using namespace std;class CollectingMa...
• f22fbi
• 2008年05月02日 00:12
• 272

## SRM 513 div2

• magicnumber
• 2011年07月28日 13:56
• 521

## SRM 552 DIV2

• ACM_Ted
• 2012年08月17日 17:04
• 446

## SRM 599 DIV2 950

• u012797220
• 2013年12月06日 20:55
• 1113

## SRM 546 div2

• wilsonlym
• 2012年06月17日 18:07
• 163

## SRM 498 div2

250pt： 题意：就是黑板上有三个数，有n次选择的机会，每次选择哪个数可以得到和那个数相同的分数，然后黑板上的该数减一。求n次选择最多能得到多少分。（注意分数减到0后就不在减）。 思路：水题啊，...
• wmn_wmn
• 2012年07月30日 20:32
• 536

举报原因： 您举报文章：SRM 634 #DIV2 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)