苏州做网站建设,商洛市住户和城乡建设局网站信息价,泉州app制作,云建网站话不多说#xff0c;直接看题#xff1a; 下面为分析#xff1a;显然#xff0c;我们要先合并最小的两堆#xff08;因为他们在后边也得被计算#xff0c;换句话#xff0c;我们独立的看#xff0c;某一堆的体力值为他自己重量*从现在到最后的次数#xff09;
因此直接看题 下面为分析显然我们要先合并最小的两堆因为他们在后边也得被计算换句话我们独立的看某一堆的体力值为他自己重量*从现在到最后的次数
因此我们可以用两个队列来做。下面我用图来描述过程其实可以直接优先队列 下面为AC代码 接题比较难 这个题跟上一个有异曲同工之妙我们可以用3个队列来维护最大长度用优先队列会超同时有个十分巧妙地点对于某个过程产生的蚯蚓我们让他们-前面时间增加的长度这样统一了基准巧妙地把某个过程产生的蚯蚓化为一开始就产生的。
#includebits/stdc.h
using namespace std;
#define int long long
int n,m,q,u,v,t,a[100010],ck;
bool cmp(int a,int b){return ab;
}
signed main(){scanf(%d%d%d%d%d%d,n,m,q,u,v,t);for(int i1;in;i){scanf(%d,a[i]);}sort(a1,an1,cmp);queueint q1;queueint q2;queueint q3;for(int i1;in;i){q1.push(a[i]);}for(int i1;im;i){int max1,a1-0x7f7f7f7f,a2-0x7f7f7f7f,a3-0x7f7f7f7f;if(!q1.empty()) a1q1.front();if(!q2.empty()) a2q2.front();if(!q3.empty()) a3q3.front();max1max(a1,max(a2,a3));if(max1a1) q1.pop();else if(max1a2) q2.pop();else q3.pop();max1(i-1)*q;if(i%t0) coutmax1 ;q2.push(max1*u/v-(i)*q);q3.push(max1-max1*u/v-(i)*q); }coutendl;while(!q1.empty()!q2.empty()!q3.empty()){int a1q1.front(),a2q2.front(),a3q3.front();if(a1max(a2,a3)){q1.pop();ck;if(ck%t0) couta1q*m ;continue;}if(a2max(a1,a3)){q2.pop();ck;if(ck%t0) couta2q*m ;continue;}if(a3max(a2,a1)){q3.pop();ck;if(ck%t0) couta3q*m ;continue;}}if(q1.empty()){while(!q2.empty()!q3.empty()){if(q2.front()q3.front()){ck;if(ck%t0)coutq2.front()q*m ;q2.pop();}else{ck;if(ck%t0)coutq3.front()q*m ;q3.pop();}}while(!q2.empty()q3.empty()){ck;if(ck%t0)coutq2.front()q*m ;q2.pop();}while(!q3.empty()q2.empty()){ck;if(ck%t0) coutq3.front()q*m ;q3.pop();}return 0;}if(q2.empty()){while(!q1.empty()!q3.empty()){if(q1.front()q3.front()){ck;if(ck%t0) coutq1.front()q*m ;q1.pop();}else{ck;if(ck%t0) coutq3.front()q*m ;q3.pop();}}while(!q1.empty()q3.empty()){ck;if(ck%t0) coutq1.front()q*m ;q1.pop();}while(!q3.empty()q1.empty()){ck;if(ck%t0) coutq3.front()q*m ;q3.pop();}return 0;}if(q3.empty()){while(!q2.empty()!q1.empty()){if(q2.front()q1.front()){ck;if(ck%t0) coutq2.front()q*m ;q2.pop();}else{ck;if(ck%t0) coutq1.front()q*m ;q1.pop();}}while(!q2.empty()q1.empty()){ck;if(ck%t0) coutq2.front()q*m ;q2.pop();}while(!q1.empty()q2.empty()){ck;if(ck%t0) coutq1.front()q*m ;q1.pop();}}
}