飞扬的小鸟
时间:2019-09-08
本文章向大家介绍飞扬的小鸟,主要包括飞扬的小鸟使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
这道题当然是用DP啦
用f[i][j]表示横坐标为i时高度为j的最少点击次数。
用正无穷来表示不可能达到这个状态。
于是我们可以分析出状态转移的方式:
上升——完全背包转移方式
下降——01背包转移方式
超过m变为m——特判
#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int maxn=10000+10; const int maxm=2000+10; int n,m,p; int x[maxn],y[maxn]; int low[maxn],high[maxn]; int f[maxn][maxm]; bool e[maxn]; int main() { scanf("%d%d%d",&n,&m,&p); for(int i=1; i<=n; ++i) scanf("%d%d",&x[i],&y[i]); for(int i=1; i<=n; ++i) { low[i]=1; high[i]=m; } int a,b,c; for(int i=1; i<=p; ++i) { scanf("%d%d%d",&a,&b,&c); e[a]=1; low[a]=b+1; high[a]=c-1; } memset(f,0x3f,sizeof(f)); for(int i=1; i<=m; ++i) f[0][i]=0; for(int i=1; i<=n; ++i) { for(int j=x[i]+1; j<=m+x[i]; ++j) f[i][j]=min(f[i-1][j-x[i]]+1,f[i][j-x[i]]+1); for(int j=m+1; j<=m+x[i]; ++j) f[i][m]=min(f[i][m],f[i][j]); for(int j=1; j<=m-y[i]; ++j) f[i][j]=min(f[i][j],f[i-1][j+y[i]]); for(int j=1; j<low[i]; ++j) f[i][j]=f[0][0]; for(int j=high[i]+1; j<=m; ++j) f[i][j]=f[0][0]; } int ans=f[0][0]; for(int j=1;j<=m;++j) { ans=min(ans,f[n][j]); } if(ans<f[0][0]) printf("1\n%d\n",ans); else{ int i,j; for(i=n;i>=1;i--) { for(j=1;j<=m;++j) { if(f[i][j]<f[0][0]) break; } if(j<=m) break; } ans=0; for(int j=1;j<=i;++j) { if(e[j]) ans++; } printf("0\n%d\n",ans); } return 0; }
原文地址:https://www.cnblogs.com/ainiyuling/p/11485667.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 聊聊 Python 面试最常被问到的几种设计模式(下)
- 带你用 Python 实现自动化群控(入门篇)
- 实战篇 | 基于freeRTOS的多任务事件传输demo(附代码)
- 在kali linux中你应该知道的信息收集姿势(一)
- 【拓展】谈谈字符编码:Unicode编码与emoji表情编码
- TCP/IP 应用层协议解释
- Cisco Packet Tracer服务器模拟搭建
- Python3调用Google翻译
- 打造最强移动测试平台
- 微信小游戏背后的技术优化
- iox:一款功能强大的端口转发&内网代理工具
- Python3爬取steam优惠
- Cisco实验-将路由器连接到LAN操作步骤
- Vmware安装MacOS
- 机器学习中处理缺失值的7种方法