首页 > 其他分享 >lg8365题解

lg8365题解

时间:2023-02-14 16:47:57浏览次数:54  
标签:frac int 题解 mo long lg8365 加法 define

容易发现我们一定会先加后乘,使用调整法可以证明这个结论。
并且可以发现除了\(a_i\)值为\(1\)的数外(假设他们的\(a\)值和为\(s\)),其他的数最多只会选\(1\)个做加法操作(设如果其他的数都不做加法操作,答案为\(ans\))。并且所有\(a_i=1\)的数都会用加法。使用反证法可以证明
考虑枚举选择的做加法操作的数\(i\)。那么答案为\(ans*\frac{(b_i+s)}{a_i}\)。
事实上我们需要找到最大的\(\frac{(b_i+s)}{a_i}\)。使用分数类(维护二元组\((a,b)\)表示\(\frac{a}{b}\),\(a,b\)要开long long)即可。

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define mo 1000000007
#define N 1000010
int n,a[N],b[N];
int pw(int x,int y){
	int z=1;
	while(y){
		if(y&1)
			z=z*x%mo;
		x=x*x%mo;
		y>>=1;
	}
	return z;
}
signed main(){
	scanf("%lld",&n);
	for(int i=1;i<=n;i++)
		scanf("%lld",&a[i]);
	for(int i=1;i<=n;i++)
		scanf("%lld",&b[i]);
	int ans=1,v1,v2=1,av,s=1;
	for(int i=1;i<=n;i++){
		if(a[i]==1)
			s+=b[i];
		ans=ans*a[i]%mo;
	}
	av=ans*(s%mo)%mo;
	v1=s;
	for(int i=1;i<=n;i++){
		int va=(ans*pw(a[i],mo-2)%mo*(b[i]+s)%mo)%mo;
		if(a[i]!=1&&(b[i]+s)*v2>a[i]*v1){
			v1=b[i]+s;
			v2=a[i];
			av=va;
		}
	}
	printf("%lld\n",av);
}

标签:frac,int,题解,mo,long,lg8365,加法,define
From: https://www.cnblogs.com/celerity/p/17120033.html

相关文章

  • Vue项目在ie浏览器中显示空白的兼容性问题解决
    问题:在ie浏览器中页面报错:SCRIPT5022:SecurityError小编也不知道原因是什么,小编是尝试了以下几种方式才显示出来,这里建议大家试试看。1、下载软件包:@babel/polyfill执......
  • elementUI的table表格改变数据不更新问题解决
    问题原因:在Vue实例创建时,以及data赋值时editable并未声明,因此就没有被Vue转换为响应式的属性,自然就不会触发视图的更新。解决方案:1、给data赋值前把editable属......
  • C++奥赛一本通递推题解
    title:C++奥赛一本通刷题记录(递推)date:2017-11-08tags:一本通openjudegecategories:OIC++奥赛一本通刷题记录(递推)2017.11.8Bygwj1139177410斐波那契数列​​op......
  • C++奥赛一本通排序题解
    title:C++奥赛一本通刷题记录(排序)date:2017-11-16tags:一本通openjudegecategories:OIC++奥赛一本通刷题记录(排序)2017.11.16Bygwj1139177410都是拿STL水的…别......
  • C++奥赛一本通刷题高精度题解
    title:C++奥赛一本通刷题记录(高精度)date:2017-11-15tags:一本通openjudegecategories:OIC++奥赛一本通刷题记录(高精度)2017.11.15Bygwj1139177410大整数加法​......
  • CodeVs天梯黄金Gold题解
    title:CodeVs天梯之Golddate:2017-12-28tags:天梯CodesVscategories:OICodeVs天梯之Gold2018.01.04Bygwj2330x01贪心​​均分纸牌​​#include<iostream>usingname......
  • CodeVs天梯钻石Diamond题解
    title:CodeVs天梯之Diamonddate:2017-12-28tags:天梯CodesVscategories:OICodeVs刷题攻略之Diamond2018.1.14Bygwj11391774100x01最短路​​Car的旅行路线​​//1.......
  • CodeVs天梯白银Silver题解
    title:CodeVs天梯之Silverdate:2017-12-28tags:天梯CodesVscategories:OICodeVs天梯之Silver2017.12.18Bygwj11391774100x01排序​​明明的随机数​​#include<iost......
  • CodeVs天梯青铜Bronze题解
    CodeVs天梯之Bronze2017.12.18Bygwj11391774100x01整数处理​​最小数和最大数​​#include<iostream>#include<algorithm>usingnamespacestd;intmain(){intn;c......
  • CF446C DZY Loves Fibonacci Numbers 题解和加强
    简要题意https://www.luogu.com.cn/problem/CF446C给定一个长度为\(n\)的序列\(A\),要求支持两种操作:1给定区间\((l,r)\)对这个区间内的每个数,依次加斐波那契数列......