Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
33527 | baka24 | 【BJ】T2 | C++ | 解答错误 | 0 | 1834 MS | 2600 KB | 1416 | 2024-10-09 19:55:27 |
#include<bits/stdc++.h> using namespace std; #define int long long #define LD long double #define D double const int MAXN=100010,N=30; int read(){int x=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c<='9'&&c>='0')x=x*10+c-'0',c=getchar();return x*f;} int n,m,p[MAXN]; struct node{ int x,p; bool operator<(const node G)const{ return x>G.x; } }a[MAXN]; LD c,t; void slv(){ n=read(),m=read(),c=read(); for(int i=1;i<=n;i++){ a[i].p=read(),a[i].x=read(); } sort(a+1,a+n+1); int tmp=n;n=0; for(int i=1;i<=tmp;i++){ if(a[i].p>=p[i-1])a[++n]=a[i],p[i]=a[i].p; else p[i]=p[i-1]; } while(m--){ int P=read(),A=read(),id=0; LD ans=0; for(int i=1;i<=n;i++){ LD qi=1,pi=0,Pi=1,sum=0; int k=1; for(int j=1;j<=1000000;j++){ while(k*a[i].x<=A*j)k++,pi+=Pi*(1-(LD)a[i].p/c),Pi*=(LD)a[i].p/c; sum+=(1-pi)*qi*(1-(LD)P/c); // cout<<i<<" "<<j<<" "<<pi<<" "<<qi<<endl; qi*=(LD)P/c; if(1-pi<=0.0000001||qi<=0.0000001)break; } // cout<<i<<" "<<sum<<endl; if(sum>ans)ans=sum,id=i; } printf("%lld %.6Lf 0\n",id,ans); } } signed main(){ int _=read();while(_--) slv(); return 0; }