社区讨论
贪心能过,求算复杂度
P3572[POI 2014] PTA-Little Bird参与者 4已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @m10nc45c
- 此快照首次捕获于
- 2024/09/13 19:39 去年
- 此快照最后确认于
- 2025/11/04 21:17 4 个月前
rt,我觉得卡不到
代码:
CPP#include<cstdio>
using namespace std;
int a[1000005];
int main()
{
//freopen("north.in","r",stdin);
//freopen("north.out","w",stdout);
int n,q;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
scanf("%d",&q);
for(int z=1;z<=q;z++){
int k,st=1,now=a[1],l=0;
scanf("%d",&k);
while(st<n){
if(st+k>=n){
if(now<=a[n])l++;
st=n;
}
else{
int min=2147483647,max=0,x,y,c=0,z;
for(int j=st+1;j<=st+k;j++){
if(a[j]>=max){
max=a[j];
x=j;
}
if(a[j]<=min){
min=a[j];
y=j;
}
if(a[j]>=c&&a[j]<now){
c=a[j];
z=j;
}
}
if(min>=now){
st=x;
now=max;
l++;
}
else{
st=z;
now=c;
}
}
}
printf("%d\n",l);
}
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...