zoukankan      html  css  js  c++  java
  • P4267 [USACO18FEB]Taming the Herd

    一道很好的dp题。

    看到数据规模和题目不难想到dp瞎搞。方程也很容易,

    f[i][j] 表示在前 i 个里面经历 j 次出逃可以取到最少的修改数

    难度是预处理和转移。想到以每一次逃跑从什么时候开始作为决策,那么就要预处理从 i时刻 到 j时刻 逃跑一次的修改次数

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    const int MAXN = 1e2 + 10;
    
    int N, a[MAXN];
    int f[MAXN][MAXN], cnt[MAXN][MAXN];
    
    int main()
    {
        cin>>N;
        for(int i = 1; i <= N; i++) scanf(" %d", &a[i]);
    
        for(int i = 1; i <= N; i++){
            int tmp = 0;
            for(int j = i; j <= N; j++) {
                if(a[j] != j - i) ++tmp;
                cnt[i][j] = tmp;
            }
        }
        
        memset(f, 0x3f, sizeof(f));
        f[0][0] = 0;
        for(int i = 1; i <= N; i++)
            for(int j = 1; j <= i; j++)
                for(int k = 0; k < i; k++)
                    f[i][j] = min(f[i][j], f[k][j - 1] + cnt[k + 1][i]);
        for(int i = 1; i <= N; i++)
            printf("%d
    ", f[N][i]);
        return 0;
    }
  • 相关阅读:
    easyui
    applicationContext.xml xxx-servlet.xml
    response ,request编码
    json 处理
    webservice wsdl 生成服务
    springmvc 定时器
    ftp命令和scp命令
    Telnet、FTP、SSH、SFTP、SCP
    mysql 索引
    民科吧 见闻录
  • 原文地址:https://www.cnblogs.com/wsmrxc/p/9417973.html
Copyright © 2011-2022 走看看