小埋再遇a+b+c问题

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 个赞

:rolling_on_the_floor_laughing::backhand_index_pointing_left::monkey:

image

初始化这么改

把l[0]和r[n+1]改为一个极小值

A,A,A,A,A,AC了

啊啊啊?不是我先说的吗