(一定要先贴一下wz大佬对这道题的定位:

另外说一句:我终于在拖了nnnnnnnnn天之后做完了这道题

算法标签:(其实也用不到辽上面都有)但我就是要贴一下咬我啊)


好啦好啦,上

  • 思路:

首先为了节省空间,我令1=>0     2=>1;开了一个二维数组f[i][1/0](为什么开f呢,因为发)用f[i][1]代表第i项为2时需要改动的最小个数,用f[i][0]表示第i项为1时需要改动的最小个数。这样形成递推:

for(int i=;i<=n;i++)
{
if(a[i]==){//第i个数为1时
            f[i][]=f[i-][];//如果不改动这个数,
那么最小值就等于上一个数为1时的值
f[i][]=min(f[i-][],f[i-][])+;//若改为2,那么前面的i-1个数
可以选择全置为1或全置为2,取两个中最小的,
再加上改动的1
}
if(a[i]==){//第i个数为2时
f[i][]=min(f[i-][],f[i-][]);//保持第i个数为2,则前i-1个数可以全为1
也可以全为2,取其中较小的,赋给f[i][1];
f[i][]=f[i-][]+;//改变第i个数为1,那么前面必须全为1,
那么f[i][0]就为f[i-1][0]+1;
}
}

最后求出f[n][1]和f[n][0],比较他们的值,选择较小的一个输出

  • 代码:(赶脚好low哦
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstdlib>
using namespace std;
int n,a[];//我也不知道为啥要开这么大,好看
int f[][];
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
f[][-a[]]=;
f[][a[]-]=;
for(int i=;i<=n;i++)
{
if(a[i]==){
f[i][]=f[i-][];
f[i][]=min(f[i-][],f[i-][])+;
}
if(a[i]==){
f[i][]=min(f[i-][],f[i-][]);
f[i][]=f[i-][]+;
}
}
int ans=min(f[n][],f[n][]);
printf("%d",ans);
}

end-

【洛谷p2837】晚餐队列安排的更多相关文章

  1. 洛谷 P2837 晚餐队列安排

    P2837 晚餐队列安排 题目背景 Usaco Feb08 Bronze 题目描述 为了避免餐厅过分拥挤,FJ要求奶牛们分2批就餐.每天晚饭前,奶牛们都会在餐厅前排队入内,按FJ的设想,所有第2批就餐 ...

  2. P2837晚餐队列安排

    传送 特写此篇,纪念不用dp做dp题 洛谷说这是个dp,但我不信(其实就是不会dp),因此我们考虑用另一种思路.修改后的队列每一个 数a[i]一定满足a[i]<=a[i+1],那修改后的顺序就是 ...

  3. P2837 晚餐队列安排

    此题可能用动规不太好做,主要是状态转移方程很难想个人认为,思维发散的大佬们忽视. 我看了这位大佬的dp题解后才想到了方程,在此受我一膜%%% 嗯,说下思路: 先用a[i]数组存一下输入的编号: 然后用 ...

  4. 洛谷P2751[USACO]工序安排

    题目传送门 怎么说呢,这个题目我刚开始随便乱搞了几下,交了个暴力代码上去居然还水了49分,数据确实有点弱啊,然后看到洛谷上那位大佬Redbag的题解瞬间就佩服的五体投地,那真的是简洁.易懂又高效.直接 ...

  5. P4554 小明的游戏 (洛谷) 双端队列BFS

    最近没有更新博客,全是因为英语,英语太难了QWQ 洛谷春令营的作业我也不会(我是弱鸡),随机跳了2个题,难度不高,还是讲讲吧,学学新算法也好(可以拿来水博客) 第一题就是这个小明的游戏 小明最近喜欢玩 ...

  6. 洛谷 P5785 [SDOI2012] 任务安排

    链接: P5785 弱化版:P2365 题意: 有 \(n\) 个任务待完成,每个任务有一个完成时间 \(t_i\) 和费用系数 \(f_i\),相邻的任务可以被分成一批.从零时刻开始这些任务会被机器 ...

  7. 洛谷P2365/5785 任务安排 题解 斜率优化DP

    任务安排1(小数据):https://www.luogu.com.cn/problem/P2365 任务安排2(大数据):https://www.luogu.com.cn/problem/P5785 ...

  8. 洛谷 P1540 机器翻译(队列)

    题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件会先 ...

  9. 洛谷P2827 蚯蚓 队列 + 观察

    我们不难发现先被切开的两半一定比后被切开的两半大,这样就天然的生成了队列的单调性,就可以省去一个log.所以,我们开三个队列,分别为origin,big,smallorigin, big, small ...

随机推荐

  1. linux内核中的cfq输入输出调度算法

    1. 全称是什么? 完全公平调度算法(completely fair queuing) 2. 原理是怎样的? 先按照输入输出请求的地址进行排序,然后按排好的次序执行请求 3. 适用场景 适用于旋转式磁 ...

  2. YII框架的使用

    YII框架的使用 spit: 吐痰,吐口水, 过去式: spat spat: 本身也可以作为一个单词, 意思是: "小打小闹""小的吵闹""小争吵&q ...

  3. UVA 10382 Watering Grass(区间覆盖,贪心)题解

    题意:有一块草坪,这块草坪长l 米,宽 w 米,草坪有一些喷头,每个喷头在横坐标为 p 处,每个喷头的纵坐标都是(w/2) ,并且喷头的洒水范围是一个以喷头为圆心,半径为 r 米的圆.每次最少需要打开 ...

  4. POJ3580 SuperMemo

    Your friend, Jackson is invited to a TV show called SuperMemo in which the participant is told to pl ...

  5. IDEA创建Maven Web项目

    简单介绍 本篇博客主要介绍使用IDEA如何创建Maven Web项目,具体是两个方面的内容:创建项目和配置tomcat服务器.前提是根据IDEA入门配置好了JDK及Maven. 创建项目 新建项目 填 ...

  6. P4720 【模板】扩展卢卡斯

    思路 扩展Lucas和Lucas定理其实没什么关系 我们要求的是这样的一个问题 \[ \left(\begin{matrix}n\\m\end{matrix}\right) mod\ P \] p不一 ...

  7. Vim的一些使用

    Vim的三种模式 normal(普通模式) insert(插入模式) command(命令模式) Vim的工作方式不同于常规的编辑器,在常规编辑器下对应到Vim中就是一直使用insert模式进行操作, ...

  8. HDU 6096 String(AC自动机+树状数组)

    题意 给定 \(n\) 个单词,\(q\) 个询问,每个询问包含两个串 \(s_1,s_2\),询问有多少个单词以 \(s_1\) 为前缀, \(s_2\) 为后缀,前后缀不能重叠. \(1 \leq ...

  9. 【AI】微软人工智能学习笔记(二)

    微软Azure机器学习服务 01|机器学习概述 首先上一张图, 这个图里面的大神是谁我也不清楚反正,但是看起来这句话说得很有哲理就贴出来了. 所以在人工智能领域下面的这个机器学习,到底是一个什么样的概 ...

  10. HDU 4303 Hourai Jeweled(树形DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=4303 题意:给出一棵树,树上的每一个节点都有一个权值,每条边有一个颜色,如果一条路径上相邻边的颜色都是不同的,那 ...