LGOJ P1966 line up matches

LGOJ P1966 line up matches

Given two arrays, one for for the adjacent elements to move such that:
\ [\ SUM (a_i-B_i) ^ 2 \]
minimum.
Modification made to the original formula:
\ [\ SUM (a_i ^ 2 ^ + B_i 2-2a_ib_i) \\ \\ \\ = \ ^ 2 + SUM a_i \ ^ 2 -2 B_i SUM \ SUM a_ib_i \]
seeking \ (( \ sum (a_ib_i) ^ 2) _ {min} \) i.e. seeking \ ((\ sum a_ib_i) _ {max} \)

By the rearrangement inequality:
\ [a_1b_n a_2b_ {+} +. 1-n-a_3b_ {n-2} + ... +-a_nb_1 \ A_ Leq P_1} {+} Q_1 A_ B_ {} {P_2 Q_2 B_ {} + {A_ P_3 } b_ {q_3} + ... + a_ {p_n} b_ {q_n} \ leq a_1b_1 + a_2b_2 + a_3b_3 + ... + a_nb_n, \\ \ forall i <j \ in [1, n], a_i <a_j, b_i <b_j \]
that is less than the reverse and the scrambled sequence and less than we require is to a minimum sequence number to a relatively ordered b adjacent elements needs to be exchanged.

- To be continued ......

#include<bits/stdc++.h>
#define ll long long 
using namespace std;
const ll N=1000005,mod=99999997;
inline ll read()
{
    char c=getchar();ll x=0;
    for(;!isdigit(c);c=getchar());
    for(;isdigit(c);c=getchar())
        x=x*10+c-'0';
    return x;
}
ll n,c[N];
ll cnt;
ll ls[N];
struct L
{
    int val,ind;
};

L l1[N],l2[N];
inline bool cmp(L i,L j)
{
    return i.val<j.val;
}

void mgs(ll l,ll r)
{
    if(l==r)return;
    ll mid=(l+r)/2;
    mgs(l,mid);
    mgs(mid+1,r);
    ll i=l,j=mid+1,k=l;
    while(i<=mid&&j<=r)
    {
        if(c[i]>c[j])
        {
            ls[k++]=c[j++];
            cnt=(cnt+mid-i+1)%mod;
        }
        else
        {
            ls[k++]=c[i++];
        }
    }
    while(i<=mid)ls[k++]=c[i++];
    while(j<=r)ls[k++]=c[j++];
    for(ll i=l;i<=r;i++)c[i]=ls[i];
}


int main()
{
    //freopen("C:\\Users\\Administrator\\Downloads\\testdata (9).in","r",stdin);
    cin>>n;
    for(ll i=1;i<=n;i++)l1[i].ind=i,l1[i].val=read();
    for(ll i=1;i<=n;i++)l2[i].ind=i,l2[i].val=read();
    sort(l1+1,l1+n+1,cmp);
    sort(l2+1,l2+n+1,cmp);
    for(ll i=1;i<=n;i++)c[l1[i].ind]=l2[i].ind;
    
    mgs(1,n);
    cout<<cnt;
    
    return 0;   
}

Guess you like

Origin www.cnblogs.com/kion/p/11861920.html