我都懒得写了!!!!!!!!
直接粘贴!!!!!
#include<iostream>
#include<algorithm>
using namespace std;
int a[105], b[105];
int main()
{
int n, m;// while (cin >> n >> m) {
cin >> n >> m;
for (int i = 0; i < n; i++)
cin >> a[i];
memset(b, -2e18, sizeof(b));//注意是-2e18!!!!!!
int t; int k;
for (int i = 0; i < m; i++)
{
cin >> t;
for (int j = 0; j < n; j++)
b[j]= max(b[j], a[j] * t);
//1 2 3 4 5 20 18
//2 14
// 2*1 2*2 2*3 2*4
// 14*1 14*2 14*3
//穷举吧..每个反正只能一对一的结合,然后
//只能一对一,然后连线一样都试验了一次= -
//每个可能的结果
//以a为基准..... 以a为基准每个b都乘了一遍
//对于,每个,b[i],我们
}
//当然不是按次序比较.....当然不是按次序比较
//数学不行的话直接暴力上去吧......真是的
//存进b里的当然不是tommy手里的灯笼....
//而是所有的a[i]*t里面所能可以达到的最大值
//这些,所有可能会达到的最大值,最后再取到第二个所能达到的最大值
//饿.我们只知道,对于每一个b,这个b所能达到的最大的有多大
//我们不放过每一个b的梦想,肯定会让所有b和a见过面之后,才能确定最适合他们的最大的是多少
//思路呢..可能简单的wa了之后卡在负数是关键吧(趴
//然后有个版本,负负正正有6种情况最后maxmaxmax的对了(((
//以及,咋个确定运算次数呢.. 100的话,100*100也才100000
//关键是数据量太小了(?
sort(b, b + n);
// 哦..... 错在这里....
//不放过每一个b,b是n个啊
cout << b[n - 2] << endl;
//}//谁给你的勇气???
////http://blog.youkuaiyun.com/nobleman__/article/details/79327283
////这个人竟然只是讨论了就完了= -强.
return 0;
}
但是上面的是错的.... 一个是long long
一个是b[105]吧...
然后m和n混了混了.....
b是n,是把b怎么样怎么样
以及....
for (int i = 0; i < n; i++)
{ cin >> a[i];
b[i]=-2e18;
}
{ cin >> a[i];
b[i]=-2e18;
}
memset(b,-2e18,sizeof(b))
竟然问题在这两行!!!
memset 中-1和0和你想象中的是一样的,但是其他的就不对了
(memset是按位的比如memset(a,1,sizeof(a))
所有的a都会变成1.6e7
(大概反正就是一千六百多万一般只用-1和0
其他可能会有出入因为它事实上不是a[i]=x这种操作
它运用了按位处理的骚操作 如果用别的,可以用完之后先输出一下观察一下情况
还有就是,sizeof不是一个函数而是一个一元运算符
再次感谢zj(鞠躬)
我饿了... 晚安