bzoj1222】的更多相关文章

[BZOJ1222][HNOI2001]产品加工 Description 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加工,所完成任务又会不同.某一天,加工厂接到n个产品加工的任务,每个任务的工作量不尽一样.你的任务就是:已知每个任务在A机器上加工所需的时间t1, B机器上加工所需的时间t2及由两台机器共同加工所需的时间t3,请你合理安排任务的调度顺序,使…
DP神题orz dp[i]表示机器1工作i小时,机器2工作dp[i]小时 那么对于每个任务: 选1:dp[i]=dp[i-a]; 选2:dp[i]=dp[i]+b; 选1+2:dp[i]=dp[i-c]+c; #include<stdio.h> #include<algorithm> #include<string.h> using namespace std; ]; int main(){ scanf("%d", &n); maxT=n*;…
注意时间都是 <= 5的.. #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<iostream> using namespace std; template<typename Q> Q read(Q& x) { static char c, f; ; c = getchar(), !isdigit(c);…
题目描述 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加工,所完成任务又会不同.某一天,加工厂接到n个产品加工的任务,每个任务的工作量不尽一样.你的任务就是:已知每个任务在A机器上加工所需的时间t1, B机器上加工所需的时间t2及由两台机器共同加工所需的时间t3,请你合理安排任务的调度顺序,使完成所有n个任务的总时间最少. 输入 输入共n+1行第1行为 n…
题解 怎么看都不像是个背包,直到我看了题解→_→, 第一次碰到这么奇怪的背包= = 定一个滚动数组$F_i$, $i$表示机器$a$用了$i$的时间, $F_i$表示机器$b$用了$F_i$的时间, 然后就直接可以进行滚动转移了... 真是开眼界啊QuQ 代码 #include<cstring> #include<algorithm> #include<cstdio> #define rd read() #define rep(i,a,b) for(register i…
题面描述 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加工,所完成任务又会不同.某一天,加工厂接到n个产品加工的任务,每个任务的工作量不尽一样.你的任务就是:已知每个任务在A机器上加工所需的时间t1, B机器上加工所需的时间t2及由两台机器共同加工所需的时间t3,请你合理安排任务的调度顺序,使完成所有n个任务的总时间最少. 输入格式 输入共n+1行第1行为…
题目描述 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加工,所完成任务又会不同.某一天,加工厂接到n个产品加工的任务,每个任务的工作量不尽一样.你的任务就是:已知每个任务在A机器上加工所需的时间t1, B机器上加工所需的时间t2及由两台机器共同加工所需的时间t3,请你合理安排任务的调度顺序,使完成所有n个任务的总时间最少. 输入 输入共n+1行第1行为 n…
奇怪的dp 思路清奇 dp[i][j]表示当前做完了i个任务,1机器花了j秒,2机器花费的最少时间,然后转移就行了. #include<bits/stdc++.h> using namespace std; ; struct data { int a, b, c; } a[N]; int n, ans = 0x3f3f3f3f, pre; ][N * ]; int main() { scanf("%d", &n); ; i <= n; ++i) { scanf…
Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 907  Solved: 587[Submit][Status][Discuss] Description 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加工,所完成任务又会不同.某一天,加工厂接到n个产品加工的任务,每个任务的工作量不尽一样.你的任务就是:已知每…
用f[i][j]表示完成前i个任务,在A机器上加工j小时时B机器上最少要工作多小时,转移就分为三种,即$f[i][j]=min(f[i-1][j-t1],f[i-1][j]+t2,f[i-t3]+t3)$,然后这个东西可以用类似于背包的方式优化到1维(注意要从大到小枚举) 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,a,b,c,s,ans,f[30005]; 4 int main(){ 5 scanf("%d&qu…