zoukankan      html  css  js  c++  java
  • CodeForces 706C Hard problem

    题意:给你很多字符串,每个字符串可以翻转,翻转有价值,让你求满足递增的字符串,如果不行就-1

    思路:要么选,要么不选,线性dp

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn=1e5+7;
    const long long INF=0x3f3f3f3f3f3f3f3fLL;
    string str[maxn][2];
    int n,a[maxn];
    long long dp[maxn][2];
    string revers(string s)
    {
        string res=s;
        int i,len=res.length();
        for(i=0;i<len/2;++i)
            swap(res[i],res[len-1-i]);
        return res;
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
        }
        for(int i=1;i<=n;i++){
            cin>>str[i][0];
            str[i][1]=revers(str[i][0]);
        }
        memset(dp,INF,sizeof(dp));
        dp[1][0]=0;dp[1][1]=a[1];
        bool ok=true;
        for(int i=2;i<=n;i++){
            if(str[i][0]>=str[i-1][0]){
                dp[i][0]=min(dp[i][0],dp[i-1][0]);
    //            printf("test1
    ");
            }
            if(str[i][0]>=str[i-1][1]){
                dp[i][0]=min(dp[i][0],dp[i-1][1]);
    //            printf("test2
    ");
            }
            if(str[i][1]>=str[i-1][0]){
                dp[i][1]=min(dp[i][1],dp[i-1][0]+a[i]);
    //            printf("test3
    ");
            }
            if(str[i][1]>=str[i-1][1]){
                dp[i][1]=min(dp[i][1],dp[i-1][1]+a[i]);
    //            printf("test4
    ");
            }
            if(dp[i][0]==INF&&dp[i][1]==INF){
                ok=false;
                break;
            }
        }
    //    for(int i=1;i<=n;i++){
    //        printf("%d == %lld %lld
    ",i,dp[i][0],dp[i][1]);
    //    }
        if(!ok)puts("-1");
        else printf("%I64d
    ",min(dp[n][0],dp[n][1]));
        return 0;
    }
  • 相关阅读:
    Django Form组件的扩展
    Python TCP与UDP的区别
    Python三次握手和四次挥手
    网络基础之网络协议
    Python 类方法、实例方法、静态方法的使用与及实例
    python深浅拷贝
    2021牛客寒假算法基础集训营1 题解
    01 Trie 专题
    MOTS:多目标跟踪和分割论文翻译
    牛客巅峰赛S2第6场题解
  • 原文地址:https://www.cnblogs.com/lalalatianlalu/p/8455943.html
Copyright © 2011-2022 走看看