### 传送门

题意

从自己地方去掉一个数,对方从两堆数中各选一个数相乘,求乘积最大。注意有负数,可以先去掉最大最小的都试一下,然后从计算如何能使对方获得的最大乘积最小。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <cstdio>
#include <iostream>
#include <algorithm>
typedef __int64 ll;
using namespace std;
int n,m;
ll a[55],b[55];
ll s1,s2,ans=0;

int main()
{
cin >> n >> m;
for (int i=0;i<n;i++)
cin >> a[i];
for (int i=0;i<m;i++)
cin >> b[i];
sort(a,a+n);//a排序
sort(b,b+m);//b排序
s1=max(max(a[1]*b[0],a[n-1]*b[m-1]),max(a[1]*b[m-1],a[n-1]*b[0]));//去掉最小值
s2=max(max(a[0]*b[0],a[n-2]*b[m-1]),max(a[0]*b[m-1],a[n-2]*b[0]));//去掉最大值
ans=min(s1,s2);
cout << ans;
return 0;
}
更新于 阅读次数

请我喝[奶茶]~( ̄▽ ̄)~*

Amonologue 微信支付

微信支付

Amonologue 支付宝

支付宝

Amonologue 贝宝

贝宝