大家好,本人初三,CSP-S 264pts,正常来说可以稳进 NOIP 体验赛。
几周前,特派员通知要参加一个“热身赛”。当时大概是这么说的:为了初中生适应 NOIP,CSP-S 一等能够参加“热身赛”,并且“热身赛”的成绩将作为参加 NOIP 的重要依据。“热身赛”需要缴纳 280 元报名费。
当时看了一圈发现只有 FJ 有这个东西,感觉很不对劲。但是毕竟是官方的比赛,万一你不参加“热身赛”他不让你参加 NOIP 体验赛怎么办。所以我们都报了。
专栏区的第一篇文章也讲了这个问题。
几天前,特派员又发了一个文件,说在名单里的人可以参加 NOIP 体验赛,不在的不能参加。有人问了问,于是发现“热身赛”的成绩与 NOIP 参赛资格无关。
这是我已经冒出一堆问号了。问了下教练,说估计是因为 NOIP 收不了钱,所以搞一个这个比赛收钱。
好吧,那随便打?好像还是要认真打。此处应有聊天记录截图。
嗯,现在来到了 11 月 24 日的下午,比赛开始了。
网址。还以为是什么官网呢,怎么是个小破站。
题面怎么看不到啊?进去了。怎么没有样例和数据范围啊?修好了。怎么是原题啊?T1 AT_abc351_e,T4 CF2018B。怎么连吃 4 发 CE 啊?不是?怎么还 CE?
评测机用的 linux c++11,不需要 freopen。帮忙孩子看看这段代码哪里过不了编吧,试过了不是快读的锅。
#include<cstdio>
const int rSiz=1<<21;
char rBuf[rSiz],*p1=rBuf,*p2=rBuf;
#define gc() (p1==p2&&(p2=(p1=rBuf)+ \
fread(rBuf,1,rSiz,stdin),p1==p2)?EOF:*p1++)
template<class T>void rd(T&x){
char ch=gc();
for(;ch<'0'||ch>'9';ch=gc());
for(x=0;ch>='0'&&ch<='9';ch=gc())
x=(x<<1)+(x<<3)+(ch^48);
}
#include<vector>
const int _=2e5+5;
int n,a[_],l,r,ans;
std::vector<int>b[_];
void solve(){
rd(n);l=0;r=n+1;
for(int i=1;i<=n;i++)b[i].clear();
for(int i=1;i<=n;i++){
rd(a[i]);
if(i+a[i]-1<r)r=i+a[i]-1;
if(i-a[i]+1>l)l=i-a[i]+1;
b[a[i]].push_back(i);
}
ans=r-l+1;
for(int i=1,L=n+1,R=0;i<=n;i++){
for(int x:b[i]){
if(x<L)L=x;
if(x>R)R=x;
}
if(R-L+1>i)ans=0;
}
printf("%d\n",ans);
}
int main(){
int T;rd(T);
for(;T;T--)solve();
}