compile error:
answer.code: In function ‘int main()’:
answer.code:19:54: error: no matching function for call to ‘max(long long int, int&)’
19 | for(int i=2;i<n;i++) ans=max(a[i]+l[i-1]+r[i+1],ans);
| ^
In file included from /usr/include/c++/9/bits/char_traits.h:39,
from /usr/include/c++/9/ios:40,
from /usr/include/c++/9/istream:38,
from /usr/include/c++/9/sstream:38,
from…
你都define ll long long 了你为什么还要用long long?还有,建议你define int long long,只要把int main改为signed main就行
你一个是long long 型,一个是int 型的当然无法比较
#include <bits/stdc++.h>
#define int long long
using namespace std;
int a[100005], l[100005], r[100005];
int main(){
int t;
cin >> t;
while(t--){
int n,ans=0;
cin>>n;
memset(l,-1,sizeof(l));
memset(r,-1,sizeof(r));
for(int i=1;i<=n;i++) cin >> a[i];
for(int i=1;i<=n;i++) l[i]=max(l[i-1], a[i]+i);
l[0]=0;
a[n+1]=0;
ans=0;
for(int i=n;i>=1;i--) r[i]=max(r[i+1],a[i]-i);
for(int i=2;i<n;i++) ans=max(a[i]+l[i-1]+r[i+1],ans);
cout<<ans<<endl;
}
return 0;
}```
改成signed main
1 个赞
yht%%%
#include <bits/stdc++.h>
#define int long long
using namespace std;
int a[100005], l[100005], r[100005];
signed main(){
int t;
cin >> t;
while(t--){
int n,ans=0;
cin>>n;
memset(l,-1,sizeof(l));
memset(r,-1,sizeof(r));
for(int i=1;i<=n;i++) cin >> a[i];
for(int i=1;i<=n;i++) l[i]=max(l[i-1], a[i]+i);
l[0]=0;
a[n+1]=0;
ans=0;
for(int i=n;i>=1;i--) r[i]=max(r[i+1],a[i]-i);
for(int i=2;i<n;i++) ans=max(a[i]+l[i-1]+r[i+1],ans);
cout<<ans<<endl;
}
return 0;
}
```90
我再帮你找找错
1 个赞
初始化这么改
把l[0]和r[n+1]改为一个极小值
A,A,A,A,A,AC了
啊啊啊?不是我先说的吗