LITTLE BIRD

Bzoj 3831

相对而言是一道比较简单的DP,不过它需要用单调队列优化。首先是朴素O(n2),

if(d[j]>f[i])

f[i]=min(f[i],f[j]);

else

f[i]=min(f[i],f[j]+1);

f[i]表示从1到i需要的最少代价

K很大时会很慢

 1 #include<bits/stdc++.h>
 2
 3 #define INF 9999999
 4
 5 using namespace std;
 6
 7 int n,k;
 8
 9 int f[1000000];
10
11 int d[1000000];
12
13 int main()
14
15 {
16
17 cin>>n>>k;
18
19 memset(f,INF,sizeof(f));
20
21 f[1]=0;
22
23 for(int i=1;i<=n;i++)
24
25 cin>>d[i];
26
27 for(int i=1;i<=n;i++)
28
29 {
30
31 for(int j=i-k;j<i;j++)
32
33 {
34
35 if(d[j]>d[i])
36
37 f[i]=min(f[i],f[j]);
38
39 else
40
41 f[i]=min(f[i],f[j]+1);
42
43 }
44
45 }
46
47 cout<<f[n];
48
49 return 0;
50
51 }

然后是单调队列优化,O(n)的复杂度,对于两个位置i、j,i在j之后,如果f[i]<f[j],直接抛弃j,如果f[i]==f[j],那再h[i]>=h[j],也是抛弃j,即tail--,最后i入队。队列的单调性是单调递增的,每次取队首就可以了。

优化过后,果然很快。

#include<bits/stdc++.h>using namespace std;int top,tail,q[1000001];int f[1000001];int n,k;int d[1000001];bool cmp(int f1,int h1,int f2,int h2){return f1==f2?h1>=h2:f1<f2;}int main(){cin>>n>>k;for(int i=1;i<=n;i++)cin>>d[i];q[top=tail=1]=1;for(int i=2;i<=n;i++){while(top<=tail&&i-top>k)top++;f[i]=f[q[top]]+(d[i]>=d[q[top]]?1:0);while(top<=tail&&cmp(f[i],d[i],f[tail],d[tail]))tail--;q[++tail]=i;}cout<<f[n];return 0;}

  

转载于:https://www.cnblogs.com/war1111/p/7290246.html

little bird相关推荐

  1. 洛谷P3572 [POI2014]PTA-Little Bird

    P3572 [POI2014]PTA-Little Bird 题目描述 In the Byteotian Line Forest there are nn trees in a row. On top ...

  2. 人形图案c语言程序_做游戏,学编程(C语言) 7 学习EasyX图形交互功能----flappy bird源代码...

    经过之前的学习,我们基本掌握了开发小游戏所需要的语法知识和搭建方法,但是基础C语言的可视化与交互功能实在是太弱了 . 利用免费的EasyX插件,我们可以快速上手,简单实现很酷的视觉效果 . EasyX ...

  3. 《预训练周刊》第23期:Smart Bird:解决变换器性能瓶颈的新方法、Prompt:如何提升预训练模型的迁移效果...

    No.23 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第23期&l ...

  4. 从零开始机器学习比赛经验(bird分享)

    视频地址:https://pan.baidu.com/s/1b25yNG 机器学习比赛入门条件 1.过的去的code能力:Leetcode平台 leetcode平台可以帮助我们提高基本的算法实现能力, ...

  5. 一步步分析AI如何玩Flappy Bird

    一.Flappy Bird 游戏展示 在介绍模型.算法前先来直接看下效果,上图是刚开始训练的时候,画面中的小鸟就像无头苍蝇一样乱飞,下图展示的是在本机(后面会给出配置)训练超过10小时后(训练步数超过 ...

  6. flappy bird游戏源代码揭秘和下载后续---移植到android真机上

    前言:         上一篇博客 flappy bird游戏源代码揭秘和下载,源码是运行在window或者mac系统上的,现在我们需要把代码移植到android真机上,让小鸟在手机里飞起来! ps: ...

  7. 谷歌新模型突破BERT局限:NLP版「芝麻街」新成员Big Bird长这样

    萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 最新消息,谷歌推出了NLP系列「芝麻街」的新成员Big Bird. 这个在外界眼中看起来有点可爱的动漫小鸟,摇身一变,解决了BERT模型中的 ...

  8. 【Unity3D基础教程】给初学者看的Unity教程(四):通过制作Flappy Bird了解Native 2D中的RigidBody2D和Collider2D...

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 在第一篇文章[Unity3D基础教程] ...

  9. 【教程】HTML5+JavaScript编写flappy bird

         作者: 风小锐      新浪微博ID:永远de风小锐      QQ:547953539      转载请注明出处 PS:新修复了两个bug,已下载代码的同学请查看一下 大学立即要毕业了. ...

  10. P3572 [POI2014]PTA-Little Bird

    P3572 [POI2014]PTA-Little Bird 一只鸟从1跳到n.从1开始,跳到比当前矮的不消耗体力,否则消耗一点体力,每次询问有一个步伐限制k,求每次最少耗费多少体力 很简短的题目哼. ...

最新文章

  1. 数位DP 不断学习中。。。。
  2. IntelliJ IDEA 重大更新:支持CPU火焰图,新增酷炫主题
  3. C#中out 及 ref 区别
  4. System.Data.OracleClient requires Oracle client software version 8.1.7 or greater.
  5. Linux df指令
  6. rabbitmq 3.7.0+erlang 20.1 安装
  7. Dapr + .NET 实战(十三)跨语言开发
  8. 如何将本地项目上传到gitee
  9. Python之 range()函数✅
  10. golang RWMutex读写互斥锁源码分析
  11. kafka 生产和消费信息入门
  12. xcode打包ipa_codesign签名ipa
  13. Mysql常用命令笔记
  14. C# CommandName四个属性
  15. 下载论文的技巧及经验
  16. 如果这篇文章说不清epoll的本质,那就过来掐死我吧! (3)
  17. 英语语法笔记——特殊句型(六)
  18. 基于TextField实现通用搜索组件
  19. Matlab中的persistent变量
  20. web网页设计期末课程大作业:我的家乡文化主题网站设计——山西

热门文章

  1. web测试常用的用例及知识
  2. z-index属性简介
  3. Excel(16)-好学实用的Index!
  4. 去除html标签的工具类,Java正则匹配过滤移除html标签以及获取img完整标签工具类...
  5. python调用命令行获取pid_命令行命令/命令运行时的pid及获取
  6. 代码画简单动物_[500行代码学懂OpenGL]之六数学知识
  7. android实践练习_android 练习之路 (四)
  8. Java NIO学习篇之StandardOpenOption详解
  9. html单击出现下拉菜单,*OnClick实现点击主菜单时出现下拉菜单,已实现但是有问题,求助!*...
  10. 5-14卷积神经网添加正则化