70分求助,WA 6,9,10 QAQ
查看原帖
70分求助,WA 6,9,10 QAQ
467906
Anyakwi楼主2022/7/20 16:32
#include<bits/stdc++.h>
using namespace std;

const int maxn=1e4+5;

int n;

struct node{
	int l,r;
}t[maxn];

bool cmp(node a,node b)
{
	return a.l/b.r<b.l/a.r;
}

int sum[maxn<<2];
int len;
void muti(int x)
{
	int tmp=0;
	//cout<<x<<" ";
	//for(int i=len;i;i--)cout<<sum[i];cout<<endl;
	for(int i=1;i<=len;i++)
	{
		sum[i]*=x;
		sum[i]+=tmp;
		tmp=sum[i]/10;
		sum[i]%=10;
	}
	while(tmp) sum[++len]=tmp%10,tmp/=10;
	//for(int i=len;i;i--)cout<<sum[i];cout<<endl;
}

int ans[maxn<<2],lena;
void cut(int x)
{
	lena=len;
	memset(ans,0,sizeof(ans));
	int res=0;
	for(int i=lena;i;i--)
	{
		ans[i]=(res*10+sum[i])/x;
		res=(res*10+sum[i])%x;
	}
	while(ans[lena]==0&&lena>1) lena--;
}

int lmax;
int amax[maxn<<2];
void great(){
	if(lmax<lena)
	{
		lmax=lena;
		for(int i=1;i<=lena;i++) amax[i]=ans[i];
		return;
	}
	if(lmax==lena)
	{
		for(int i=lena;i;i--)
		{
			if(amax[i]<ans[i])
			{
				for(int j=1;j<=lena;j++) amax[j]=ans[j];
				return;
			}
		}
	}
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	
	cin>>n;n++;
	for(int i=1;i<=n;i++) cin>>t[i].l>>t[i].r;
	
	sort(t+2,t+1+n,cmp);
	sum[++len]=t[1].l;
	
	for(int i=2;i<=n;i++)
	{
		cut(t[i].r);
		//for(int j=len;j;j--) cout<<sum[j];cout<<" ";
		//for(int j=lmax;j;j--) cout<<amax[j];cout<<endl;
		great();
		//cout<<lmax<<endl; 
		muti(t[i].l);
	}
	for(int i=lmax;i;i--) cout<<amax[i];
	return 0;
}
2022/7/20 16:32
加载中...