社区讨论

60pts WA on#5#7#8#9

P1080[NOIP 2012 提高组] 国王游戏参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mkfks3xf
此快照首次捕获于
2026/01/15 22:59
上个月
此快照最后确认于
2026/01/15 23:49
上个月
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
struct person
{
	long long l,r;
}p[1005];
bool cmp(person a,person b)
{
	return a.l/b.r<b.l/a.r;
}
struct node
{
	long long len,a[10005];
	node()
	{
		memset(a,0,sizeof a);
		len=1;
	};
};
void output(node x)
{
	for(int i = x.len;i >= 1;i--)
		cout<<x.a[i];
}
node operator*(node a,long long b)
{
	node c;
	c.len=a.len;
	for(int i = 1;i <= c.len;i++)
		c.a[i]=a.a[i]*b;
	for(int i = 1;i <= c.len;i++)
	{
		c.a[i]+=c.a[i-1]/10;
		c.a[i-1]%=10;
	}
	while(c.a[c.len+1])c.len++;
	return c;
}
node operator/(node a,long long b)
{
	node c;
	c.len=a.len;
	long long res = 0;
	for(int i = c.len;i >= 1;i--)
	{
		c.a[i]=(a.a[i]+res*10)/b;
		res=(a.a[i]+res*10)%b;
	}
	while(c.a[c.len]==0)
		c.len--;
	return c;
}
bool operator>(node a,node b)
{
	if(a.len!=b.len)return a.len>b.len;
	for(int i = 1;i <= a.len;i++)
		if(a.a[i]!=b.a[i])return a.a[i]>b.a[i];
	return 0;
}
node mul,maxn;
int main()
{
    ios::sync_with_stdio(0);
    int n;
    cin>>n;
    for(int i = 1;i <= n+1;i++)
    	cin>>p[i].l>>p[i].r;
	sort(p+2,p+n+2,cmp);
	mul.a[1]=1;
	mul=mul*p[1].l;
	for(int i = 2;i <= n+1;i++)
	{
		node y = mul/p[i].r;
		if(y>maxn)
			maxn=y;
		mul=mul*p[i].l;
	}
	output(maxn);
    return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...