Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
33441 liuyile 【BJ】T2 C++ 编译错误 0 0 MS 0 KB 1763 2024-10-09 13:38:51

Tests(0/0):


#include <bits/stdc++.h> using namespace std; #define int long long #define double long double int n,m,c,a[2000300]; int pr[2000300]; double px[2000300]; inline bool cmp(int i,int j){ return a[i]*(c-px[j])>a[j]*(c-px[i]); } const double eps=1e-8; inline double qp(double a,int x){ double res=1; while(x){ if(x&1)res=res*a; a=a*a; x>>=1; } return res; } inline double f(double p,int x){ return (1-qp(p,x+1))/(1-p); } inline double calc(double px,double py,int a,int b){ double t=(1-px)*(1-py); double s=0; for(int i=1;;i++)if(i*b/a>0){ double dt=qp(py,i-1)*f(px,i*b/a-1); s+=dt; // printf("%lld %.3Lf ",i,dt); if(dt*t<=eps)break; } // printf("\n"); // printf("%.3Lf %.3Lf\n",t,s); return 1-t*s; } signed main(){ ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); // freopen("sword.in","r",stdin); // freopen("sword.out","w",stdout); // int C=clock(),cn=0; int t; cin>>t; while(t--){ cin>>n>>m>>c; cn+=n; for(int i=1;i<=n;i++) cin>>px[i]>>a[i],pr[i]=i; sort(pr+1,pr+n+1,cmp); int lim=min(n,3ll); for(int i=1;i<=m;i++){ double py,b; cin>>py>>b; double mx=0; int id=0; for(int i=1;i<=n;i++){ double w=calc(px[pr[i]]/c,py/c,a[pr[i]],b); if(w>mx)mx=w,id=pr[i]; } printf("%lld %.10Lf 0\n",id,mx); // cerr<<i<<endl; // cerr.flush(); } } // cerr<<(clock()-C)*1000/CLOCKS_PER_SEC<<endl; // cerr<<cn<<endl; cout.flush(); return 0; }


测评信息: