5196: [Usaco2018 Feb]Taming the Herd

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 78  Solved: 71
[Submit][Status][Discuss]

Description

一大清早,Farmer John就被木材破裂的声音吵醒了。是这些奶牛们干的,她们又逃出牛棚了!Farmer John已经厌
烦了奶牛在清晨出逃,他觉得受够了:是时候采取强硬措施了。他在牛棚的墙上钉了一个计数器,追踪从上次出逃
开始经过的天数。所以如果某一天早上发生了出逃事件,这一天的计数器就为0;如果最近的出逃是3天前,计数器
读数就为3。Farmer John一丝不苟地记录了每一天计数器的读数。年末到了,Farmer John准备做一些统计。他说
,你们这些奶牛会付出代价的!然而他的某些记录看上去不太对劲……Farmer John想要知道从他开始记录以来发
生过多少次出逃。但是,他怀疑这些奶牛篡改了它的记录,现在他所确定的只有他是从发生出逃的某一天开始记录
的。请帮助他求出,对于每个从他开始记录以来可能发生的出逃次数,他被篡改了的记录条数的最小值。

Input

输入的第一行包含一个整数N(1≤N≤100),表示从Farmer John开始对奶牛出逃计数器进行计数以来已经经过的天数。
第二行包含N个空格分隔的整数。
第i个整数是一个非负整数ai(不超过100),表示在第i天计数器的数字是ai,除非奶牛篡改了这一天的记录条目。

Output

输出包含N个整数,每行一个。
第i个整数为所有发生i次出逃的事件序列中,与该事件序列不一致的记录条目条数的最小值。

Sample Input

6
1 1 2 0 0 1

Sample Output

4
2
1
2
3
4
如果只发生1次出逃,则正确的记录应该为0 1 2 3 4 5,有4处与给定的记录不同。
如果发生2次出逃,则正确的记录可能为0 1 2 3 0 1,有2处与给定的记录不同。
在这个例子中,出逃发生在第一天和第五天。
如果发生3次出逃,则正确的记录可能为0 1 2 0 0 1,仅有1处与给定的记录不符。
在这个例子中,出逃发生在第一天、第四天和第五天。
以此类推。

思路:dp[i][j][k]表示第i个数以k结尾的,且用了j个0的最小修改次数,然后可以得到O(N^3)的 方程。

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
const int inf=0x3f3f3f3f;
int N,a[maxn],dp[maxn][maxn][maxn],ans[maxn];
int main(){
scanf("%d",&N); rep(i,,N) scanf("%d",&a[i]);
memset(dp,0x3f,sizeof(dp)); memset(ans,0x3f,sizeof(ans));
dp[][][]=(a[]!=);
rep(i,,N){
rep(j,,i){
rep(k,,i-j) dp[i][j][]=min(dp[i][j][],dp[i-][j-][k]+(a[i]!=));
rep(k,,i-j) dp[i][j][k]=min(dp[i][j][k],dp[i-][j][k-]+(a[i]!=k));
}
}
rep(i,,N) rep(j,,N) ans[i]=min(ans[i],dp[N][i][j]);
rep(i,,N) printf("%d\n",ans[i]);
return ;
}

BZOJ5196: [Usaco2018 Feb]Taming the Herd(DP暴力)的更多相关文章

  1. BZOJ5194: [Usaco2018 Feb]Snow Boots(排序&set)(可线段树优化)

    5194: [Usaco2018 Feb]Snow Boots Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 102  Solved: 79[Subm ...

  2. 2019 GDUT Rating Contest II : A. Taming the Herd

    题面: A. Taming the Herd Input file: standard input Output file: standard output Time limit: 1 second Me ...

  3. bzoj 5195: [Usaco2018 Feb]Directory Traversal【树形dp】

    注意到目录是一颗树结构,然后就简单了,预以1为根的处理出dis[u]为以这个点为根,到子树内的目录总长,si为子树内叶子数 第二遍dfs换根即可 #include<iostream> #i ...

  4. POJ 2029 DP || 暴力

    在大矩形中找一个小矩形 使小矩形包括的*最多 暴力或者DP  水题 暴力: #include "stdio.h" #include "string.h" int ...

  5. 区间Dp 暴力枚举+动态规划 Hdu1081

    F - 最大子矩形 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit Status Des ...

  6. Codeforces 914 C 数位DP+暴力打表+思维

    题意 给出一个二进制数\(n\),每次操作可以将一个整数\(x\)简化为\(x\)的二进制表示中\(1\)的个数,如果一个数简化为\(1\)所需的最小次数为\(k\),将这个数叫做特殊的数, 问从\( ...

  7. BZOJ1569: [JSOI2008]Blue Mary的职员分配(dp 暴力)

    Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 483  Solved: 189[Submit][Status][Discuss] Descriptio ...

  8. 【BZOJ3696】化合物 树形DP+暴力

    [BZOJ3696]化合物 Description 首长NOI惨跪,于是去念文化课了.现在,他面对一道化学题.    这题的来源是因为在一个奇怪的学校两个化竞党在玩一个奇怪的博弈论游戏.这个游戏很蛋疼 ...

  9. Codeforces Round #369 (Div. 2) C 基本dp+暴力

    C. Coloring Trees time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

随机推荐

  1. init() 方法

    1 /** * servlet init()在web应用程序启动之后,第一个请求到达Servlet之前调用. * 问题1:如果init()中需要处理大量的工作,那么servlet在处理第一个请求需要花 ...

  2. 全文检索引擎Solr系列——整合中文分词组件mmseg4j

    默认Solr提供的分词组件对中文的支持是不友好的,比如:“VIM比作是编辑器之神”这个句子在索引的的时候,选择FieldType为”text_general”作为分词依据时,分词效果是: 它把每一个词 ...

  3. Normalize.css与CSS reset区别

    Normalize.css 只是一个很小的CSS文件,但它在默认的HTML元素样式上提供了跨浏览器的高度一致性.相比于传统的CSS reset,Normalize.css是一种现代的.为HTML5准备 ...

  4. Angular 4.x 修仙之路

    参考:https://segmentfault.com/a/1190000008754631 一个Angular4的博客教程目录

  5. 重新学习MySQL数据库7:详解MyIsam与InnoDB引擎的锁实现

    重新学习Mysql数据库7:详解MyIsam与InnoDB引擎的锁实现 说到锁机制之前,先来看看Mysql的存储引擎,毕竟不同的引擎的锁机制也随着不同. 三类常见引擎: MyIsam :不支持事务,不 ...

  6. HDU-2196-树形dp/计算树上固定起点的最长路

    Computer Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  7. S16 day7 socket

    网络基础之网络协议篇:http://www.cnblogs.com/linhaifeng/articles/5937962.html 参考博客:http://www.cnblogs.com/linha ...

  8. iptables详解(14):iptables小结之常用套路

    不知不觉,已经总结了13篇iptables文章,这些文章中有一些需要注意的地方. 此处,我们对前文中的一些注意点进行总结,我们可以理解为对"常用套路"的总结. 记住这些套路,能让我 ...

  9. C++复习7.虚表的概念

    C++ 类的虚表 20130929 关键技术:封装.继承.组合.虚函数.抽象基类.动态绑定.多态性等等 1.首先整理一下在阿里巴巴面试遇到的函数虚表的问题. 在C++中的Class中的函数式存储在Cl ...

  10. 快速切题 poj 1002 487-3279 按规则处理 模拟 难度:0

    487-3279 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 247781   Accepted: 44015 Descr ...