Fork me on GitHub

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\n", 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\n", 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\n", 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\n", 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)

 

posted @ 2020-05-21 17:37  GerJCS  阅读(378)  评论(0编辑  收藏  举报