[NOIP2014]飞扬的小鸟 D1 T3 loj2500 洛谷P1941
分析:
这是一个DP,没什么好说的,细节很烦人。
DP[i][j]表示到第i个位置,高度为j点最少的次数。
转移:
当j=m时
k属于[m-h,m]都可以向DP[i][j]转移,即dp[i][j]=min(dp[i-1][k]+1);
当j!=m时
dp[i][j]=min{dp[i-1][j-h]+1,dp[i-1][j+p]};
剩下的就是细节问题,没有别的了,细节巨恶心...
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
#define N 1005
#define inf 1<<30
int n,m,K;
int f[N*10][N],dp[N*10][N];
int up[N*10],down[N*10],p[N*10];
struct node
{
int low,above;
}block[N*10];
int main()
{
scanf("%d%d%d",&n,&m,&K);
for(int i=0;i<n;i++)
{
scanf("%d%d",&up[i],&down[i]);
block[i].low=0;
block[i].above=m+1;
p[i]=0;
}
block[n].low=0,block[n].above=m+1;
for(int i=0;i<K;i++)
{
int x;
scanf("%d",&x);
scanf("%d%d",&block[x].low,&block[x].above);
p[x]=1;
}
p[n]=0;
for(int i=1;i<=n;i++)
{
for(int j=0;j<=m;j++)
{
dp[i][j]=inf;
}
}
dp[0][0]=inf;
for(int i=1;i<=n;i++)
{
for(int j=up[i-1]+1;j<=m;j++)
{
if(j==m)
{
for(int k=m-up[i-1]+1;k<=m;k++)
{
dp[i][j]=min(dp[i][j],dp[i-1][k]+1);
dp[i][j]=min(dp[i][j],dp[i][k]+1);
}
}
dp[i][j]=min(dp[i][j],dp[i-1][j-up[i-1]]+1);
dp[i][j]=min(dp[i][j],dp[i][j-up[i-1]]+1);
}
for(int j=max(1,block[i].low+1);j<=min(m-down[i-1],block[i].above-1);j++)
{
dp[i][j]=min(dp[i][j],dp[i-1][j+down[i-1]]);
}
for(int j=block[i].low;j>=0;j--)
{
dp[i][j]=inf;
}
for(int j=block[i].above;j<=m;j++)
{
dp[i][j]=inf;
}
}
int ans=inf;
int num=K;
for(int i=n;i>=1;i--)
{
for(int j=block[i].low+1;j<=block[i].above-1;j++)
{
ans=min(ans,dp[i][j]);
}
if(ans<inf)
{
break;
}
if(p[i]==1)
{
num--;
}
}
if(num>=K)
{
printf("1\n%d\n",ans);
}
if(num<K)
{
printf("0\n%d\n",num);
}
return 0;
}
[NOIP2014]飞扬的小鸟 D1 T3 loj2500 洛谷P1941的更多相关文章
- LOJ2500 NOIP2014 飞扬的小鸟 【背包DP】*
LOJ2500 NOIP2014 飞扬的小鸟 LINK 题目大意就是说有n个柱子,在每一秒你可以选择不点下降高度y和点p次上升x∗p,若果当前位置加上x∗p大于上界m,就会停在m. 如果可以成功穿越所 ...
- 洛谷 P1941 飞扬的小鸟
洛谷 P1941 飞扬的小鸟 原题链接 首先吐槽几句 noip都快到了,我还不刷起联赛大水题! 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节 ...
- [NOIP2014]飞扬的小鸟[DP]
[NOIP2014]飞扬的小鸟 ——!x^n+y^n=z^n 题目描述: Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画 ...
- 【题解】洛谷P1941 [NOIP2014TG] 飞扬的小鸟(背包DP)
次元传送门:洛谷P1941 思路 从题意可知 在每个单位时间内 可以无限地向上飞 但是只能向下掉一次 所以我们可以考虑运用背包解决这道题 上升时 用完全背包 下降时 用01背包 设f[x][y]为在坐 ...
- [洛谷P1941] 飞扬的小鸟
洛谷题目链接:飞扬的小鸟 题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了 ...
- Codevs 3729==洛谷P1941 飞扬的小鸟
P1941 飞扬的小鸟 456通过 2.4K提交 题目提供者该用户不存在 标签动态规划2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录 题目描述 Flappy Bird 是一 ...
- NOIP2014 飞扬的小鸟
3. 飞扬的小鸟 (bird.cpp/c/pas) [问题描述] Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的 ...
- [NOIP2014] 提高组 洛谷P1941 飞扬的小鸟
题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便 ...
- 洛谷P1941 飞扬的小鸟 [noip2014] 背包
正解:背包 解题报告: 话说好久没做背包的题了,都有些陌生了?这几天加强基础题目多刷点儿dp和背包趴qwq 其实这题是95...然后我下了我错的那个测试点,我答案是9874正解是9875...然后读入 ...
随机推荐
- Android 加载gif图片强大框架(支持预加载、缓存,还支持显示静态图片,一行代码全搞定)
之前项目中没有涉及到显示gif图片的功能,也没有着重研究过,最近项目中要用到显示gif图片,于是就在网上一顿搜,用过之后发现如下几个缺点. 1.加载大的gif图片会出现oom. 2.没有预加载和缓存功 ...
- 修改input属性placeholder的样式
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- SQL的几种连接:内连接、左联接、右连接、全连接、交叉连接
SQL连接可以分为内连接.外连接.交叉连接. 数据库数据: book表 stu表 1.内连接 ...
- PLSQL学习教程(全)
基于ORACLE9i+PL/SQLDeveloper7.1.4) 课程 一 PL/SQL 基本查询与排序 本课重点: 1.写SELECT语句进行数据库查询 2.进行数学运算 3.处理空值 4.使用别名 ...
- 东方国信 - 软件开发人员面试问卷(ver1.001.002)
1. 通用编程知识问卷(所有编程人员必做)... 1 1.1 SQL问卷... 1 1.2 翻译... 2 2. Java问卷(Java程序员应答,其他跳过)... 2 ...
- NIO 多线程
本文可看成是对Doug Lea Scalable IO in Java一文的翻译. 当前分布式计算 Web Services盛行天下,这些网络服务的底层都离不开对socket的操作.他们都有一个共同的 ...
- 【精解】EOS标准货币体系与源码实现分析
EOS智能合约中包含一个exchange合约,它支持用户创建一笔交易,是任何两个基本货币类型之间的交易.这个合约的作用是跨不同币种(都是EOS上的标准货币类型)的,通过各自与EOS主链价值进行锚定,然 ...
- 使用ASP.NET SignalR实现一个简单的聊天室
前言 距离我写上一篇博客已经又过了一年半载了,时间过得很快,一眨眼,就把人变得沧桑了许多.青春是短暂的,知识是无限的.要用短暂的青春,去学无穷无尽的知识,及时当勉励,岁月不待人.今天写个随笔小结记录一 ...
- Interface Development
- JavaScript匿名自执行函数~function(){}
原博客:https://blog.csdn.net/yaojxing/article/details/72784774 1.匿名函数的常见场景 js中的匿名函数是一种很常见的函数类型,比较常见的场景: ...