上海网站建设多少,广州冼村保利天御,网站访问量统计怎么做,各大网站收录链接#xff1a;
https://leetcode.cn/problems/triples-with-bitwise-and-equal-to-zero/
题意#xff1a;
模拟一个摩天轮#xff0c;四个舱#xff0c;每个舱最多四人#xff0c;给一个数组#xff0c;表示摩天轮每切换一次座舱会来多少人排队#xff08;人不会走…链接
https://leetcode.cn/problems/triples-with-bitwise-and-equal-to-zero/
题意
模拟一个摩天轮四个舱每个舱最多四人给一个数组表示摩天轮每切换一次座舱会来多少人排队人不会走。每进一个人会得到runningCost元每切换一次座舱花费boardingCost元。当切换到这个座舱时如果里面有人会都下来即上一轮进这个舱的人再到这个舱的时候就都出去了舱空了。
求进行几次切换赚的钱最多即使有人没下来也没关系如果没有利润为正方案返回-1
解
嗯模拟就好了判断是否有人等待计算赚到的钱-花费剩下的利润take
int takeup*boardingCost-(i1)*runningCost;up是上去的人数累积一下
第一次没删除检验数据用的cout直接超时了又写了个第二版给自己蠢晕
实际代码
int wait0,ans0,turn0,up0;int lgcustomers.size();for(int i0;ilg||wait0;i){int add0;if(ilg){addmin(waitcustomers[i],4);wait(customers[i]-add);}else{addmin(wait,4);wait-(add);}//coutaddendl;upadd;int takeup*boardingCost-(i1)*runningCost;//coutup waitendl;就是这个没注释if(takeans){anstake;turni1;}}return ans0?-1:turn;第二版循环只遍历完了数组剩下还在排队的人算两个结果
1.只上满舱四个人四个人上花费为t1
2.上完所有满仓再上剩下的人不满四个花费为t2
#includeiostream
#includebits/stdc.h
using namespace std;
int solve(vectorint customers, int boardingCost, int runningCost)
{int wait0,ans0,turn0,up0,take;int lgcustomers.size();for(int i0;ilg;i){int add0;addmin(waitcustomers[i],4);wait(customers[i]-add);//coutaddendl;upadd;takeup*boardingCost-(i1)*runningCost;//coutup waitendl;if(takeans){anstake;turni1;}}//couttakeendl;int t1(wait/4*4)*boardingCost-(wait/4)*runningCost;//coutt1endl;if(taket1ans){anstaket1;turnlg(wait/4);}if(wait%4!0){int t2t1wait%4*boardingCost-runningCost;//coutt2endl;if(taket2ans){anstaket2;turnlg(wait/41);}}return ans0?-1:turn;
}
int main()
{vectorint customers;int boardingCost,runningCost;int n;cinn;for(int f1;fn;f){int temp;cintemp;customers.push_back(temp);}cinboardingCostrunningCost;int anssolve(customers,boardingCost,runningCost);coutansendl;
}限制
n customers.length1 n 1050 customers[i] 501 boardingCost, runningCost 100