QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#728018#5983. Pretty Good ProportionpzjQWQ27 ✓2239ms39048kbC++141.1kb2024-11-09 14:23:312024-11-09 14:23:34

Judging History

你现在查看的是最新测评结果

  • [2024-11-09 14:23:34]
  • 评测
  • 测评结果:27
  • 用时:2239ms
  • 内存:39048kb
  • [2024-11-09 14:23:31]
  • 提交

answer

#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
const int N=5e5+5;
int T,n,tot,tag,a[N],sum[N],l,r;
double p;
struct node{
	double a;
	int b;
	bool operator <(const node &o) const{ return a<o.a; }
};
set<node> s;
void update(int L,int R){
    if(l==-1) l=L,r=R;
    else if(fabs((sum[r]-sum[l-1])*1.0/(r-l+1)-p)>fabs((sum[R]-sum[L-1])*1.0/(R-L+1)-p)||(fabs(fabs((sum[r]-sum[l-1])*1.0/(r-l+1)-p)-fabs((sum[R]-sum[L-1])*1.0/(R-L+1)-p))<1e-8&&L<l)) l=L,r=R;
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cin>>T;
    while(T--){
        cin>>n>>p,l=r=-1;
        for(int i=1;i<=n;++i){
            char c;
            cin>>c;
            a[i]=(c^'0'),sum[i]=sum[i-1]+a[i];
        }
        s.clear(),tag=0;
        for(int i=1;i<=n;++i){
            s.insert(node({tag+p*(1-i),i}));
            if(a[i]) ++tag;
            auto it=s.lower_bound(node({tag-p*i}));
            if(it!=s.end()) update((*it).b,i);
            if(it!=s.begin()) --it,update((*it).b,i);
        }
        cout<<"Case #"<<++tot<<": "<<l-1<<endl;
    }
    return 0;
}

詳細信息

Subtask #1:

score: 5
Accepted

Test #1:

score: 5
Accepted
time: 0ms
memory: 5820kb

input:

100
10 0.827672
0010101011
4 0.932623
0100
1000 0.834002
011001110010111110000110101100010010100101101110110111100010101101111100110001011000110100010100011011000001100001010110111101111010110110000110011000111000011110101100100111111001111011011100111001011101010100111011100011110011100011110010001...

output:

Case #1: 6
Case #2: 1
Case #3: 10
Case #4: 0
Case #5: 0
Case #6: 1
Case #7: 0
Case #8: 0
Case #9: 0
Case #10: 0
Case #11: 0
Case #12: 4
Case #13: 5
Case #14: 564
Case #15: 0
Case #16: 0
Case #17: 0
Case #18: 0
Case #19: 0
Case #20: 0
Case #21: 0
Case #22: 0
Case #23: 0
Case #24: 844
Case #25: 0
Case...

result:

ok 100 lines

Subtask #2:

score: 22
Accepted

Test #2:

score: 22
Accepted
time: 2239ms
memory: 39048kb

input:

100
15 0.333333
000000000011000
10 0.418754
0101100001
2 0.499999
01
3 0.977951
001
2 0.249999
01
10 0.670229
0111011001
1000 0.500001
001101111110110010110000010010110001110010001101110111010011000010100011011101010110011011011010111110011100011000001000101011100011010100101101111110100101011010111...

output:

Case #1: 6
Case #2: 0
Case #3: 0
Case #4: 2
Case #5: 0
Case #6: 0
Case #7: 0
Case #8: 0
Case #9: 0
Case #10: 0
Case #11: 0
Case #12: 0
Case #13: 0
Case #14: 0
Case #15: 0
Case #16: 4333
Case #17: 0
Case #18: 0
Case #19: 123
Case #20: 0
Case #21: 0
Case #22: 0
Case #23: 0
Case #24: 0
Case #25: 0
Case...

result:

ok 100 lines

Extra Test:

score: 0
Extra Test Passed