zoukankan      html  css  js  c++  java
  • EOJ11月月赛

    EOJ·11月月赛

    题意:序列a[n]有多少种排列方式a'[n]使函数\(F=\sum_{1\le l \le r\le n}min_{l\le i \le r}a'[i]最小\)

    题解:简述一个EOJ官方题解。

    1.先假设a'的最小值唯一且为\(a'_i\)。那么i=1或i=n是最大化F的充要条件

    prove.希望包含最小值的区间的数量最小,当且仅当i=1或者i=n时[l,r]的个数能取到最小值。

    2.有x个最小值,那方最小值的方案数是x+1(所有的数相同的情况除外)

    3.剩下是子问题

    4.也就是如果a中有m个不一样的树, b1,...,bm-1,bm

    ans=(b1+1)!...(bm-1+1)!*bm!

    tag:性质题

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=5e5+10;
    typedef long long ll;
    const int mod=1e9+7;
    ll a[maxn];
    int main()
    {
        ll n;scanf("%lld",&n);
    
        for(int i=1;i<=n;i++)
            scanf("%lld",a+i);
        sort(a+1,a+1+n);
        if(n==1){ printf("%lld",1ll);return 0;}
        ll num=1,ans=2;
        for(int i=2;i<n;i++)
        {
            if(a[i]==a[i-1]) num++,ans*=(num+1);
            else num=1,ans*=(num+1);
        }
        printf("%lld",ans);
    }
    
  • 相关阅读:
    alpha冲刺9
    alpha冲刺8
    alpha冲刺7
    alpha冲刺6
    团队作业——随堂小测(同学录)
    alpha冲刺5
    alpha冲刺4
    alpha冲刺3
    设计模式——桥接模式
    Java基础——关键字
  • 原文地址:https://www.cnblogs.com/zx0710/p/14022492.html
Copyright © 2011-2022 走看看