题解:P13507 [OOI 2024] Three Arrays
P13507 [OOI 2024] Three Arrays 题解
子任务 3,5:
作者太菜了所以最开始只会
注意到如果
那么只需要枚举
代码:
#include <bits/stdc++.h>
#define int long long
#define pii pair<int,int>
#define mpi make_pair
#define fi first
#define se second
#define lb(x) (x&-x)
using namespace std;
const double eps=1e-4;
const int maxn=1e5+10;
const int maxm=5e5+10;
const int mod=1e9+7;
const int INF=1e18;
int n,d[maxn],l[maxn],r[maxn],a0,b0,ans;
pii p[maxn];
signed main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin >> n;
for (int i=1;i<=n;i++) cin >> d[i];
for (int i=1;i<=n;i++) cin >> l[i];
for (int i=1;i<=n;i++) cin >> r[i];
cin >> a0 >> b0;
for (int i=1;i<=n;i++) p[i]=mpi(l[i],r[i]);
sort(p+1,p+n+1);
int b=b0;
for (int i=1;i<=n;i++) ans=max(ans,min(p[i].fi,a0)+b),b=min(b,p[i].se);
ans=max(ans,b+a0);
cout << ans;
return 0;
}
正解:
发现
容易发现如果在第
代码:
#include <bits/stdc++.h>
#define int long long
#define pii pair<int,int>
#define mpi make_pair
#define fi first
#define se second
#define lb(x) (x&-x)
using namespace std;
const double eps=1e-4;
const int maxn=3e5+10;
const int maxm=5e5+10;
const int mod=1e9+7;
const int INF=1e18;
int n,d[maxn],l[maxn],r[maxn],a0,b0,ans=-INF;
pii p[maxn];
signed main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin >> n;
for (int i=1;i<=n;i++) cin >> d[i],d[i]+=d[i-1];
for (int i=1;i<=n;i++) cin >> l[i],l[i]-=d[i];
for (int i=1;i<=n;i++) cin >> r[i],r[i]-=d[i];
cin >> a0 >> b0;
for (int i=1;i<=n;i++) p[i]=mpi(l[i],r[i]);
sort(p+1,p+n+1);
int b=b0;
for (int i=1;i<=n;i++) ans=max(ans,min(a0,p[i].fi)+b),b=min(b,p[i].se);
ans=max(ans,a0+b);
cout << ans+d[n]*2 << "\n";
return 0;
}