博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 1609[Usaco2008 Feb]Eating Together麻烦的聚餐【dp】
阅读量:5129 次
发布时间:2019-06-13

本文共 752 字,大约阅读时间需要 2 分钟。

设up[i][j]为第i位升序为j的最小修改数,down为降序

#include
#include
using namespace std;int n,a[30005],up[30005][4],down[30005][4];int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); up[i][3]=min(up[i-1][1],min(up[i-1][2],up[i-1][3]))+1; up[i][2]=min(up[i-1][1],up[i-1][2])+1; up[i][1]=up[i-1][1]+1; up[i][a[i]]--; down[i][1]=min(down[i-1][1],min(down[i-1][2],down[i-1][3]))+1; down[i][2]=min(down[i-1][2],down[i-1][3])+1; down[i][3]=down[i-1][3]+1; down[i][a[i]]--; } int ans=up[n][1]; for(int i=1;i<=3;i++) ans=min(ans,min(up[n][i],down[n][i])); printf("%d\n",ans); return 0;}

转载于:https://www.cnblogs.com/lokiii/p/8939230.html

你可能感兴趣的文章
kubernetes-批量删除Evicted Pods
查看>>
LeetCode 分类颜色
查看>>
元类补充-属性查找
查看>>
网络编程基础
查看>>
17.树的子结构
查看>>
js 加减乘除以及四舍五入 新写法
查看>>
Map去重,去重value相同的元素,保留key最小的那个值
查看>>
maven 学习---Maven依赖管理
查看>>
神州数码交换机端口隔离
查看>>
[搬运工系列]-JMeter(十二)处理Cookie与Session
查看>>
输出100-200之间的所有素数并求和程序
查看>>
栅栏里的葱
查看>>
log info
查看>>
word中如何将空格变成换行
查看>>
Python - 字符编码篇
查看>>
什么是分布式系统 一个分布式系统需要什么结构
查看>>
代理目的是监听,监听的目标是代理方法的参数
查看>>
CSS之定位,relative/absolute/fixed的用法
查看>>
php中一个"异类"语法: $a && $b = $c; 【转载】
查看>>
Rsync的配置与使用
查看>>