#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int MAXN=;
const int INF=;
inline int read()
{
int x=,f=;
char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-f;ch=getchar();}
while(isdigit(ch)){x=*x+ch-'';ch=getchar();}
return x*f;
}
int n,m,k;
int x[MAXN],y[MAXN],l[MAXN],h[MAXN],ispipe[MAXN],z;
int dp[MAXN][];
int main()
{
n=read(),m=read(),k=read();
for(int i=;i<n;i++)
{
x[i]=read();
y[i]=read();
l[i]=;
h[i]=m+;
}
l[n]=,h[n]=m+;
for(int i=;i<k;i++)
{
z=read();
ispipe[z]=;
l[z]=read();
h[z]=read();
}
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
dp[i][j]=INF;
dp[][]=INF;
for(int i=;i<=m;i++)dp[][i]=;
for(int i=;i<=n;i++)
{
for(int j=x[i-];j<=m;j++)
{
if(j==m)
{
for(z=m-x[i-];z<=m;z++)
dp[i][j]=min(dp[i][j],min(dp[i-][z]+,dp[i][z]+));
}
dp[i][j]=min(dp[i][j],min(dp[i-][j-x[i-]]+,dp[i][j-x[i-]]+));
} for(int j=min(,l[i]+);j<=min(m-y[i-],h[i]-);j++)
dp[i][j]=min(dp[i][j],dp[i-][j+y[i-]]);
for(int j=l[i];j>=;j--)dp[i][j]=INF;
for(int j=h[i];j<=m;j++)dp[i][j]=INF;
}
int ans=INF,ans2=k;
bool FLAG=;
for(int i=n;i>=;i--)
{
for(int j=l[i]+;j<=h[i]-;j++)ans=min(ans,dp[i][j]);
if(ans<INF)break;
if(ispipe[i])k--;
}
if(ans2==k)printf("1\n%d\n",ans);
else printf("0\n%d\n",k);
return ;
}

小细节:

1.可以把每一块地方弄一个底端为0顶端为m+1的水管 避免讨论 同时要在真正的水管处打Tag帮助最后计算不能全部通过的情况

2.小鸟飞到m高处并不会死 只是不能再往上飞了 所以要特判

3.往上飞是完全背包,往下掉是01背包 背包处理完要把不能到达(碰到管子)的点dp值设成INF

4.先考虑往上飞 在考虑往下掉

状态:dp[i][j]表示飞到[i][j]最少要按几下屏幕

转移就是小细节3+小细节2+小细节4

然后...然后就做完了啊

果然坐在鸡神旁边做题是有加成的

小细节细着细着就细完了

luoguP1941福赖皮波德的更多相关文章

  1. 世界城市 XML

    下载地址:http://www.qlcoder.com/uploads/dd01140921/147988679320159.xml <Location> <CountryRegio ...

  2. JS城市data

    CityData = { "中国": { "北京": ["东城区", "西城区", "崇文区", & ...

  3. JS实现年月日三级联动+省市区三级联动+国家省市三级联动

    开篇随笔:最近项目需要用到关于年月日三级联动以及省市区三级联动下拉选择的功能,于是乎网上搜了一些做法,觉得有一些只是给出了小的案例或者只有单纯的js还不完整,却很难找到详细的具体数据(baidu搜索都 ...

  4. Vue 国家省市三级联动

    在网上查阅一下,基本上是省市区三级联动,国家省市的就只能自己动手了. 样式就根据自己的需要去调整了. JSON数组太长,就折叠放在了后面. 效果图: <!DOCTYPE html> < ...

  5. 世界国省市区SQL语句(mysql)

    CREATE TABLE loctionall ( country VARCHAR(40) , provice VARCHAR(40) , city VARCHAR(40) , CONSTRAINT ...

  6. 精品手游《里奥的财富》高清版逆向移植家用机与PC平台(转)

    冒险动作游戏<里奥的财富>于去年10月登陆移动平台,曾荣获App Store“年度优秀游戏”.开发商宣布将推出其HD版本,近期会陆续登陆PS4.PC.MAC.Xbox One平台. 由瑞典 ...

  7. Differential Geometry之第一章欧式空间

    书籍:<微分几何>彭家贵 局部微分几何 第一章.欧式空间 1.1向量空间 (1)向量空间 a.向量空间是集合,集合中的元素需要定义加法和乘法运算.向量空间和n维数组空间R^n不是同一个概念 ...

  8. web前端:css

    css简介: web文档的结构由html元素定义,而这些html元素是如何显示的,则是由层叠样式表css来定义,这样就实现了结构与表现的分离. 1.外部样式表 可以将样式定义放在一个单独的文件中,并且 ...

  9. 计算机专业-世界大学学术排名,QS排名,U.S.NEWS排名

    2015年美国大学计算机专业排名 计算机专业介绍:计算机涉及的领域非常广泛,其分支学科也是非常多.所以在美国将主要的专业方向分为人工智能,程序应用,计算机系统(Systems)以及计算机理论(theo ...

随机推荐

  1. iOS开发 Xcode8 问题

      一.证书管理 用Xcode8打开工程后,比较明显的就是下图了,这个是苹果的新特性,可以帮助我们自动管理证书.建议大家勾选这个Automatically manage signing(Ps.但是在b ...

  2. 2218 补丁vs错误

    2218 补丁vs错误 1999年CTSC国家队选拔赛  时间限制: 1 s  空间限制: 64000 KB  题目等级 : 大师 Master 题解       题目描述 Description 错 ...

  3. c++得到本地username和IP

    bool CDlgResetAlarmInfo::GetLocalUserNameAddIP(CString &a_lstrUserName ,CString &a_IpStr) { ...

  4. C#聚合运算方法

    Aggregate 对集合值执行自定义聚合运算 Average 计算集合平均值 Count 对集合的元素惊醒计数,还可以仅对满足某一谓词函数的元素进行计数 LongCount 对大型集合中的元素进行计 ...

  5. python基础8 -----迭代器和生成器

    迭代器和生成器 一.迭代器 1.迭代器协议指的是对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 2. ...

  6. IOS int NSInteger NSNumber区分

    1.NSNumber 是一个类继承于NSValue 即一个基本数据类型的集合 包括char a signed or unsigned char, short int, int, long int, l ...

  7. ecmobile实现支付宝支付和百度云推送遇到的问题及解决方案(android)

    1.首先检测支付账户是否开通快捷支付服务,如果开通后,那么公钥是否上传(支付宝问题一定要找支付宝客服解决,找其他人没有用,支付宝客服可以帮你分析底层原因) 2.修改app配置文件:alipay_cal ...

  8. jQuery横向手风琴

    在线演示 本地下载

  9. 广义表(C++实现)

    广义表是非线性结构,其定义是递归的. 以下给出几种简单的广义表模型: 由上图我们可以看到,广义表的节点类型无非head.value.sub三种,这里设置枚举类型,利用枚举变量来记录每个节点的类型: e ...

  10. 使用 Apache poi 导入Excel

    本文主要记录Excel导入及模板下载,遇到的问题及注意事项. 第一节:Excel导入   1.如何获取Excel中的最大行,也就是最后一行? 2.如何获取有效行?有效行的定义是每一行记录中每一列中值都 ...