传送门

Luogu

解题思路

考虑 \(\text{DP}\)

设 \(dp[i][j]\) 表示飞到 \((i, j)\) 这个点的最小触屏次数。

转移其实比较显然,但问题是每次上升时都可以点很多次,这一维次数如果枚举的话,就会带来复杂度的GG。

我们考虑到一个性质,这个无限次点每次都是增加固定的高度,有点像完全背包,于是我们就可以用完全背包的思想来优化,转移时也可以从当前这一列的下方转移。

还有就是如何判断解的情况。

我们从终点向起点枚举,取第一个可以被走到的列就好了。

细节注意事项

  • 咕咕咕

参考代码

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cctype>
#include <cmath>
#include <ctime>
#define rg register
using namespace std;
template < typename T > inline void read(T& s) {
s = 0; int f = 0; char c = getchar();
while (!isdigit(c)) f |= (c == '-'), c = getchar();
while (isdigit(c)) s = s * 10 + (c ^ 48), c = getchar();
s = f ? -s : s;
} const int _ = 10000 + 10;
const int __ = 1000 + 10; int n, m, k, x[_], y[_];
int tp[_], bt[_], dp[_][__]; int main() {
#ifndef ONLINE_JUDGE
freopen("in.in", "r", stdin);
#endif
read(n), read(m), read(k);
for (rg int i = 0; i < n; ++i) read(x[i]), read(y[i]);
for (rg int i = 1; i <= n; ++i) bt[i] = 0, tp[i] = m + 1;
for (rg int a, i = 1; i <= k; ++i) read(a), read(bt[a]), read(tp[a]);
memset(dp, 0x3f, sizeof dp);
for (rg int i = 1; i <= m; ++i) dp[0][i] = 0;
for (rg int i = 1; i <= n; ++i) {
for (rg int j = 1; j <= m; ++j) {
if (j >= x[i - 1]) {
dp[i][j] = min(dp[i][j], dp[i - 1][j - x[i - 1]] + 1);
dp[i][j] = min(dp[i][j], dp[i][j - x[i - 1]] + 1);
}
if (j == m) {
for (rg int k = j - x[i - 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);
}
}
}
for (rg int j = bt[i] + 1; j <= tp[i] - 1; ++j)
if (j + y[i - 1] <= m) dp[i][j] = min(dp[i][j], dp[i - 1][j + y[i - 1]]);
for (rg int j = tp[i]; j <= m; ++j) dp[i][j] = 0x3f3f3f3f;
for (rg int j = bt[i]; j >= 1; --j) dp[i][j] = 0x3f3f3f3f;
}
int cnt = k, ans = 0x3f3f3f3f;
for (rg int i = n; i >= 1; --i) {
for (rg int j = bt[i] + 1; j <= tp[i] - 1; ++j)
ans = min(ans, dp[i][j]);
if (ans < 0x3f3f3f3f) break; if (tp[i] <= m) --cnt;
}
if (cnt == k) printf("1\n%d\n", ans);
else printf("0\n%d\n", cnt);
return 0;
}

完结撒花 \(qwq\)

「NOIP2014」飞扬的小鸟的更多相关文章

  1. Luogu 1941 【NOIP2014】飞扬的小鸟 (动态规划)

    Luogu 1941 [NOIP2014]飞扬的小鸟 (动态规划) Description Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度 ...

  2. UOJ #17. 【NOIP2014】飞扬的小鸟 背包DP

    #17. [NOIP2014]飞扬的小鸟 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4902  Solved: 1879 题目连接 http:// ...

  3. [NOIP2014][DP]飞扬的小鸟

    [NOIP2014]飞扬的小鸟 ——!x^n+y^n=z^n 题目描述: Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画 ...

  4. 【NOIP2014】飞扬的小鸟

    看syq的代码写出来的,chty_orz 原题: Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小 ...

  5. 「NOIP2014」「Codevs3728」 联合权值(乱搞

    3728 联合权值 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold   题目描述 Description 输入描述 Input Description 输出描述 Ou ...

  6. 「NOIP2014」「LuoguP2296」 寻找道路

    Description 在有向图 G 中,每条边的长度均为 1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 路径上的所有点的出边所指向的点都直接或间接与终点连通. 在 ...

  7. 「NOIP2014」联合权值

    传送门 Luogu 解题思路 因为这是一棵树,所以说两个点如果能产生联合权值,那么它们就只能通过唯一的一个中转点来匹配,所以我们就枚举这个中转点. 但是我们又会发现,如果把每个点周围的点抠出来进行两两 ...

  8. LOJ2500 NOIP2014 飞扬的小鸟 【背包DP】*

    LOJ2500 NOIP2014 飞扬的小鸟 LINK 题目大意就是说有n个柱子,在每一秒你可以选择不点下降高度y和点p次上升x∗p,若果当前位置加上x∗p大于上界m,就会停在m. 如果可以成功穿越所 ...

  9. [NOIP2014]飞扬的小鸟[DP]

    [NOIP2014]飞扬的小鸟 ——!x^n+y^n=z^n 题目描述: Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画 ...

随机推荐

  1. 《梳理业务的三个难点》---创业学习---训练营第二课---HHR---

    一,<开始学习> 1,融资的第一步:把业务一块一块的梳理清楚. 2,预热思考题: (1)投资人会问能做多大,天花板怎么算?你的答案可以得到大家的认同吗?(四种方法,直接引用,自顶向下,自底 ...

  2. linux的数据盘挂载

    图文教程: Linux的云服务器数据盘未做分区和格式化,可以根据以下步骤进行分区以及格式化操作. 一:登陆 用Linux 的SSH 登陆软件(xshell 或者putty) 登陆阿里云主机服务器. 二 ...

  3. 《实战Java高并发程序设计》读书笔记二

    第二章  Java并行程序基础 1.线程的基本操作 线程:进程是线程的容器,线程是轻量级进程,是程序执行的最小单位,使用多线程而不用多进程去进行并发程序设计是因为线程间的切换和调度的成本远远的小于进程 ...

  4. [2/100] MySQL在Windows下安装及一些问题

    mysql 是RDBMS(关系型数据库) 其他: redis 一般做缓存用 mangoDB 一般做爬虫用 国内镜像下载地址: http://mirrors.sohu.com/mysql/MySQL-8 ...

  5. pytoch 安装

    注意替换清华源,否则直接安装速度会很慢. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud ...

  6. C/C++网络编程6——实现基于UDP的服务器端/客户端

    通过前面几节的内容,我们已经可以实现基本的C/S结构的程序了,但是当多个客户端同时向服务器端请求服务时,服务器端只能按顺序一个一个的服务,这种情况下,客户端的用户是无法忍受的.所以虚实现并发的服务器端 ...

  7. 面试官:说说Spring中的事务传播行为

    前言 在开发中,相信大家都使用过Spring的事务管理功能.那么,你是否有了解过,Spring的事务传播行为呢? Spring中,有7种类型的事务传播行为.事务传播行为是Spring框架提供的一种事务 ...

  8. Session共享解决方案

    使用nginx做的负载均衡添加一个ip_hash配置 一.开两个Tomcat写测试程序 @WebServlet("/nginxSessionServlet") public cla ...

  9. Java 8 有哪些新特性

    一.支持 lambda 表达式 例如:查询学生信息,并打印 List<Student> studentList = Student.findAllStudent(); for(Studen ...

  10. idea 编译maven

    参考:https://blog.csdn.net/yye894817571/article/details/71681891