听说灌水区人多,能帮我看看P2827蚯蚓为什么会·T
  • 板块灌水区
  • 楼主songzhihan2010
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/7/9 21:11
  • 上次更新2024/7/10 08:07:14
查看原帖
听说灌水区人多,能帮我看看P2827蚯蚓为什么会·T
910357
songzhihan2010楼主2024/7/9 21:11

按正解写的,不知为何T了 只剩70pts

#include<bits/stdc++.h>
#pragma GCC 9 optimize("O1")
#pragma GCC 9 optimize("O2")
#pragma GCC 9 optimize("O3")
#pragma GCC 9 optimize("Ofast")
using namespace std;
typedef long long ll;
inline ll read(){
	ll x=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){
		if(ch=='-'){
			f=-1;
		}
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		x=x*10+ch-'0';
		ch=getchar();
	}
	return x*f;
}
inline void write(ll q){
	if(q>9) write(q/10);
	putchar(q%10+'0');
}
const int N=1e5+10;
ll n,m,u,v,t,q,a[N],now,x,y,k;
queue<ll> q1,q2,qq;
inline bool cmp(ll x,ll y){
	return x>y;
}
signed main(){
	n=read();
	m=read();
	q=read();
	u=read();
	v=read();
	t=read();
	for (int i=1;i<=n;i++){
		a[i]=read();
	}
	sort(a+1,a+1+n,cmp);
	for (int i=1;i<=n;i++){
		qq.push(a[i]);
	}
//	if(q==0){
		for (int i=1;i<=m;i++){
			now=0;
			if(!qq.empty())now=qq.front();
			if(now>q1.front()&&now>q2.front()&&!qq.empty()){
				qq.pop();
			} else if(q1.front()>q2.front()){
				now=q1.front();
				q1.pop();
			} else {
				now=q2.front();
				q2.pop();
			}
			now+=q*(i-1);
			if(i%t==0){
				write(now);
				printf(" ");
			}
			x=1ll*now*u/v;
			y=now-x;
			q1.push(x-q*i);
			q2.push(y-q*i);
		}
		ll i=0;
		puts("");
		while(!qq.empty()||!q1.empty()||!q2.empty()){
			k=0;
			now=0;
			if(!qq.empty()){
				now=qq.front();
				k=1;
			} 
			if(!q1.empty()){
				if(q1.front()>now){
					k=2;
					now=q1.front();
				}
			}
			if(!q2.empty()){
				if(q2.front()>now){
					k=3;
					now=q2.front();
				}
			}
			i++;
			if(i%t==0){
				write(now+q*m);
				printf(" ");
			}
			if(k==1) qq.pop();
			else if(k==2) q1.pop();
			else if(k==3) q2.pop();
		}
//	}
}
2024/7/9 21:11
加载中...