求助大佬,若解决,蒟蒻必关

P1114 “非常男女”计划

会超时
by xiaosi4081 @ 2023-11-14 13:17:46


时间复杂度大于 $O(n^2)$ ,在此题中通过不了
by xiaosi4081 @ 2023-11-14 13:19:24


@[xiaosi4081](/user/343531) 在输入 ``` 5 1 0 0 1 0 ``` 时会输出14,求大佬帮忙改一改
by CE_TAP @ 2023-11-14 13:19:53


请使用前缀和思想通过此题
by xiaosi4081 @ 2023-11-14 13:20:25


```c++ #include<iostream> #include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; int peo[n]= {0}; for(int i=0; i<n; i++) { cin>>peo[i]; } int boy=0,gir=0,max=0; //在main函数内没有赋初值的话默认为差不多2000000的一个数,看编译器 for(int i=0; i<n; i++) { boy=0,gir=0; for(int j=i+1; j<n; j++) { for(int k=i; k<=j; k++) { //遍历 if(peo[k]==1) { //当检测到女生 gir++; } if(peo[k]==0) { //当检测到男生 boy++; } } if(boy==gir) { if(max<gir+boy) { max=gir+boy; } } } } cout<<max<<endl; //将输出移出来 } ```
by xiaosi4081 @ 2023-11-14 13:22:30


@[xiaosi4081](/user/343531) 现在AC是AC了 但有些点超时了 麻烦大佬教蒟蒻前缀和 ## 代码如下 ```cpp #include<iostream> #include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; int peo[n]= {0}; for(int i=0; i<n; i++) { cin>>peo[i]; } int boy=0,gir=0,max=0; //在main函数内没有赋初值的话默认为差不多2000000的一个数,看编译器 for(int i=0; i<n; i++) { for(int j=i+1; j<n; j++) { for(int k=i; k<=j; k++) { //遍历 if(peo[k]==1) { //当检测到女生 gir++; } if(peo[k]==0) { //当检测到男生 boy++; } } if(boy==gir) { if(max<(gir+boy)) { max=gir+boy; } }boy=0,gir=0; } } cout<<max<<endl; //将输出移出来 } ```
by CE_TAP @ 2023-11-14 13:32:48


@[CE_TAP](/user/1055118) https://oi-wiki.org/basic/prefix-sum/
by wangyinghao @ 2023-11-14 13:38:46


@[CE_TAP](/user/1055118) 还有这道题中要用到差的思想
by xiaosi4081 @ 2023-11-14 13:43:09


|