zoukankan      html  css  js  c++  java
  • CCF 任务调度

    样例的示意图

     查了一圈,然后很烦,不想学习方法,好卡。查了一些题解,发现都是10分,30分先搁置的博客,最后翻到 堪称官方标称的思路 (CCF题目pat题目各大poj/hdoj好戏那个都没有标程,这里只是说思路很强,当然不要直接写,看会了,不一定下次还能想到,多看看其他做到一半疯了的博客,拓展思路,毕竟,我最开始毫无思路,多看看这些受到启发之后,排除错误思路最后对那个堪称标程的思路会有更深的理解,啊啊啊啊啊,好烦啊,不想看那么多思路。。头炸了,,值得么。。。中国人民银行股,大姑父说他考不上。。)感觉貌似左侧息肉一样,不舒服,像轻微岔气不舒服一样。哎

    发现搜索也行,

    这。。神仙。思路好多,。

    第一次代码

     1 #include<cstdio>
     2 int a[15];
     3 int b[15];
     4 int c[15];
     5 int d[15];
     6 int answer;
     7 int f(int i, int x, int y, int z);
     8 int main()
     9 {
    10     int n;
    11     scanf("%d", &n);
    12     for(int i = 0; i < n; i ++){
    13         scanf("%d %d %d %d", &a[i], &b[i], &c[i], &d[i]);
    14         if(b[i] < d[i])
    15            d[i] = b[i];
    16     }
    17 //    f(0, 0, 0, 0) = 0;
    18     f(0, 0, 0, 0) = 0;
    19 
    20 //    for(int i = 1; i < n; i ++)
    21 //        f(i, 0, 0, 0);
    22 
    23     printf("%d
    ", answer);
    24 }
    25 int f(int i, int x, int y, int z)
    26 {
    27 //    f(0, 0, 0, 0) = 0;
    28 //    for(int i = 0; i < n; i ++){
    29 //        f(i, x, y, z) = min{f(i-1,x+a[i],y,z),
    30 //                            f(i-1,x,y+a[i],z),
    31 //                            f(i-1,x+c[i],y,z+c[i]),
    32 //                            f(i-1,x,y+c[i],z+c[i]),
    33 //                            f(i-1,x+d[i],y+d[i],z+d[i])};
    34 //    }
    35 }
    36 
    37 //方式独占CPU
    38 //        CPU CPU
    39 //——————— CPU GPU
    40 //——————  CPU CPU GPU
    41 //——————————————————————————————————————————
    42 //
    43 //3
    44 //4 4 2 2
    45 //7 4 7 4
    46 //3 3 3 3
    47 //
    48 //
    49 //资源:
    50 //CPU 2
    51 //GPU 1
    52 //
    53 //min{f(i-1,x+a[i],y,z),
    54 //    f(i-1,x,y+a[i],z),
    55 //    f(i-1,x+c[i],y,z+c[i]),
    56 //    f(i-1,x,y+c[i],z+c[i]),
    57 //    f(i-1,x+d[i],y+d[i],z+d[i])}
    58 //
    59 //    f(1, 0, 2, 2) f(1, 2, 0, 2)
    60 //    f(2, 4, 6, 6) f(2, 6, 4, 6)
    61 //    f(3, 7, 6, 6) f(3, 6, 7, 6)

    过程2

     1 #include<cstdio>
     2 int a[15];
     3 int b[15];
     4 int c[15];
     5 int d[15];
     6 int answer;
     7 int f(int i, int x, int y, int z);
     8 int main()
     9 {
    10     int n;
    11     scanf("%d", &n);
    12     for(int i = 0; i < n; i ++){
    13         scanf("%d %d %d %d", &a[i], &b[i], &c[i], &d[i]);
    14         if(b[i] < d[i])
    15            d[i] = b[i];
    16     }
    17 
    18     printf("%d
    ", f(n, 0, 0, 0));
    19 }
    20 int f(int i, int x, int y, int z)
    21 {
    22     f(0, 0, 0, 0) = 0;
    23     f(i, x, y, z) =
    24     min{f(i-1,x+a[i],y,z),
    25         f(i-1,x,y+a[i],z),
    26         f(i-1,x+c[i],y,z+c[i]),
    27         f(i-1,x,y+c[i],z+c[i]),
    28         f(i-1,x+d[i],y+d[i],z+d[i])};
    29 }
    30 
    31 //方式独占CPU
    32 //        CPU CPU
    33 //——————— CPU GPU
    34 //——————  CPU CPU GPU
    35 //——————————————————————————————————————————
    36 //
    37 //3
    38 //4 4 2 2
    39 //7 4 7 4
    40 //3 3 3 3
    41 //
    42 //
    43 //资源:
    44 //CPU 2
    45 //GPU 1
    46 //
    47 //min{f(i-1,x+a[i],y,z),
    48 //    f(i-1,x,y+a[i],z),
    49 //    f(i-1,x+c[i],y,z+c[i]),
    50 //    f(i-1,x,y+c[i],z+c[i]),
    51 //    f(i-1,x+d[i],y+d[i],z+d[i])}
    52 //
    53 //    f(1, 0, 2, 2) f(1, 2, 0, 2)
    54 //    f(2, 4, 6, 6) f(2, 6, 4, 6)
    55 //    f(3, 7, 6, 6) f(3, 6, 7, 6)

    整不明白,阶乘。。。

     1 #include<cstdio>
     2 void f(int x);//从int改动到void,一个递归?递推,整不明白
     3 int main()
     4 {
     5     f(6);
     6 
     7 }
     8 void f(int x)
     9 {
    10     if(x == 1){
    11         f(x = 1);
    12         return;
    13     }
    14     f(x) = f(x - 1) * x;
    15 
    16 }

    疯了。。

     1 #include<cstdio>
     2 int f(int x);//从int改动到void,一个递归?递推,整不明白
     3 int a[100];
     4 int main()
     5 {
     6     f(6);
     7 
     8 }
     9 int f(int x)
    10 {
    11     if(x == 1){
    12         a[1] = 1;
    13         return 1;
    14     }
    15     f(x) = a[x - 1] * x;
    16 
    17 }

    最终https://stackoverflow.com/questions/55210555/error-lvalue-required-as-left-operand-of-assignment

     1 #include<cstdio>
     2 int f(int x);//从int改动到void,一个递归?递推,整不明白
     3 int a[100];
     4 int answer;
     5 int main()
     6 {
     7     f(5);
     8     printf("%d
    ", answer);
     9 
    10 }
    11 int f(int x)
    12 {
    13     if(x == 1){
    14         return 1;
    15     }
    16     answer = x * f(x - 1);
    17 
    18 }

    我绕晕了

     1 #include<cstdio>
     2 int a[15];
     3 int b[15];
     4 int c[15];
     5 int d[15];
     6 int answer;
     7 int f(int i, int x, int y, int z);
     8 int main()
     9 {
    10     int n;
    11     scanf("%d", &n);
    12     for(int i = 0; i < n; i ++)
    13     {
    14         scanf("%d %d %d %d", &a[i], &b[i], &c[i], &d[i]);
    15         if(b[i] < d[i])
    16             d[i] = b[i];
    17     }
    18 
    19 //        f(0, 0, 0, 0);
    20 
    21 }
    22 
    23 //    printf("%d
    ", f(n, 0, 0, 0));
    24 }
    25 int f(int i, int x, int y, int z)
    26 {
    27 
    28 //    for(int i = 0; i < n; i ++)
    29 //    {
    30 //
    31 //    }
    32     if(i == 0)
    33         return 0;
    34     else
    35     {
    36 //        answer = min{ f(i-1,x+a[i],y,z),
    37 //                    f(i-1,x,y+a[i],z),
    38 //                    f(i-1,x+c[i],y,z+c[i]),
    39 //                    f(i-1,x,y+c[i],z+c[i]),
    40 //                    f(i-1,x+d[i],y+d[i],z+d[i])};
    41 //        return answer;
    42         return min{max(x + a[i], y, z),
    43                    max(x, y + a[i], z),
    44                    max(x + c[i], y, z + c[i]),
    45                    max(x, y + c[i], z + c[i]),
    46                    max(x + d[i], y + d[i], z + d[i])}
    47     }
    48 }
    49 
    50 //int f(int i, int x, int y, int z)// 动态规划和递归
    51 //{
    52 //
    53 //    answer =
    54 //        min{f(i - 1, x + a[i], y, z),
    55 //            f(i - 1, x, y + a[i], z),
    56 //            f(i - 1, x + c[i], y, z + c[i]),
    57 //            f(i - 1, x, y + c[i], z + c[i]),
    58 //            f(i - 1, x + d[i], y + d[i], z + d[i])};
    59 //}
    60 
    61 //方式独占CPU
    62 //        CPU CPU
    63 //——————— CPU GPU
    64 //——————  CPU CPU GPU
    65 //——————————————————————————————————————————
    66 //
    67 //3
    68 //4 4 2 2
    69 //7 4 7 4
    70 //3 3 3 3
    71 //
    72 //
    73 //资源:
    74 //CPU 2
    75 //GPU 1
    76 //
    77 //f(i, x, y, z) = min{max(x + a[i], y, z),
    78 //                    max(x, y + a[i], z),
    79 //                    max(x + c[i], y, z + c[i]),
    80 //                    max(x, y + c[i], z + c[i]),
    81 //                    max(x + d[i], y + d[i], z + d[i])}
    82 //
    83 //    f(1, 0, 2, 2) f(1, 2, 0, 2)
    84 //    f(2, 4, 6, 6) f(2, 6, 4, 6)
    85 //    f(3, 7, 6, 6) f(3, 6, 7, 6)

    思路都给好了,写半天没写出来,嘎了。。

    哎。。我的代码能力好挫。。

     1 #include<cstdio>
     2 int a[15], b[15], c[15], d[15];
     3 int map[45][3];
     4 int main()
     5 {
     6     int n;
     7     scanf("%d", &n);
     8     for(int i = 1; i < n + 1; i ++)
     9     {
    10         scanf("%d %d %d %d", &a[i], &b[i], &c[i], &d[i]);
    11         if(b[i] < d[i])
    12             d[i] = b[i];
    13     }
    14     for(int i = 1; i < n; i ++){
    15         map[i][1] = map[i - 1][1] + a[i]
    16         map[i][2] = map[i - 1][2]
    17         map[i][3]
    18     }
    19 }
    20 
    21 方式独占CPU
    22         CPU CPU
    23 ——————— CPU GPU
    24 ——————  CPU CPU GPU
    25 
    26 3
    27 4 4 2 2
    28 7 4 7 4
    29 3 3 3 3
    30     f(0, 0, 0, 0) f(0, 0, 0, 0)
    31     f(1, 0, 2, 2) f(1, 2, 0, 2)
    32     f(2, 4, 6, 6) f(2, 6, 4, 6)
    33     f(3, 7, 6, 6) f(3, 6, 7, 6)

    先放弃了

     1 #include<cstdio>
     2 int a[15], b[15], c[15], d[15];
     3 int map[45][3];
     4 int main()
     5 {
     6     int n;
     7     scanf("%d", &n);
     8     for(int i = 1; i < n + 1; i ++)
     9     {
    10         scanf("%d %d %d %d", &a[i], &b[i], &c[i], &d[i]);
    11         if(b[i] < d[i])
    12             d[i] = b[i];
    13     }
    14     for(int i = 1; i < n; i ++){
    15         int j = i - 1;
    16         map[i][1] = map[j][1] + a[i]
    17         map[i][2] = map[j][2]
    18         map[i][3]
    19     }
    20 }
    21 3
    22 4 4 2 2
    23 7 4 7 4
    24 3 3 3 3
    25     f(0, 0, 0, 0) f(0, 0, 0, 0) f(0, 0, 0, 0) f(0, 0, 0, 0) f(0, 0, 0, 0)
    26     f(1, 4, 0, 0) f(1, 0, 4, 0) f(1, 0, 2, 2) f(1, 2, 0, 2) f(1, 2, 2, 2)
    27     f(2, 4, 6, 6) f(2, 6, 4, 6) f()
    28     f(3, 7, 6, 6) f(3, 6, 7, 6)
  • 相关阅读:
    C/C++多文件之间的变量定义
    PKU POJ 2186 Popular Cows 强连通分量
    重载函数
    ZOJ 2763 Prison Break
    201357 训练赛总结
    hdu 4467 Graph 构造
    201356 训练赛总结
    201353 NEERC 2012, Eastern subregional contest
    2013512 CF 183 总结
    一道动态规划
  • 原文地址:https://www.cnblogs.com/gerjcs/p/12932194.html
Copyright © 2011-2022 走看看