zoukankan      html  css  js  c++  java
  • ZOJ 3607 Lazier Salesgirl (枚举)

    Lazier Salesgirl
    Time Limit: 2 Seconds Memory Limit: 65536 KB
    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

    枚举

    #include <iostream>
    #include <string.h>
    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
    #include <algorithm>
    
    using namespace std;
    int n;
    int p[1005];
    int t[1005];
    int w;
    int main()
    {
        int t1;
        scanf("%d",&t1);
        while(t1--)
        {
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
                scanf("%d",&p[i]);
            int num1=0;
            int num2=100000;
            t[0]=0;
            for(int i=1;i<=n;i++)
            {
                scanf("%d",&t[i]);
                num1=max(num1,t[i]-t[i-1]);
                num2=min(num2,t[i]-t[i-1]);
            }
            int pos=1;
            double res=0;
            double ans;
            for(w=num2;w<=num1;w++)
            {
                int sum=0;int num=0;
                int time=w;
                for(int i=1;i<=n;i++)
                {
                    if(t[i]<=time)
                    {
                        sum+=p[i];
                        num++;
                        time=t[i]+w;
                    }
                    else
                    {
                        break;
                    }
                }
                double av=1.0*sum/num;
                if(res<av)
                {
                    res=av;
                    ans=w;
                }
    
            }
            printf("%.6f %.6f
    ",ans,res);
    
        }
        return 0;
    }
    
  • 相关阅读:
    三、Vue CLI-单页面
    width100%,设置padding或border溢出解决方法
    一、Linux平台部署ASP.NET、ASP.NET CORE、PHP
    二、Core授权-2 之.net core 基于Identity 授权
    一、doT.js使用笔记
    一、域名认证信息
    HB-打包
    一、模型验证CoreWebApi 管道方式(非过滤器处理)2(IApplicationBuilder扩展方法的另一种写法)
    python 写的几道题
    美团面试总结
  • 原文地址:https://www.cnblogs.com/dacc123/p/8228708.html
Copyright © 2011-2022 走看看