AC代码与思路
相比于最后一次TLE背包提交,加了以下这些
1 | for(int j=1;j<=x-sumYen;j++) { // 背包容量为钱,背包价值为生产力 |
1 | if(sumYen>x) |
主要思路是二分答案加背包dp
背包容量为钱,背包价值为能加工多少产品
通过背包dp让加工产品最大化
1 | // https://atcoder.jp/contests/abc374/tasks/abc374_e |
以下是错误提交记录与心路历程
这个程序实际上没啥太大问题,但是即便开long long minYen还是超范围溢出了。
这个题目再次证明了,二分的题目r不能设太大,一个是复杂度,还有一个是溢出。
1 | // https://atcoder.jp/contests/abc374/tasks/abc374_e |
原来两台机子都能用!那check()函数写起来是比较麻烦
1 | Both machines S_i and T_i can be used for process i. |
AC 64 个点 https://atcoder.jp/contests/abc374/submissions/58537475
加上了对于组合的判定
1 | // https://atcoder.jp/contests/abc374/tasks/abc374_e |
我怀疑是我的向上取整模版的问题
1 |
|
1 | 0 |
毫无疑问,0/782=0,你就算加ceil()也应该是0,但显然我们的模版出了问题。
哎,用系统ceil()提交了一遍,发现又WA了,和前面一模一样,只能说就这样吧,累了。
https://atcoder.jp/contests/abc374/submissions/58539387
1 | // https://atcoder.jp/contests/abc374/tasks/abc374_e |
引入了性价比概念,但发现连样例都过不了😂,还是要用dp。
1 | // https://atcoder.jp/contests/abc374/tasks/abc374_e |
将中间的判定改为了背包dp,果然这种通用做法就是应用性广泛且经过证明
// 就TLE了3个点 https://atcoder.jp/contests/abc374/submissions/58545771
1 | // https://atcoder.jp/contests/abc374/tasks/abc374_e |