#include <iostream>
#include <string>
#include <algorithm>
#include <math.h>
#include <cstring>
#include <cstdio>
using namespace std;
int main() {
int n, count=0,max = 0;
cin >> n;
int s[100001];
//随机数获取
for (int i = 0; i < n; i++) {
cin >> s[i];
}
//升序排序
sort(s, s + n,less<int>());
//unique函数功能为去重并返回最后一个不重复元素的*指针
count = unique(s, s + n)-s;
max = s[count-1];
cout << max * (4 + 6) + n + count * 5;
system("pause");
return 0;
}
/*
* 这种做法也能AC,但容易发生栈溢出现象且过程中调用的资源太多
//类似p1059明明的随机数,楼层去重统计即可
int main()
{
int n, count = 0, max = 0;
cin >> n;
//辅助数组初始置为0,注意楼层数小于2*10^7
int s[100010], temp[20000001] = { 0 };
//随机数获取
for (int i = 0; i < n; i++) {
cin >> s[i];
}
//辅助数组统计重复值个数且以个数值为标准排序
for (int i = 0; i < n; i++) {
if (s[i] != 0)temp[s[i] - 1] += 1;
}
//统计去重后数据个数
for (int i = 0; i < 20000000; i++) {
if (temp[i] != 0) count++;;
}
//逆序查找最高楼层序号
for (int i = 20000000; i >= 0; i--) {
if (temp[i] != 0) {
max = i + 1;
break;
}
}
//从0层出发又回到0层
//时间消耗即为如下式子
cout << max * (4 + 6) + n + count * 5;
system("pause");
return 0;
}
*/
楼上是两段AC代码,虽然思路没有大的问题,但过程中遇到了几个问题,希望有人可以帮忙解决一下,感激不尽。
一是19行代码sort(s, s + n,less());没有添加第三个参数less()的话应该也是默认升序排序,但提交后只有第七个测试点正确,其余全是WA,不清楚其中原因
二是在编译环境为VS 2022时,无论是第一种还是第二种都有持续出现警告C6262。
第二种我根据提示分配10MB栈空间后依然不够,提交后虽然是AC,但内存空间飙到了70MB左右,有些惆怅,想知道遇到这样的问题该如何解决比较妥当,代码或IDE该做什么调整。