zoukankan      html  css  js  c++  java
  • POJ 3671 Dining Cows (DP)

    题目大意:给你一串只有1,2的数字,让你改变最少的次数,让这个序列变成非递减的。

    思路:动态规划,判断分界点,开一个dp[30010][2]的数组,其中dp[i][j]表示把第i个数改成j最少要花多少次
    那么状态转移方程就列出来了:
    令a=1 j!=a[i]
    0 j==a[i]
    那么dp[i][1]=dp[i-1][1]+a;
    dp[i][2]=min(dp[i-1][1],dp[i-1][2])+a;


    #include <iostream>
    
    using namespace std;
    
    int dp[30010][2];
    
    int main ()
    {
        int n;
        cin>>n;
        for( int i=1; i<=n; i++ )
        {
            int a,b;
            cin>>a;
            b=(a==1?0:1);
            dp[i][1]=dp[i-1][1]+b;
            b=!b;
            dp[i][2]=min(dp[i-1][1], dp[i-1][2]) +b;
        }
        cout<<min(dp[n][1], dp[n][2])<<endl;
        return 0;
    }
    



    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    场景调研
    12.8
    12.7
    12.6
    12.5
    12.4
    12.3
    重启oracle数据库的操作方法
    oracle创建dblink方法
    SQL*Loader 详解
  • 原文地址:https://www.cnblogs.com/wanglaoda/p/4937147.html
Copyright © 2011-2022 走看看