洛谷P1941飞扬的小鸟 完全背包
思维难度不大,就是有许多细节要注意。
1.不能开滚动数组。
2.要特判飞过天花板的情况。
Code:
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxm = 1009;
const int maxn = 10000 + 4;
const int inf = 10000000 + 4;
int F[maxn][maxm], up[maxn], down[maxn], height[maxn];
int pipeup[maxn], pipedown[maxn], n,m,k, ans;
int main()
{
//freopen("in.txt","r",stdin);
scanf("%d%d%d",&n,&m,&k);
for(int i = 0;i < n;++i)
{
scanf("%d%d",&up[i],&down[i]);
height[i + 1] = m + up[i];
}
for(int i = 1;i <= k;++i)
{
int x;
scanf("%d",&x);
scanf("%d%d",&pipedown[x],&pipeup[x]);
}
height[0] = m;
F[0][0] = inf;
for(int i = 1;i <= n;++i)
{
for(int j = 1;j <= height[i]; ++j)F[i][j] = inf;
for(int j = 1;j <= height[i]; ++j)if(j - up[i-1] > 0)F[i][j] = min(F[i][j],F[i-1][j-up[i-1]] + 1);
for(int j = 1;j <= height[i]; ++j)if(j - up[i-1] > 0) F[i][j] = min(F[i][j], F[i][j-up[i-1]] + 1);
for(int j = 1;j <= m - down[i-1]; ++j)F[i][j] = min(F[i][j], F[i-1][j + down[i-1]]);
for(int j = m + 1;j <= height[i];++j)F[i][m] = min(F[i][m], F[i][j]);
for(int j = 1;j <= height[i]; ++j)
{
if(pipeup[i])
{
if(j >= pipeup[i] || j <= pipedown[i]) F[i][j] = inf;
}
if(F[i][j] < inf) ans = i;
}
}
if( ans == n)
{
printf("1\n");
int minv = inf;
for(int i = 1;i <= height[n]; ++i)
{
minv = min(minv,F[n][i]);
}
printf("%d",minv);
}
else{
printf("%d\n",0);
int cnt = 0;
for(int i = 1;i <= ans;++i)if(pipeup[i]) ++cnt;
printf("%d",cnt);
}
return 0;
}
洛谷P1941飞扬的小鸟 完全背包的更多相关文章
- 2018.11.06 洛谷P1941 飞扬的小鸟(背包)
传送门 上升看成完全背包. 下降看成01背包. 注意边界转移就行了. 代码: #include<bits/stdc++.h> using namespace std; inline int ...
- 洛谷P1941 飞扬的小鸟 [noip2014] 背包
正解:背包 解题报告: 话说好久没做背包的题了,都有些陌生了?这几天加强基础题目多刷点儿dp和背包趴qwq 其实这题是95...然后我下了我错的那个测试点,我答案是9874正解是9875...然后读入 ...
- 洛谷 P1941 飞扬的小鸟
洛谷 P1941 飞扬的小鸟 原题链接 首先吐槽几句 noip都快到了,我还不刷起联赛大水题! 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节 ...
- Codevs 3729==洛谷P1941 飞扬的小鸟
P1941 飞扬的小鸟 456通过 2.4K提交 题目提供者该用户不存在 标签动态规划2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录 题目描述 Flappy Bird 是一 ...
- [洛谷P1941] 飞扬的小鸟
洛谷题目链接:飞扬的小鸟 题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了 ...
- 洛谷P1941 飞扬的小鸟(背包 dp)
题意 题目链接 Sol 很显然的dp,设\(f[i][j]\)表示第\(i\)个位置,高度为\(j\)的最小步数 向上转移的时候是完全背包 向下转移判断一下就可以 #include<bits/s ...
- [NOIP2014] 提高组 洛谷P1941 飞扬的小鸟
题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便 ...
- 洛谷P1941飞扬的小鸟——细节DP
题目:https://www.luogu.org/problemnew/show/P1941 此题主要注意许多细节,详见代码. 代码如下: #include<iostream> #incl ...
- 洛谷 P1941 飞扬的小鸟 (NOIP 2014)
题面 题解 背包细节题,wa了一片,上升的过程我们可以看做一个完全背包(多重背包好像跑不过去),下降 过程是一个0/1背包,为了避免冲突应该先跑多重,先跑0/1就有可能产生这个点又上升又下降的 非法情 ...
随机推荐
- 提高生产力:开源Java工具包Jodd(Java的”瑞士军刀”)
官方网站:http://jodd.org/ 下载地址:http://jodd.org/download/index.html Jodd=tools + ioc + mvc + db + aop + t ...
- mybatis源码阅读-Transaction和TransactionFactory(四)
Transaction 类图 接口定义 public interface Transaction { Connection getConnection() throws SQLException; v ...
- 关于double类型数字相加位数发生变化的问题
因为计算机内部存贮本身的缺陷,导致double类型的数字相加.得到的结果有非常多位,比方 774.23 750.0 2638.66 4162.889999999999 看到这个是不是非常晕 当然 ...
- 关于DM8168中移植算法速度慢、效率低的新发现
有不少的朋友,特别是刚刚接触DSP的朋友.基于DVRRDK编写C代码发现执行速度特别慢,我在上面简单的对每一个像素的UV分量赋值=0x80,这样就成了灰度图像.对1080P图像进行操作,发现处理每帧要 ...
- GMGDC专訪戴亦斌:具体解释QAMAster全面測试服务6大功能
GMGDC专訪戴亦斌:具体解释QAMAster全面測试服务6大功能 2014/10/10 · Testin · 业界资讯 在9月24-25日第三届全球移动游戏开发人员大会上,Testin云測COO戴亦 ...
- 出错Can't convert 'WebElement' object to str implicitly
- 2016.04.22,英语,《Vocabulary Builder》Unit 17
anim, comes from the Latin anima, meaning 'breath' or 'soul'. animism: ['ænɪmɪzəm] n. 泛灵论,精神存在论,神创宇宙 ...
- php 0,null,empty,空,false,字符串关系(转)
在php中由于是弱类型语言,不同类型值之间可以隐式转换,使得false,null,”,0,’0′这几个值的比较有些混乱,现总结一下: //相等判断 '' == NULL == 0 == false ( ...
- css3 背景background
Css3背景<background> Css3包含多个新的背景属性,它们提供了对背景更强大的控制.可以自定义背景图的大小,可以规定背景图片的定位区域,css3还允许我们为元素使用多个背景图 ...
- A - Dubstep
Problem description Vasya works as a DJ in the best Berland nightclub, and he often uses dubstep mus ...