• HDU4968 Improving the GPA dfs


    题意:给你平均分数,让你给出可能的最大的gpa和最小的gpa

    解题思路:最开始因为误判了时间复杂度所以没敲,敲完1002以后发现一个dfs就可以解决了,枚举0 - 100000表示每个档次有多少科,最后算下总分是不是可能就行,dfs减枝会略微的快一点。

     1 // File Name: 1009.cpp
     2 // Author: darkdream
     3 // Created Time: 2014年08月19日 星期二 12时16分48秒
     4 
     5 #include<vector>
     6 #include<list>
     7 #include<map>
     8 #include<set>
     9 #include<deque>
    10 #include<stack>
    11 #include<bitset>
    12 #include<algorithm>
    13 #include<functional>
    14 #include<numeric>
    15 #include<utility>
    16 #include<sstream>
    17 #include<iostream>
    18 #include<iomanip>
    19 #include<cstdio>
    20 #include<cmath>
    21 #include<cstdlib>
    22 #include<cstring>
    23 #include<ctime>
    24 #define LL long long
    25 
    26 using namespace std;
    27 int num[10];
    28 int mxsco[] = {100,84,79,74,69};
    29 int misco[] = {85,80,75,70,60};
    30 double sc[] = {4.0,3.5,3.0,2.5,2.0};
    31 int sco,n,lsco;
    32 double ansmi,ansmx;
    33 void dfs(int k , int lnum,int mx,int mi,double tsc)
    34 {
    35     //printf("%d %d
    ",mx,mi);
    36     if(k == 5 )
    37     {
    38        //printf("%d %d
    ",mx,mi);
    39        if(lsco <= mx && lsco >= mi && lnum == 0 )
    40        {
    41          if(tsc < ansmi)
    42              ansmi = tsc;
    43          if(tsc > ansmx)
    44          {
    45             /* printf("%d %d
    ",mx,mi);
    46              for(int i = 0;i < 5;i ++)
    47                  printf("%d ",num[i]);
    48              printf("
    ");*/
    49              ansmx = tsc;
    50          }
    51        }
    52        return;
    53     }
    54     if(lsco < mi)
    55         return;
    56     for(int i = 0 ;i <= lnum ;i ++)
    57     {
    58         num[k] = i ; 
    59         dfs(k+1,lnum-i,mx+i*mxsco[k],mi+i*misco[k], tsc+i*sc[k]);       
    60     }
    61 }
    62 int main(){
    63    int T;
    64    scanf("%d",&T);
    65    while(T--)
    66    {
    67      scanf("%d %d",&sco,&n);
    68      lsco = sco*n;
    69      ansmi = 1e10;
    70      ansmx = -1e10;
    71      dfs(0,n,0,0,0.0);
    72      printf("%.4lf %.4lf
    ",ansmi/n,ansmx/n);
    73    }
    74 return 0;
    75 }
    View Code
    没有梦想,何谈远方
  • 相关阅读:
    Unity 网络通信以及buffer优化
    Unity 滑动列表ScrollRect制作
    Unity中一些辅助工具类
    一个欠揍的广告语
    翻译:使用 Asp.net mvc 15 分钟创建 Movie 数据库应用程序
    [转]如何查找.NET程序内存不断上涨的原因(CLRProfiler)
    [转载]SQL语句的解析过程
    [转]C#汉字转换拼音技术详解(高性能)
    adb devices 找不到设备的解决方法
    JS中对象object的复制
  • 原文地址:https://www.cnblogs.com/zyue/p/3923577.html
Copyright © 2020-2023  润新知