总结
这个考试第一题是送的,第二题也就暴力枚举而已了,贪心思想。
首先第一题你要找出0,8,9的特点,特点我不说了(还是说一下吧,8是即第一行第三行第五行 1 的个数一样,第二行第四行 1 的个数一样就好了,9也许你知道了,0就是剩下的, 8,9之后一定是0了)
第二题的代码我不放了,别的tj思路已经很清晰了,或者说这道题就是需要预处理一下的dp
至于第3题我送你们一个错误代码(超时的)
#include<bits/stdc++.h>
#define F(i,a,b) for(int i=a;i<=b;++i)
using namespace std;
inline int read();
const int N=1e5+10;
int n,q,a[N],l,r;
struct P{
int l,r;
}b[N];
inline int sol(){
int x=l,k=0;
while(x<=r)x=b[x].r,++k;
return k;
}
int st[N<<1],top;
inline void init(){
a[n+1]=INT_MAX;
F(i,1,n+1){
while(top and a[st[top]]<a[i])b[st[top--]].r=i;
b[i].l=st[top];
st[++top]=i;
}
}
int main(){
n=read(),q=read();
F(i,1,n)a[i]=read();
init();
while(q--){
l=read(),r=read();
printf("%d\n",sol());
}
return 0;
}
inline int read(){
int x=0;
char c=getchar();
while(!isdigit(c))c=getchar();
while(isdigit(c))x=(x<<1)+(x<<3)+(c^48),c=getchar();
return x



京公网安备 11010502036488号