分析:

这是一个DP,没什么好说的,细节很烦人。

DP[i][j]表示到第i个位置,高度为j点最少的次数。

转移:

当j=m时

k属于[m-h,m]都可以向DP[i][j]转移,即dp[i][j]=min(dp[i-1][k]+1);

当j!=m时

dp[i][j]=min{dp[i-1][j-h]+1,dp[i-1][j+p]};

剩下的就是细节问题,没有别的了,细节巨恶心...

#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
#define N 1005
#define inf 1<<30
int n,m,K;
int f[N*10][N],dp[N*10][N];
int up[N*10],down[N*10],p[N*10];
struct node
{
int low,above;
}block[N*10];
int main()
{
scanf("%d%d%d",&n,&m,&K);
for(int i=0;i<n;i++)
{
scanf("%d%d",&up[i],&down[i]);
block[i].low=0;
block[i].above=m+1;
p[i]=0;
}
block[n].low=0,block[n].above=m+1;
for(int i=0;i<K;i++)
{
int x;
scanf("%d",&x);
scanf("%d%d",&block[x].low,&block[x].above);
p[x]=1;
}
p[n]=0;
for(int i=1;i<=n;i++)
{
for(int j=0;j<=m;j++)
{
dp[i][j]=inf;
}
}
dp[0][0]=inf;
for(int i=1;i<=n;i++)
{
for(int j=up[i-1]+1;j<=m;j++)
{
if(j==m)
{
for(int k=m-up[i-1]+1;k<=m;k++)
{
dp[i][j]=min(dp[i][j],dp[i-1][k]+1);
dp[i][j]=min(dp[i][j],dp[i][k]+1);
}
}
dp[i][j]=min(dp[i][j],dp[i-1][j-up[i-1]]+1);
dp[i][j]=min(dp[i][j],dp[i][j-up[i-1]]+1);
}
for(int j=max(1,block[i].low+1);j<=min(m-down[i-1],block[i].above-1);j++)
{
dp[i][j]=min(dp[i][j],dp[i-1][j+down[i-1]]);
}
for(int j=block[i].low;j>=0;j--)
{
dp[i][j]=inf;
}
for(int j=block[i].above;j<=m;j++)
{
dp[i][j]=inf;
}
}
int ans=inf;
int num=K;
for(int i=n;i>=1;i--)
{
for(int j=block[i].low+1;j<=block[i].above-1;j++)
{
ans=min(ans,dp[i][j]);
}
if(ans<inf)
{
break;
}
if(p[i]==1)
{
num--;
}
}
if(num>=K)
{
printf("1\n%d\n",ans);
}
if(num<K)
{
printf("0\n%d\n",num);
}
return 0;
}

  

[NOIP2014]飞扬的小鸟 D1 T3 loj2500 洛谷P1941的更多相关文章

  1. LOJ2500 NOIP2014 飞扬的小鸟 【背包DP】*

    LOJ2500 NOIP2014 飞扬的小鸟 LINK 题目大意就是说有n个柱子,在每一秒你可以选择不点下降高度y和点p次上升x∗p,若果当前位置加上x∗p大于上界m,就会停在m. 如果可以成功穿越所 ...

  2. 洛谷 P1941 飞扬的小鸟

    洛谷 P1941 飞扬的小鸟 原题链接 首先吐槽几句 noip都快到了,我还不刷起联赛大水题! 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节 ...

  3. [NOIP2014]飞扬的小鸟[DP]

    [NOIP2014]飞扬的小鸟 ——!x^n+y^n=z^n 题目描述: Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画 ...

  4. 【题解】洛谷P1941 [NOIP2014TG] 飞扬的小鸟(背包DP)

    次元传送门:洛谷P1941 思路 从题意可知 在每个单位时间内 可以无限地向上飞 但是只能向下掉一次 所以我们可以考虑运用背包解决这道题 上升时 用完全背包 下降时 用01背包 设f[x][y]为在坐 ...

  5. [洛谷P1941] 飞扬的小鸟

    洛谷题目链接:飞扬的小鸟 题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了 ...

  6. Codevs 3729==洛谷P1941 飞扬的小鸟

    P1941 飞扬的小鸟 456通过 2.4K提交 题目提供者该用户不存在 标签动态规划2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录   题目描述 Flappy Bird 是一 ...

  7. NOIP2014 飞扬的小鸟

    3. 飞扬的小鸟 (bird.cpp/c/pas) [问题描述] Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的 ...

  8. [NOIP2014] 提高组 洛谷P1941 飞扬的小鸟

    题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便 ...

  9. 洛谷P1941 飞扬的小鸟 [noip2014] 背包

    正解:背包 解题报告: 话说好久没做背包的题了,都有些陌生了?这几天加强基础题目多刷点儿dp和背包趴qwq 其实这题是95...然后我下了我错的那个测试点,我答案是9874正解是9875...然后读入 ...

随机推荐

  1. 重写,string创建内存问题

     //重写equals方法,因为我们要对比的是date类中的时间而不是对象的引用地址 51     //如果传递的是Object类的话,我们就需要重写hashCode()方法,这样就比较麻烦,而且暂时 ...

  2. Javascript、CSS、HTML面试题

    1 JS中的三种弹出式消息提醒(警告窗口.确认窗口.信息输入窗口)的命令是什么? alert     confirm     prompt 2声明一个已经存在一个CSS有几种方式? 1.导入一个已经存 ...

  3. JVM的运行原理以及JDK 7增加的新特性(一)

    虚拟机(Virtual Machine) JRE是由Java API和JVM组成的.JVM的主要作用是通过Class Loader来加载Java程序,并且按照Java API来执行加载的程序. 虚拟机 ...

  4. JAVA 创建对象4种方法

    java创建对象的几种方式 博客分类: java   (1) 用new语句创建对象,这是最常见的创建对象的方法.(2) 运用反射手段,调用java.lang.Class或者java.lang.refl ...

  5. AngularJS - 使用RequireJS还是Browserify?

    http://www.html-js.com/article/2126 AngularJS - 使用RequireJS还是Browserify? AngularJS之所以吸引了很多开发者的关注,很大一 ...

  6. JSF-页面导航

    页面导航 1)导航处理涉及的术语: -动作值:触发动作事件的组件的action:EL方法表达式.字符串文字. -结果值:动作组件的action属性的:EL方法表达式的返回值.字符串文字:或结果组件的o ...

  7. Yii2快速总结

    1.项目目录 后面的总结都是基于这个项目目录,注意:这个Yii2框架的basic版本原始的目录结构,未作任何更改. 2.新建控制器以及视图 controllers这个目录下的SiteControlle ...

  8. SSRS 数据源访问Cube 无法创建订阅的解决方法

    SSRS Report 的数据源可以直接放问SSAS 的Cube. 当报表的数据源设置成下图: 这样设置后,report 能够正常访问 Cube 并打开Report. 但是,如果我们需要添加数据驱动的 ...

  9. C#读取shp文件并获取图形保存到sde要素类中(不使用ESRI的类库,纯c#实现)

    说明:首先要将sde要素类发布成对应的要素服务,通过对要素服务的操作,实现数据在sde要素类中的增删 //向服务器发出请求 public string getPostData(string postS ...

  10. Java学习导航

    由于最近在系统的重新学习Java,为了便于日后复习,给个人博客中Java内容做一个目录. Java基础:Java虚拟机(JVM) Java基础:内存模型 Java基础:JVM垃圾回收算法 Java基础 ...