• 复习时间


    此博客链接:https://www.cnblogs.com/ping2yingshi/p/12329156.html

    复习时间(57min)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2078

    Problem Description
    为了能过个好年,xhd开始复习了,于是每天晚上背着书往教室跑。xhd复习有个习惯,在复习完一门课后,他总是挑一门更简单的课进行复习,而他复习这门课的效率为两门课的难度差的平方,而复习第一门课的效率为100和这门课的难度差的平方。xhd这学期选了n门课,但是一晚上他最多只能复习m门课,请问他一晚上复习的最高效率值是多少?
     
    Input
    输入数据的第一行是一个数据T,表示有T组数据。
    每组数据的第一行是两个整数n(1 <= n <= 40),m(1 <= m <= n)。
    接着有n行,每行有一个正整数a(1 <= a <= 100),表示这门课的难度值。
     
    Output
    对于每组输入数据,输出一个整数,表示最高效率值。
     
    Sample Input
    2
    2 2
    52
    25
    12
    5
    89
    64
    6
    43
    56
    72
    92
    23
    20
    22
    37
    31
    Sample Output
    5625
    8836
    题解:
            此题特别考验语文功底,也许你前面浪费了据多时间,把思路用记事本或者纸记录下来,按照写的公式,各种情况赋值,当把题目值代入你算的公式里,你突然发现不对,哈哈哈,不对就对了。
            注意:题目中给的m是一晚上最多只能复习m门课,这句话意思是也可以不复习m门课,比如只复习一门就睡大觉(结果也是每天只复习一门就睡觉了)。
           方法:找难度最小的值。
           思路:题目问他一晚上复习的最高效率值是多少?而选的n门课中,一晚上最多只能复习m门课,按照题目给的效率公式,我们可以用数字表示出来效率公式:
    n=m=2
    1 a 52
    2 b  25
    
    a>b
    (a-b)2=b1      27*27
    (100-a)2=a1   48*48
    max=a1+b1 
    
    n=3 m=2
    1 a 
    2 b
    3 c
    
    从大到小排序  a>b>c
    
    a,b a,c b,c
    
    
    n=3 m=3
    
    a,b,c
    (100-a)2=a1
    (a-b)2=b1 --->(100-b)2=b2
    (b-c)2=c1 
    (100-b)2=b2
    max=a1+b2+c1
    n=40 m=26
    
    a-z 
    max=(100-a)2+(100-b)2+(100-c)2+...+(100-y)2+(y-z)2<(100-z)2    公式1

    但是复习多门课的效率和比只复习难度最小的一门课的效率低,即多门效率的和比100减去最小难度的平方的值小。这个也是我百度得来的,具体为啥以上公式1比100减去最小难度的平方值小,数学还没有证明出来。

    代码如下:

    #include<stdio.h>
    #include<math.h>
    #include<stdlib.h>
    #include<string.h>
    
    int main(void)
    {
        int t;
        scanf_s("%d", &t);
        while (t>0)
        {
            int N;
            int M;
            scanf_s("%d %d", &N, &M);
            int i;
            int min=100;
            int a;
            for (i = 0; i < N; i++)
            {
                scanf_s("%d", &a);
                if (min > a)
                    min = a;
            }
            
            printf("%d\n",(100-min)*(100-min));
            t--;
        }
        return 0;
    }
     
    出来混总是要还的
  • 相关阅读:
    BZOJ1143: [CTSC2008]祭祀river
    接口自动化测试平台-接入持续集成jenkins
    mac OS npm 安装/卸载失败 权限问题解决方案
    初入React源码(一)
    初入React源码(一)
    mac OS git关联github
    重识TCP/IP协议族与HTTP基础
    重识TCP/IP协议族与HTTP基础
    Visual Studio Code mac OS 安装 中文简体语言包
    C#加密类
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/12329156.html
Copyright © 2020-2023  润新知