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)
  • 相关阅读:
    项目原型设计
    项目选题报告 (基于云的胜利冲锋队)
    基于云的胜利冲锋队 团队团队展示
    团队作业第三次-项目原型设计
    团队作业第二次-项目选题报告
    团队作业第一次-团队团队展示
    周测、代码
    异常
    5.13重点
    接口
  • 原文地址:https://www.cnblogs.com/gerjcs/p/12932194.html
Copyright © 2011-2022 走看看