洛谷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就有可能产生这个点又上升又下降的 非法情 ...
随机推荐
- 【学习笔记】关于最大公约数(gcd)的定理
手动博客搬家: 本文发表于20181004 00:21:28, 原地址https://blog.csdn.net/suncongbo/article/details/82935140 结论1 \[\g ...
- 【codeforces 797D】Broken BST
[题目链接]:http://codeforces.com/contest/797/problem/D [题意] 给你一个二叉树; 然后问你,对于二叉树中每个节点的权值; 如果尝试用BST的方法去找; ...
- Font Awesome使用方法
Font Awesome(中文站点)是一套为Bootstrap而创造的图标字体库及CSS框架,在业界享有盛誉. FA包含了常规web开发所需要用到的几乎所有图标,并且免费授权使用,只需要下载即可.所有 ...
- RestTemplate使用详解
1.RestTemplate添加RequestHeader如content-type可通过httpclient设置 List<Header> headers = new ArrayList ...
- Extensions for Spatial Data
http://dev.mysql.com/worklog/task/?spm=5176.100239.blogcont4270.8.j3asa7&id=6609 前文: 这两天因为项目原因看了 ...
- HDU 4513 manacher
Manacher算法,相当于求回文串. 关于Manacher,转 http://blog.sina.com.cn/s/blog_70811e1a01014esn.html 现在进入正题:首先,在字符串 ...
- MySQL改动rootpassword的多种方法
方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newp ...
- 命令行使用Eclipse的debug签名失败“找不到 xx.keystore证书链”
1.debug签名位置 2.查看debug.keystore具体信息 3.使用命令行签名 注意:debug签名password为android 4.出错原因是签名的别名写错,应为androiddebu ...
- Python - 检測字符串之间的包括
检測字符串之间的包括 本文地址: http://blog.csdn.net/caroline_wendy/article/details/27048955 Python中, 能够检測字符串之间的包括问 ...
- 我是这样记录javascript知识的------Day31
在陆续研究了几个javascript的几个小应用后,也算对javascript有了更深一点的认识,头脑中大约都有些印象,总体上说却有些模糊,这时.我知道,是时候看看w3cshool的这部分介绍了. 没 ...