AtCoder Beginner Contest 125

A,B两题太水了,就不写了。

C - GCD on Blackboard

题意:给定n个数,每次可以替换一个数,求n个数的最大公因数。

思路:求一遍前缀后缀gcd再枚举

#include
using namespace std;
int a[100005];
int pre[100005],bk[100005];
int main(){
	int n;
	scanf("%d",&n);
	for(int i=0;i=0;i--)
		bk[i]=__gcd(bk[i+1],a[i]);
	int ans=0;
	for(int i=0;i

D - Flipping Signs

题意:给定n个数,每次可以使得ai和ai+1变成相反数,求能使得n个数的和最大,并求出最大值。

思路:记录负数的个数,如果是偶数,则可以全部化为正数,如果为奇数,这选择绝对值最小的一个,最后sum-=2*minn;

#include
using namespace std;
int main(){
	int n,x;
	long long sum=0;
	scanf("%d",&n);
	int f=0,mn=1e9+1;
	for(int i=0;i

 

你可能感兴趣的:(AtCoder Beginner Contest 125)