A:找出最长连续不递减子序列....直接遍历寻找即可...
#include<bits/stdc++.h>
using namespace std;
int a[110000];
int main()
{
int n;
scanf("%d",&n);
a[0]=0;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
int ans=0,tmp=0;
for(int i=1;i<=n;i++)
{
if(a[i]>=a[i-1])
tmp++;
else
{
ans=max(ans,tmp);
tmp=1;
}
}
ans=max(ans,tmp);
cout<<ans<<endl;
return 0;
}
B.给定n个人,每个人有m(工资)和s(不知道是啥)两个属性,要求找到一个人的集合,这个集合内工资最多的人比工资最低的人的差值小于d,问所有可能集合内所有人的s属性和的最大值。
排序+尺取法
#include<bits