LOJ2500 NOIP2014 飞扬的小鸟 【背包DP】*
LOJ2500 NOIP2014 飞扬的小鸟
题目大意就是说有n个柱子,在每一秒你可以选择不点下降高度y和点p次上升x∗p,若果当前位置加上x∗p大于上界m,就会停在m。
如果可以成功穿越所有柱子输出最小点击次数,否则输出最多可以穿越的柱子数量
感觉是非常显然的DP,如果不点就是一个01背包,在点的时候是一个完全背包
所以可以设dp[i][j]是到达第i列高度为j的最小步数
然后可以发现转移
dp[i][j]=min(dp[i−1][j−x[i]∗p]+p)
向下掉的时候是这样的
dp[i][j]=dp[i−1][j+y[i]]
然后在实现完全背包的时候可以变成每次只考虑一次点击的贡献然后加上所有的贡献就好了
然后是注意在完全背包转移的时候先不能考虑下界的影响因素,因为默认转移的时候还没有到达下一根柱子
最后转移完了再把下界的影响加上
然后就是向下降落的情况要在上升之后讨论才行
#include<bits/stdc++.h>
using namespace std;
#define M 1010
#define N 10010
#define INF 0x3f3f3f3f
int dp[][N],ind=;
int n,m;
int k,p[N],l[N],r[N];
int x[N],y[N];
int main(){
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=n;i++)scanf("%d%d",&x[i],&y[i]);
for(int i=;i<=k;i++){
int p,ll,rr;
scanf("%d%d%d",&p,&ll,&rr);
l[p]=ll+;r[p]=rr-;
}
for(int i=;i<=n;i++)if(l[i]==&&r[i]==)l[i]=,r[i]=m;
for(int i=;i<=m;i++)dp[ind][i]=;
int tot=;
for(int i=;i<=n;i++){
ind^=;
memset(dp[ind],0x3f,sizeof(dp[ind]));
int dw=l[i],up=r[i];
for(int j=x[i];j<=up;j++)
dp[ind][j]=min(dp[ind][j],min(dp[ind^][j-x[i]],dp[ind][j-x[i]])+);
if(up==m)for(int j=m-x[i];j<=m;j++)
dp[ind][m]=min(dp[ind][m],min(dp[ind^][j],dp[ind][j])+);
for(int j=dw;j<=min(up,m-y[i]);j++)
dp[ind][j]=min(dp[ind][j],dp[ind^][j+y[i]]);
for(int j=;j<dw;j++)dp[ind][j]=INF;
bool check=;
for(int j=;j<=m;j++)
if(dp[ind][j]!=INF){check=;break;}
if(!check){printf("0\n%d",tot);return ;}
if(l[i]>||r[i]<m)tot++;
}
int ans=INF;
for(int i=;i<=m;i++)ans=min(ans,dp[ind][i]);
printf("1\n%d",ans);
return ;
}
LOJ2500 NOIP2014 飞扬的小鸟 【背包DP】*的更多相关文章
- UOJ #17. 【NOIP2014】飞扬的小鸟 背包DP
#17. [NOIP2014]飞扬的小鸟 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4902 Solved: 1879 题目连接 http:// ...
- 洛谷P1941 飞扬的小鸟(背包 dp)
题意 题目链接 Sol 很显然的dp,设\(f[i][j]\)表示第\(i\)个位置,高度为\(j\)的最小步数 向上转移的时候是完全背包 向下转移判断一下就可以 #include<bits/s ...
- [NOIP2014]飞扬的小鸟[DP]
[NOIP2014]飞扬的小鸟 ——!x^n+y^n=z^n 题目描述: Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画 ...
- NOIP2014 飞扬的小鸟
3. 飞扬的小鸟 (bird.cpp/c/pas) [问题描述] Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的 ...
- vijos1907[noip2014]飞扬的小鸟(完全背包)
描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告 ...
- NOIP2014飞扬的小鸟[DP][WRONG]
坑人啊朴素的dp 75分 用了完全背包才是80分,结果普遍偏小 为什么啊啊啊啊啊 等以后再写一遍吧 #include<iostream> #include<cstdio> #i ...
- [NOIP2014]飞扬的小鸟 D1 T3 loj2500 洛谷P1941
分析: 这是一个DP,没什么好说的,细节很烦人. DP[i][j]表示到第i个位置,高度为j点最少的次数. 转移: 当j=m时 k属于[m-h,m]都可以向DP[i][j]转移,即dp[i][j]=m ...
- luogu1941 [NOIp2014]飞扬的小鸟 (dp)
设f[i][j]为到达(i,j)这个位置的最小操作数 就有$f[i][j]=min\{f[i-1][j+Y[i-1]],f[i-1][j-X[i-1]*k]+k\}$ 然后考虑优化一下转移: 对于一系 ...
- NOIP2014飞扬的小鸟
长为n,高为m的二维平面,其中有k个管道(忽略管道的宽度)小鸟始终在游戏界面内移动.从最左边任意高度位置出发,到达游戏界面最右边,游戏完成每个单位时间沿横坐标方向右移距离为1,竖直移动的距离由玩家控制 ...
随机推荐
- oracle 12c 报错 ora-03137 来自客户机的格式错误的TTC包被拒绝
昨天下午,实施报了一个oracle的报错ora-03137 说是数据库在11g时没有问题,升级到12c 时,就报错了. 本地调试,看到执行完sql后,报异常,如下: 把SqL在12c的数据库执行一下, ...
- 使用jsonp去访问跨域数据,回调使用数据
var foo = function (data) { console.log("foo", data)} var testJsonP = function () { $.ajax ...
- tyvj 1027 木瓜地 简单模拟
P1027 木瓜地 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 USACO OCT09 4TH 描述 Bessie不小心游荡出Farmer John的田地 ...
- lessc的安装
win+R,cmd打开命令面板,输入cnpm install -g less,如图,然后就可以通过lessc -v查询lessc的版本,出现版本号证明安装成功
- Apache的MaxClients设置
本文将介绍Apache的MaxClients参数的重要性以及在GC发生时对系统整体性能的显著影响.通过几个例子,你将会更清晰的理解MaxClients值所引发的问题.最后会介绍如何依据系统的可用内存来 ...
- 项目管理工具:Maven
Maven是什么,作用是什么? Maven是项目管理工具,主要有两大作用:项目构建和依赖管理.项目构建就是项目编译.测试.集成发布实现自动化,依赖管理是很方便的功能,只要把当前项目所依赖的构件(jar ...
- Web应用体系结构
容器 Servlet没有main()方法,它们受控于另一个Java应用,这个Java应用称为容器(Container).我们最常见的tomcat就是这样一个容器. Web服务器应用(如Apache)得 ...
- vs 2017 保存文件 utf8
vs 2017 保存文件 utf8 转自:https://blog.csdn.net/jiegemena/article/details/79369650
- 为Pdf批量添加水印
Itext官网下载jar包 /** * PDF工具类 */ public class PdfUtil { public static void main(String[] args) throws E ...
- SSH集成log4j日志环境
第一步:在web.xml初始化log4j <context-param> <param-name>contextConfigLocation</param-name> ...