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)