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;
    }
    
  • 相关阅读:
    Reloading Java Classes 301: Classloaders in Web Development — Tomcat, GlassFish, OSGi, Tapestry 5 and so on Translation
    Chapter 6 -- Caches
    SVN OPS发布总结
    Chapter 5 -- ImmutableCollections
    差点掉坑,MySQL一致性读原来是有条件的
    PHP实现的一个时间帮助类
    H5拍照、选择图片上传组件核心
    Webpack + Vue 多页面项目升级 Webpack 4 以及打包优化
    javascript-函数表达式
    javascript遍历方法总结
  • 原文地址:https://www.cnblogs.com/dacc123/p/8228708.html
Copyright © 2011-2022 走看看