zoukankan      html  css  js  c++  java
  • [CF1286A] Garland

    Description

    有一个由 $ 1 $ - $ n $ 构成的排列,其中部分被删除(删除的元素由 $ 0 $ 代替),请用被删除的元素补全这个数列,使这个数列中相邻元素奇偶性不同的对数最少。(n le 100)

    Solution

    (f[i][j][0/1]) 表示用了 (i) 个奇数,(j) 个偶数,上一位是奇数或偶数时的最小值

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    const int N = 105;
    
    int f[N][N][2],a[N],n;
    
    signed main() {
        ios::sync_with_stdio(false);
        cin>>n;
        for(int i=1;i<=n;i++) cin>>a[i];
        memset(f,0x3f,sizeof f);
        f[0][0][0]=f[0][0][1]=0;
        for(int l=1;l<=n;l++) {
            for(int i=0;i<=l;i++) {
                int j=l-i;
                if(a[l]) {
                    if(a[l]&1) {
                        if(i>0) f[i][j][1]=min(f[i-1][j][0]+1,f[i-1][j][1]);
                    }
                    else {
                        if(j>0) f[i][j][0]=min(f[i][j-1][0],f[i][j-1][1]+1);
                    }
                }
                else {
                    if(i>0) f[i][j][1]=min(f[i-1][j][1],f[i-1][j][0]+1);
                    if(j>0) f[i][j][0]=min(f[i][j-1][0],f[i][j-1][1]+1);
                }
            }
        }
        /*for(int i=0;i<=n;i++) {
            for(int j=0;j<=n;j++) {
                cout<<f[i][j][0]<<"|"<<f[i][j][1]<<" ";
            }
            cout<<endl;
        }*/
        cout<<min(f[(n+1)/2][n/2][0],f[(n+1)/2][n/2][1]);
    }
    
  • 相关阅读:
    奇葩json结构解析--key是数字的json处理
    设计模式 -- 备忘录模式
    Django 模型
    Django 模板
    Django篇系列教程学习
    Django管理工具django-admin.py创建项目
    Django安装
    SQLite使用
    SQLite Manager插件安装与使用(firefox)
    CH-9 管理你的数据
  • 原文地址:https://www.cnblogs.com/mollnn/p/12815374.html
Copyright © 2011-2022 走看看