64
76
Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
166
90
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n, cnt = 0, Max = 1, a[1000006];
int main(){
cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i];
}
for(int i = 1; i <= n; i++)
{
if(a[i]*a[i - 1] < 0){
cnt++;
Max = max(Max, cnt);
}
else
cnt = 1;
}
cout << Max;
}
Hãy giúp mọi người biết câu trả lời này thế nào?
2901
1855
`+` Bài này là bài toán quy hoạch động đoạn con cơ bản.
`+` Ta có: a đan dấu với b khi a*b<0.
`+` Nếu `a_i` đan dấu với `a_(i-1)` thì `l_i = l_(i-1)+1`, nếu không thì `l_i = 1`.
`+` Sau khi giải xong bài toán con đó, đáp án chính là giá trị lớn nhất của `l`.
`+` Code:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef int m;
#define int long long
m main()
{
int n;
cin >> n;
vector<int> a(n), l(n,1);
for (int& i:a) cin >> i;
for (int i=1; i<n; i++)
{
if (a[i]*a[i-1]<0) l[i] = l[i-1]+1;
}
cout << *max_element(l.begin(), l.end());
}
`+` Chạy code: Ảnh
$\\$
`@Daoanhviet96`
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin