zoukankan      html  css  js  c++  java
  • [ACM_模拟][ACM_暴力] Lazier Salesgirl [暴力 懒销售睡觉]

    Description

    Kochiya Sanae is a lazy girl who makes and sells bread. She is an expert at bread making and selling. She can sell the i-th customer a piece of bread for price pi. But she is so lazy that she will fall asleep if no customer comes to buy bread for more than w minutes. When she is sleeping, the customer coming to buy bread will leave immediately. It's known that she starts to sell bread now and the i-th customer come after ti minutes. What is the minimum possible value of w that maximizes the average value of the bread sold?

    Input

    There are multiple test cases. The first line of input is an integer T ≈ 200 indicating the number of test cases.

    The first line of each test case contains an integer 1 ≤ n ≤ 1000 indicating the number of customers. The second line contains n integers 1 ≤ pi ≤ 10000. The third line contains n integers 1 ≤ ti ≤ 100000. The customers are given in the non-decreasing order of ti.

    Output

    For each test cases, output w and the corresponding average value of sold bread, with six decimal digits.

    Sample Input

    2
    4
    1 2 3 4
    1 3 6 10
    4
    4 3 2 1
    1 3 6 10
    

    Sample Output

    4.000000 2.500000
    1.000000 4.000000


    题目大意:T种情况,每种n个客人,第i个客人可赚p[i]元钱,第i个客人t[i]时间来,卖东西的很懒,如果w时间内没人来就睡觉,一觉不起,求最大人均赚的钱同时输出最小w.
    解题思路:暴力枚举每次在第i个顾客来后睡。用w[i]保存想赚第i个人w的最小值,用av[i]保存赚前i个顾客的平均值。如果在第i个顾客来后睡觉就要满足w[i]<w[i+1](这个式子表明第i和第i+1个顾客之间的时间间隔比之前的都大,所以可以取w=w[i]来在这点后睡觉不醒)

     1 #include<iostream>
     2 #include<string.h>
     3 #include<cstring>
     4 #include<cstdio>
     5 #include<string>
     6 using namespace std;
     7 int main(){
     8     int T;cin>>T;
     9     while(T--){
    10         int n;cin>>n;
    11         int p[1002],t[1002];
    12         //w[i]表示赚第i个人需要w的最小值;av[i]表示前i个的人均赚钱数
    13         double w[1002],av[1002];
    14         double sum=0;
    15         for(int i=0;i<n;i++){
    16             cin>>p[i];
    17             sum+=p[i];
    18             av[i]=sum/(i+1);
    19         }
    20         double max_w=-1;
    21         for(int i=0;i<n;i++){
    22             cin>>t[i];
    23             if(i!=0){
    24                 if(t[i]-t[i-1]>max_w){
    25                     max_w=t[i]-t[i-1];
    26                     w[i]=max_w;
    27                 }else w[i]=max_w;
    28             }
    29             else {
    30                 max_w=t[0];
    31                 w[i]=max_w;
    32             }
    33         }w[n]=1312312313;//w[n]赋值很高
    34         
    35         int pos=0;double max_av=-1;//暴力枚举在i点睡着
    36         for(int i=0;i<=n;i++){
    37             if(w[i]<w[i+1]){
    38                 if(av[i]>max_av){
    39                     max_av=av[i];
    40                     pos=i;
    41                 }
    42             }
    43         }
    44 
    45         printf("%.6lf %.6lf
    ",w[pos],av[pos]);
    46     }return 0;
    47 }
  • 相关阅读:
    你认为做好测试计划工作的关键是什么?
    一套完整的测试应该由哪些阶段组成?
    你对测试最大的兴趣在哪里?为什么?
    如何测试一个纸杯?
    黑盒测试和白盒测试各自的优缺点
    在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?
    测试人员在软件开发过程中的任务
    软件测试分为几个阶段? 各阶段的测试策略和要求是什么?
    软件测试的策略
    软件产品质量特性
  • 原文地址:https://www.cnblogs.com/zjutlitao/p/3603472.html
Copyright © 2011-2022 走看看