【BZOJ】1609: [Usaco2008 Feb]Eating Together麻烦的聚餐

news/2024/8/26 7:25:17

【算法】动态规划

【题解】DP有个特点(递推的特点),就是记录所有可能状态然后按顺序转移。

最优化问题中DP往往占据重要地位。

f[i][j]表示前i头奶牛,第i头改为号码j的最小改动数字,这样每头奶牛改为哪个编号的方案全部记录了,转移可以保证最优。

正反各做一次。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=30010;
int n,f[maxn][4],a[maxn];
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    f[0][1]=f[0][2]=f[0][3]=0;
    for(int i=1;i<=n;i++)
    {
        f[i][1]=f[i-1][1]+(a[i]!=1);
        f[i][2]=min(f[i-1][1],f[i-1][2])+(a[i]!=2);
        f[i][3]=min(min(f[i-1][1],f[i-1][2]),f[i-1][3])+(a[i]!=3);
    }
    int ans=min(min(f[n][1],f[n][2]),f[n][3]);
    f[n+1][1]=f[n+1][2]=f[n+1][3]=0;
    for(int i=n;i>=1;i--)
    {
        f[i][1]=f[i+1][1]+(a[i]!=1);
        f[i][2]=min(f[i+1][1],f[i+1][2])+(a[i]!=2);
        f[i][3]=min(min(f[i+1][1],f[i+1][2]),f[i+1][3])+(a[i]!=3);
    }
    ans=min(ans,min(f[1][1],min(f[1][2],f[1][3])));
    printf("%d",ans);
    return 0;
}
View Code

 

转载于:https://www.cnblogs.com/onioncyc/p/7212379.html


http://www.niftyadmin.cn/n/3745539.html

相关文章

vue el-drawer修改宽度

<el-drawer title"我是标题" :visible.sync"drawer" :direction"direction" :before-close"handleClose" :size"size"><span>我来啦!</span></el-drawer>在data里设置 size:50%,完结撒花&#xf…

vue 路由懒加载 报错 Loading chunk * failed 组件加载不出来

跳转对应的路由&#xff0c;无法跳转&#xff0c;打开控制太发现报错&#xff0c;查看网络发现对应的组件没有获取到&#xff0c;而且获取时间只有4ms就停止获取了&#xff0c;谷歌不会报这样的错误&#xff0c;但是edge会&#xff0c; 解决方法(不一定有用)&#xff1a;给请求…

MySQL数据库-pymysql模块操作数据库

pymysql模块是python操作数据库的一个模块 connect()创建数据库链接,参数是连接数据库需要的连接参数使用方式&#xff1a;  模块名称.connect()  参数&#xff1a;  host数据库ip  port数据库端口  user数据库用户名  passwd数据库密码  db数据库名称 charset数…

小程序循环出来的数据最后一行不要border

.opterList:last-child {border-bottom: none; }在命名后面加last-child&#xff1b; 然后设置border-botton为none 完结撒花&#xff01;

kubernetes 1.8 安装脚本之ETCD

本次使用环境為&#xff1a;CentOs 7.3Etcd v3.2.9IP组件192.168.2.11etcd1192.168.2.12etcd1192.168.2.13etcd1192.168.2.1宿主机每个虚拟机已经提前安装好了etcd脚步在宿主机上运行&#xff0c;宿主机需要无密ssh各服务器。宿主机需要安装cfsslkubernetes 1.8 安装脚本一共有…

小程序点击复制按钮,复制单号

wxml&#xff1a; <view class"fromItem"><view class"fromLable">退货单号</view><view class"fromValues">{{orderDetail.returnNo}}<view class"copy" bindtap"copyText" data-key"{{o…

钉钉开发系列(二)结构封装

钉钉的每个API接口返回的数据都包含有ErrCode和ErrMsg&#xff0c;由此我们想到可以使用基类来定义&#xff0c;之后的其他数据以继承的方式来达成。所以我们定义一个结果基类。 namespace DDSDK {public class ResultPackage{/// <summary>/// 错误码/// </summary&g…

MFC 带Ribbonbar的窗口 实现全屏和取消全屏

void CMainFrame::FullScreen(){ m_wndRibbonBar.ShowWindow(SW_HIDE);//隐藏工具栏 m_wndStatusBar.ShowWindow(SW_HIDE);//隐藏状态栏 m_menuMainWnd GetMenu(); //隐藏菜单栏 SetMenu(NULL); // 保存以前的位置信息 …