总结
这个考试第一题是送的,第二题也就暴力枚举而已了,贪心思想。
首先第一题你要找出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