博客园 首页 私信博主 显示目录 隐藏目录 管理

2016-2017 ACM-ICPC Northwestern European Regional Programming Contest (NWERC 2016) 个人题解

 

 

  • Problem C Careful Ascent

可怜的我们被卡在了签到题上,当时用的二分来做,结果速度的左右区间写成了[0,1e32],而改成[-1e32,1e32]就通过了,哎~,怎么就没想到去改一下区间的范围呢。

下面是正常的数学解法,类似于解一元一次方程。

#include <iostream>
using namespace std;
typedef long long ll;

ll x,y,n;
ll a,b;double c;
int main(){
    cin>>x>>y>>n;
    ll sum = y;
    double X = 0;
    while (n--){
        cin>>a>>b>>c;
        sum -= (b-a);
        X += (b-a)*c;
    }
    X += sum;
    printf("%.10f\n",(double)x/X);
    return 0;
}

 

posted @ 2019-10-06 19:08  木牌选手  阅读(181)  评论(0编辑  收藏  举报