题解:P11214 【MX-J8-T2】黑洞
52pts
我们可以将空间分为
这样枚举每个坐标
100pts
然后考虑每个
我们先把
3
5 7 8
4 5 2
我们把它写成:
3 1
4 2
1 6
第一个是
这样的话答案就是每一个
我们将 long long 和初始时令
code
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=1e9+7;
int n;
int m[200005];
int a[200005];
int ans=1;
vector<pair<int,int>> vec;
int cnt[200005];
bool bo=0;
int cnt2;
int qpow(int x,int y)
{
if(y==0) return 1;
if(y==1) return x;
int res=qpow(x,y>>1);
return y&1?(res*res%mod*x%mod):(res*res%mod);
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++) cin>>m[i];
for(int i=1;i<=n;i++) cin>>a[i];
vec.resize(2*n);
for(int i=1;i<=n;i++)
{
vec[2*(i-1)]={a[i]-1,i};
vec[2*(i-1)+1]={m[i]-a[i],i};
cnt[i]=2;
}
cnt2=n;
sort(vec.begin(),vec.end());
int num,I;
for(int i=0;i<2*n&&!bo;i++)
{
num=vec[i].first;
I=vec[i].second;
cnt[I]--;
if(!cnt[I]) bo=1;
if(cnt[I]) cnt2--;
int res=num*qpow(2,cnt2)%mod;
ans=(ans+res)%mod;
}
cout<<ans;
return 0;
}