QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#732871#5983. Pretty Good ProportionDengDuck0 1184ms23428kbC++14876b2024-11-10 16:14:082024-11-10 16:14:09

Judging History

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

  • [2024-11-10 16:14:09]
  • 评测
  • 测评结果:0
  • 用时:1184ms
  • 内存:23428kb
  • [2024-11-10 16:14:08]
  • 提交

answer

#include<bits/stdc++.h>
#define LF long double
#define pLL pair<LF,int>
#define Fi first
#define Se second
using namespace std;
const int N=5e5+5;
const LF E=1e-14;
LF P,Ans;
struct Node{int X;LF Y;}B[N];
int n,A[N],S[N],Pl;
inline LF Cal(Node A,Node B){return (B.Y-A.Y)/(B.X-A.X);}
inline void Upd(int x,LF K)
{
	if(K<Ans-E||fabs(Ans-K)<=E&&x<Pl)Pl=x,Ans=K;
}
inline void DP()
{
	for(int i=1;i<=n;i++)
	{
		S[i]=S[i-1]+A[i];
		B[i]={i,P*i-S[i]};
	}
	B[0]={0,0};
	sort(B,B+n+1,[](Node X,Node Y){return X.Y<Y.Y;});
	for(int i=0;i<n;i++)
	{
		if(B[i].X<B[i+1].X)Upd(B[i].X+1,Cal(B[i],B[i+1]));
	}
}
inline void Work()
{
	Ans=1e9,Pl=0;
	scanf("%d%Lf",&n,&P);
	for(int i=1;i<=n;i++)scanf("%1d",&A[i]);
	DP();

	for(int i=1;i<=n;i++)A[i]^=1;
	P=1-P;
	DP();
	printf("%d\n",Pl);
}
int main()
{
	int T;scanf("%d",&T);
	while(T--)Work();
}

详细

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 5ms
memory: 8060kb

input:

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

output:

7
2
11
1
1
2
1
1
1
1
1
5
6
565
1
1
1
1
1
1
1
1
1
845
1
1
2
156
1
1
1
1
1
1
394
2
174
1
3
1
131
4
1
841
2
6
1
1
75
1
2
1
1
1
1
1
2
1
2
1
1
1
9
1
1
839
3
3
1
1
1
613
1
6
1
1
1
1
1
1
2
1
321
1
1
7
80
1
1
1
1
1
2
1
2
159
1
1
4
1

result:

wrong answer 1st lines differ - expected: 'Case #1: 6', found: '7'

Subtask #2:

score: 0
Wrong Answer

Test #2:

score: 0
Wrong Answer
time: 1184ms
memory: 23428kb

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:

7
1
1
3
1
1
1
1
1
1
1
1
1
1
1
4334
1
1
124
1
1
1
1
1
1
1
1
4
1
682
1
1
3
1
1
1
1
1
2
3
1
289
3
2
2
1
1
1
1
1
1
1
1
2
1
2
1
6
6
1
2
2
1
3
2
1
7
4
1
501
2
1
1
2
1
2
189
4
1
7
499839
1
1
6
1
1
1
499841
1
1
9
5
1
2
1
1
1
93
1
1

result:

wrong answer 1st lines differ - expected: 'Case #1: 6', found: '7'