zoukankan      html  css  js  c++  java
  • 准确率rate

    准确率(rate)
    【题目描述】
    你是一个骁勇善战、日刷百题的OIer. 今天你已经在你OJ 上提交了y 次,其中x
    次是正确的,这时,你的准确率是x/y.
    然而,你最喜欢一个在[0; 1] 中的有理数p/q(是一个既约分数),所以你希望再进行若干次提交,使你的准确率变为p/q. 当然,由于你的实力很强,你可以随意决定进行多少次正确的提交和多少次错误的提交. 同时,你不希望把一天的时间都用在提交上,所以你想求出最少还要进行多少次提交(包括正确的和错误的),才能达到这一目标.
    注意:本题中,0/1 和1/1 都是既约分数.
    【输入格式】
    从文件rate.in 中读入数据。
    输入第一行包含一个正整数t (t<=5<= 10^5),表示数据组数.
    接下来t 行,每行4 个整数x; y; p; q (0 <=x <= y<=10^9; 0<=p<=q <=10^9; y > 0; q > 0),
    含义如题所述.
    【输出格式】
    输出到文件rate.out 中。
    输出t 行,每行一个整数,表示使正确率达到p/q 所需最小提交次数;若无法达
    到,输出-1.
    【样例1 输入】
    4
    3 10 1 2
    7 14 3 8
    20 70 2 7
    5 6 1 1
    【样例1 输出】
    4
    10
    0
    -1

    【样例1 解释】
    第一组数据中,你需要进行4 次正确的提交,使准确率达到7/14,即1/2;
    第二组数据中,你需要进行2 次正确的提交,8 次错误的提交,使准确率变为9/24,
    即3/8;
    第三组数据中,你无需进行任何提交,因为你的准确率已为20/70,即2/7;
    第四组数据中,在原有的提交中已有一次错误提交,准确率不可能达到1.
    【样例2】
    见选手目录下的rate/rate2.in 与rate/rate2.ans。
    【子任务】
    对于30% 的数据,t = 1;
    对于另30% 的数据,t<= 1000.
    以上两部分数据中,各有50% 的数据保证x; y; p; q<= 10^4.

    设nq>=y① np-x>=0② np-x<=nq-y③ ,其分别代表的意思是全部做的题数不能超过q(扩大n倍),需要做对的题数-已做对的题数不能为负,还需要做对的题数不能超过还需要做的全部题数。合乎逻辑(?。然后我们发现,②式和③式包含了①式,因此只考虑②③式即可,现在要求出n。由②式推出n>=x/p,由③式退出n >= (y-x)/(q-p),因此只要取x/p和(y-x)/(q-p)中的较大值,就得到了n。要求最小提交次数,用总次数n*q减去已提交次数y就为答案。

    代码如下

     1  1 #include<cstdio>
     2  2 #include<algorithm>
     3  3 using namespace std;
     4  4 #define ll long long int
     5  5 ll x,y,p,q,ans;
     6  6 int t;
     7  7 int main()
     8  8 {
     9  9     
    10 10     scanf("%d",&t);
    11 11     while(t--)
    12 12     {
    13 13         scanf("%lld%lld%lld%lld",&x,&y,&p,&q);
    14 14         if(p == q)
    15 15         {
    16 16             if(x == y) printf("0
    ");
    17 17             else printf("-1
    ");
    18 18         }
    19 19         else
    20 20         {
    21 21             ans = max((x-1)/p,(y-x-1)/(q-p))+1;
    22 22             printf("%lld
    ",(ll)ans*q-y);
    23 23         }
    24 24     }
    25 25     return 0;
    26 26 }


    最后献上一首膜你抄

    屏幕在深夜微微发亮

    思想在那虚树路径上彷徨

    平面的向量交错生长

    织成 忧伤的网

    剪枝剪去我们的疯狂

    SPFA 告诉我前途在何方

    01 背包装下了忧伤

    笑颜 洋溢脸庞

    键盘微凉

    鼠标微凉

    指尖流淌

    代码千行

    凸包周长

    直径多长

    一进考场

    全都忘光

    你在 OJ 上提交了千百遍

    却依然不能卡进那时限

    双手敲尽代码也敲尽岁月

    只有我一人写的题解

    凋零在 OJ 里面

    Tarjan 陪伴强连通分量

    生成树完成后思路才闪光

    欧拉跑过的七桥古塘

    让你 心驰神往

    队列进出图上的方向

    线段树区间修改求出总量

    可持久化留下的迹象

    我们 伏身欣赏

    数论算法

    图论算法

    高斯费马

    树上开花

    线性规划

    动态规划

    时间爆炸

    如何优化

    我在 OI 中辗转了千百天

    却不让我看 AK 最后一眼

    我用空间换回超限的时间

    随重新编译测完样例

    才发现漏洞满篇

    原来 CE 是因选错语言

    其实爆零

    只因忘写文件

    如果标算太难请坚定信念

    不如回头再看一眼题面

    以那暴力模拟向正解吊唁

    蒟蒻的蜕变

    神犇出现

    终将与 Au 擦肩

    屏幕在深夜微微发亮

    我心在考场

  • 相关阅读:
    Protocol https not supported or disabled in libcurl
    初学require.js
    HTML中的IE条件注释
    前端,我为什么不要你
    敲点JavaScript代码
    小白科普之JavaScript的函数
    小白科普之JavaScript的BOM模型
    小白科普之JavaScript的JSON
    小白科普之JavaScript的数组
    document.documentElement和document.body的区别
  • 原文地址:https://www.cnblogs.com/peppa/p/9443327.html
Copyright © 2011-2022 走看看