2019雅礼集训 D10T1 数字重排 [DP]

Posted p-b-p-b

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019雅礼集训 D10T1 数字重排 [DP]相关的知识,希望对你有一定的参考价值。

题目描述:

技术分享图片

样例:

input:
5
5 5 10 17 23

output:
3

数据范围与约定:

技术分享图片


简单DP,不做解释,直接搬题解。

技术分享图片

标程:

#include<bits/stdc++.h>
using namespace std; 
const int N=1e5+5;
int n,a[N],m,s;
bitset<N>f,g;
int main(){
    freopen("sort.in","r",stdin);
    freopen("sort.out","w",stdout); 
    int i,j,k;
    scanf("%d",&n);
    for(i=1;i<=n;++i)scanf("%d",a+i);
    sort(a+1,a+n+1);
    if(a[1]!=a[2])printf("%d
",a[1]),exit(0);
    m=unique(a+1,a+n+1)-a-1;
    s=a[n];
    f[0]=1;
    for(i=s,j=m;i>=1;i--){
        if(a[j]==i){
            f[i]=1;
            for(k=a[j];k<=s;k+=a[j])g[k]=1;
            --j;
        }else if(((f>>i)&g).any())f[i]=1;
    }
    for(i=a[1]-1;!f[i];--i);
    printf("%d
",i);
}

以上是关于2019雅礼集训 D10T1 数字重排 [DP]的主要内容,如果未能解决你的问题,请参考以下文章

2019雅礼集训 D7T2 subsequence [DP,平衡树]

2019雅礼集训 D7T1 inverse [概率/期望,DP]

2019雅礼集训 D4T1 w [费用流]

「雅礼集训2018」树

「雅礼集训2018」树

「6月雅礼集训 2017 Day7」电报