两道dp——ucf 2017

Posted zsbenn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两道dp——ucf 2017相关的知识,希望对你有一定的参考价值。

G——直接把每种物品拆成一个个的,就可以用线性dp扫一次做完

/*
直接拆成一个一个的
dp[i][j]表示用j次机会把前i个拿下的概率
初始状态:dp[i][i]=dp[i-1][i-1]*p[i]
dp[i][j]=dp[i-1][j-1]*p[i]+dp[i][j-1]*(1-p[i]) 
*/
#include<bits/stdc++.h>
using namespace std;

int n,tot;
double p[3000],dp[2][20000];

int main(){
    int t;cin>>t;
    while(t--){
        memset(dp,0,sizeof dp);
        tot=1;
        cin>>n;
        for(int i=1;i<=n;i++){
            int k;
            double x;
            cin>>k>>x;
            for(int j=tot;j<=tot+k-1;j++)
                p[j]=x;
            tot+=k;
        }
        int a;cin>>a;
        tot--;
        for(int i=0;i<=a;i++)
            dp[0][i]=1; 
        int cur=1;
        for(int i=1;i<=tot;i++){
            for(int j=i;j<=a;j++){
                dp[cur][j]=dp[cur^1][j-1]*p[i];
                if(j!=i)dp[cur][j]+=dp[cur][j-1]*(1-p[i]);
            }
            cur^=1;
            //memset(dp[cur],0,sizeof dp[cur]);
        }
        if(tot>a)puts("0.000");
        else printf("%.3lf\n",dp[cur^1][a]);
    }
}

H——暴力lis

/*
pre[i][j]表示以i为结尾长度为j的lis的最右端起点
dp[i]=max(j+dp[pre[i][j]-1],dp[i-1]) 
*/ #include<bits/stdc++.h> using namespace std; #define N 205 int n,a[N],dp[N],pre[N][N]; int main(){ int t;cin>>t; while(t--){ cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) pre[i][j]=0; for(int i=1;i<=n;i++) pre[i][1]=i; for(int i=1;i<=n;i++) for(int j=i-1;j>=1;j--) if(a[i]>a[j]){ pre[i][2]=j;break; } for(int k=3;k<=n;k++){//长为k的lis for(int i=1;i<=n;i++) for(int j=i-1;j>=1;j--) if(a[i]>a[j]){ pre[i][k]=max(pre[i][k],pre[j][k-1]); } } /* for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) cout<<pre[i][j]<<" "; puts(""); } puts("");*/ for(int k=1;k<=n;k++){ memset(dp,0,sizeof dp); for(int i=1;i<=n;i++){ dp[i]=dp[i-1]; for(int j=k;j<=n;j++) if(pre[i][j]!=0) dp[i]=max(dp[i],dp[pre[i][j]-1]+j); } if(k==n)cout<<dp[n]<<\n; else cout<<dp[n]<<" "; } } }

 

以上是关于两道dp——ucf 2017的主要内容,如果未能解决你的问题,请参考以下文章

UCF Local Programming Contest 2017(2020-04-06)

2017 9 21

2020.04.06 UCF Local Programming Contest 2017

2017 9 22

UCF Local Programming Contest 2017训练联盟周赛

两道很好的dp题目4.29考试