飞扬的小鸟(NOIP2014)(丧病DP题)
刚开始我还以为这道题目非常的简单。。
然后随便打了一个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题)的更多相关文章
- 洛谷P1941 飞扬的小鸟 [noip2014] 背包
正解:背包 解题报告: 话说好久没做背包的题了,都有些陌生了?这几天加强基础题目多刷点儿dp和背包趴qwq 其实这题是95...然后我下了我错的那个测试点,我答案是9874正解是9875...然后读入 ...
- [NOIP2014][DP]飞扬的小鸟
[NOIP2014]飞扬的小鸟 ——!x^n+y^n=z^n 题目描述: Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画 ...
- UOJ #17. 【NOIP2014】飞扬的小鸟 背包DP
#17. [NOIP2014]飞扬的小鸟 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4902 Solved: 1879 题目连接 http:// ...
- LOJ2500 NOIP2014 飞扬的小鸟 【背包DP】*
LOJ2500 NOIP2014 飞扬的小鸟 LINK 题目大意就是说有n个柱子,在每一秒你可以选择不点下降高度y和点p次上升x∗p,若果当前位置加上x∗p大于上界m,就会停在m. 如果可以成功穿越所 ...
- 刷题总结——飞扬的小鸟(NOIP2014提高组)
题目: 题目背景 NOIP2014 提高组 Day1 试题. 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面 ...
- [NOIP2014]飞扬的小鸟[DP]
[NOIP2014]飞扬的小鸟 ——!x^n+y^n=z^n 题目描述: Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画 ...
- 垃圾陷阱 && [NOIP2014 提高组] 飞扬的小鸟
#include<bits/stdc++.h> using namespace std; int d,n,dp[1010]; struct node{int t,f,h;} a[1010] ...
- 【NOIP2014】【洛谷1941】【CJOJ1672】飞扬的小鸟
题面 描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话, ...
- Luogu 1941 【NOIP2014】飞扬的小鸟 (动态规划)
Luogu 1941 [NOIP2014]飞扬的小鸟 (动态规划) Description Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度 ...
随机推荐
- POJ3682 概率DP
King Arthur's Birthday Celebration Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3575 ...
- 財務会計管理(FI&CO)
FI(財務会計)系のSAP DBテーブル.随時更新していきます. [勘定コードマスタ]SKA1: 勘定コードマスタ(勘定コード表データ)SKB1: 勘定コードマスタ(会社コードデータ)SKAT: テキ ...
- 笔记-git-.gitignore
笔记-git-.gitignore 1. git忽略文件 有的文件不需要提交到公共仓库中,为此git提供了三种实现方式. gitignore文件 在项目的设置中指定排除文件 定义全局.git ...
- js双轴柱状图
<!doctype html><html lang="en"><head> <script type="text/javascr ...
- 模块hashlib和logging
Python的hashlib提供了常见的摘要算法MD5. 我们以常见的摘要算法MD5为例,计算出一个字符串的MD5值: import hashlib md5=hashlib.md5() md5.upd ...
- java练习题——字符串
一.动手动脑之String.equals()方法: 判断s1和s2的内容相同s1.equals(s2). 判断s1和s2的地址相同s1 == s2. 二.整理String类的Length().char ...
- python lamba表达式
lambda函数也叫匿名函数,即,函数没有具体的名称. g=lambda x:x**2 def f(x): return x**2 lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边是 ...
- centso下如何解压RAR文件
tar -xvf rarlinux-3.9.3.tar.gz cd rar make 看见下面这些信息就是安装成功了 mkdir -p /usr/local/bin mkdir -p /usr/l ...
- C# Json 序列化大全--任我行
public class JsonHelper { /// <summary> /// 将Model转换为Json字符串 /// </summary> /// <type ...
- 剑指Offer - 九度1391 - 顺时针打印矩阵
剑指Offer - 九度1391 - 顺时针打印矩阵2013-11-24 04:55 题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 ...