原题传送门

刚开始我还以为这道题目非常的简单。。

然后随便打了一个DP,直接WA,被zxyer狠狠地D了一顿。

然后发现有好多细节。。

首先假如某横坐标没有管子,那么l[x]=0;h[x]=m+1;

然后DP的时候往上是完全背包,往下是01背包。

由于不能接触到管子,所以0~l[x]和h[x]~m要设值inf方便下面判断。

m-max(q)*x[i]~m也要特判,因为有限高。。

最后统计答案也是很醉、。、

下面贴代码。。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define inf ((1<<31)-2)
using namespace std;
int f[][];
int n,m,k,ans;
int x[],y[];
int l[],h[];
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<=n;i++)
l[i]=,h[i]=m+;
for(int i=;i<=k;i++)
{
int p1,l1,h1;
scanf("%d%d%d",&p1,&l1,&h1);
l[p1]=l1;h[p1]=h1;
}
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)f[i][j]=inf;
f[][]=inf;
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
if(j>=x[i-])
{
f[i][j]=min(f[i][j],f[i-][j-x[i-]]+);
f[i][j]=min(f[i][j],f[i][j-x[i-]]+);
}
if(j==m)
{
for(int k=j-x[i-];k<=m;k++)
{
f[i][j]=min(f[i][j],f[i-][k]+);
f[i][j]=min(f[i][j],f[i][k]+);
}
}
}
for(int j=l[i]+;j<h[i];j++)
if(j+y[i-]<=m)
f[i][j]=min(f[i][j],f[i-][j+y[i-]]);
for(int j=;j<=l[i];j++)
f[i][j]=inf;
for(int j=h[i];j<=m;j++)
f[i][j]=inf;
}
int cnt=k,ans=inf;
for(int i=n;i>=;i--)
{
for(int j=l[i]+;j<h[i];j++)
if(f[i][j]<inf) ans=min(ans,f[i][j]);
if(ans!=inf)break;
if(h[i]<=m)cnt--;
}
if(cnt==k)
printf("1\n%d\n",ans);
else
printf("0\n%d\n",cnt);
return ;
}

飞扬的小鸟(NOIP2014)(丧病DP题)的更多相关文章

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

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

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

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

  3. UOJ #17. 【NOIP2014】飞扬的小鸟 背包DP

    #17. [NOIP2014]飞扬的小鸟 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4902  Solved: 1879 题目连接 http:// ...

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

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

  5. 刷题总结——飞扬的小鸟(NOIP2014提高组)

    题目: 题目背景 NOIP2014 提高组 Day1 试题. 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面 ...

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

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

  7. 垃圾陷阱 && [NOIP2014 提高组] 飞扬的小鸟

    #include<bits/stdc++.h> using namespace std; int d,n,dp[1010]; struct node{int t,f,h;} a[1010] ...

  8. 【NOIP2014】【洛谷1941】【CJOJ1672】飞扬的小鸟

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

  9. Luogu 1941 【NOIP2014】飞扬的小鸟 (动态规划)

    Luogu 1941 [NOIP2014]飞扬的小鸟 (动态规划) Description Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度 ...

随机推荐

  1. JavaScript 仿ios滑动选择器

    从git上找了一个,不过不是我想要的,更改了许多.到了我想要的效果: roller_selector_0_9.js 首先上js: "use strict"; /* * Author ...

  2. Adobe Photoshop Lightroom 5.3和序列号

    Adobe Photoshop Lightroom是一款针对专业摄影师开发的专业照片管理和处理软件.12.11发布了Lightroom 5.3正式版,这个版本支持RAW格式(相机原始数据格式),镜头配 ...

  3. java前台传参json,后台用map或者实体对象接收

    (一)前台传js对象,里面包含数组,后台用map接收 (1)第一种情况:数组里不包含js对象 var param ={}: param.id=id; param.name=name; var scor ...

  4. FTP被动模式服务器端开有限的端口

    很多服务器上都搭建的有FTP服务,FTP服务有两种连接模式:主动模式和被动模式.关于这两种模式的介绍,请参考这篇文章:重温FTP的主动模式和被动模式 关于这两种模式的比较,原文有这样的描述: 主动模式 ...

  5. python实现单链表的反转

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #!/usr/bin/env python #coding = utf-8 ...

  6. Python之日志处理 logging模块

    Python之日志处理(logging模块)   本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四 ...

  7. java 继承小结

    [code=java] //多态的经典例子 //向上转型后,父类只能调用子类和父类的共同方法和的重写方法(方法名相同,参数也相同),不能调用重载方法(方法名相同,但参数不同) class A { pu ...

  8. (原) Unreal搬山-引言(图多慎)

    @author:白袍小道 扯淡:(图多) 何为搬山,这里借了剑来少年郎一句.(若有同道中人,甚是开心,开心的很) 江湖岂能没前辈) (江湖很大,足够你浪) (刺客信条 \荒野 \神秘海域 \死亡空间 ...

  9. django的聚合函数和aggregate、annotate方法使用

    支持聚合函数的方法: 提到聚合函数,首先我们要知道的就是这些聚合函数是不能在django中单独使用的,要想在django中使用这些聚合函数,就必须把这些聚合函数放到支持他们的方法内去执行.支持聚合函数 ...

  10. 安卓自动化robotium工具简单使用(二)

    在学习安卓的这段时间里,刚好有个朋友有一个APP的应用需要开发. 我马上就动手开始做着试试,在完成开发的同时写了相应的自动化测试代码,使用的是robotium. 才接触安卓没几天,写的不太好,如果有好 ...