[luoguP1941] 飞扬的小鸟(DP)
动归,用f[i][j]表示到达第I列高度为j时最少需要飞的次数,容易想到最裸的转移:
f[i][j]=min(min(f[i-1][j-up[i-1]*k]+k),f[i-1][j+down[i-1]])
但是会超时
考虑怎么优化k的循环,发现k可以从k-1转移过来,从图上来理解就是比如k=2时,相当于可以先从i-1列飞一次飞到i列的j-up[i-1]位置,然后再往上跳一次跳到i的j位置,也就是f[i][j]可以从f[i]
[j-up[i-1]]+1转移来,这里需要注意几个地方
1.由于f[i][j-up[i-1]]相当于是中转的位置,所以无论那个位置是不是管道都要做
2.要保证f[i][j-up[i-1]]可以充当中转,所以必须先做一次只飞不掉的,再做一次掉下来的,否则会出现f[i][j-up[i-1]]位置可能是从i-1列掉下来得到的,此时不能充当中转
3.要特殊处理高度为m的情况(看题目)
——代码
#include <cstdio>
#include <iostream> const int INF = , N = , M = ;
int n, m, k, b, ans = INF, sum;
int x[N], y[N], l[N], h[N], f[][M]; inline int read()
{
int x = , f = ;
char ch = getchar();
for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -;
for(; isdigit(ch); ch = getchar()) x = (x << ) + (x << ) + ch - '';
return x * f;
} inline int min(int x, int y)
{
return x < y ? x : y;
} int main()
{
int i, j, p;
n = read();
m = read();
k = read();
for(i = ; i < n; i++)
{
x[i] = read();
y[i] = read();
}
for(i = ; i <= k; i++)
{
p = read();
l[p] = read();
h[p] = read();
}
for(i = ; i <= n; i++)
{
for(j = ; j <= m; j++) f[i & ][j] = INF;
for(j = x[i - ] + ; j <= m; j++)
f[i & ][j] = min(f[i & ][j], f[i & ^ ][j - x[i - ]] + ),
f[i & ][j] = min(f[i & ][j], f[i & ][j - x[i - ]] + );
for(j = m - x[i - ]; j <= m; j++)
f[i & ][m] = min(f[i & ][m], f[i & ^ ][j] + ),
f[i & ][m] = min(f[i & ][m], f[i & ][j] + );
for(j = ; j <= m - y[i - ]; j++) f[i & ][j] = min(f[i & ][j], f[i & ^ ][j + y[i - ]]);
if(l[i]) for(j = ; j <= l[i]; j++) f[i & ][j] = INF;
if(h[i]) for(j = h[i]; j <= m; j++) f[i & ][j] = INF;
if(l[i] || h[i])
{
b = ;
for(j = l[i] + ; j < h[i]; j++)
if(f[i & ][j] < INF)
{
b = ;
break;
}
if(b) sum++;
else break;
}
}
if(i == n + )
{
for(j = ; j <= m; j++) ans = min(ans, f[n & ][j]);
printf("1\n%d\n", ans);
}
else printf("0\n%d\n", sum);
return ;
}
[luoguP1941] 飞扬的小鸟(DP)的更多相关文章
- 飞扬的小鸟 DP
飞扬的小鸟 DP 细节有点恶心的DP,设\(f[i][j]\)表示横坐标为\(i\)(从\(0\)开始)高度为\(j\)时,屏幕点击的最小次数为\(f[i][j]\),转移便很好写了,这里要注意枚举当 ...
- NOIP 2014飞扬的小鸟(DP优化)
题目链接 飞扬的小鸟 考场的70分暴力(实际只有50分因为数组开小了……) 考场代码(数组大小已修改) #include <cstdio> #include <cstring> ...
- [NOIP2014]飞扬的小鸟[DP]
[NOIP2014]飞扬的小鸟 ——!x^n+y^n=z^n 题目描述: Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画 ...
- 【动态规划】luoguP1941 飞扬的小鸟
细节总是打挂选手:) 题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管 ...
- P1941 飞扬的小鸟[dp]
题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣 ...
- NOIP2014飞扬的小鸟[DP][WRONG]
坑人啊朴素的dp 75分 用了完全背包才是80分,结果普遍偏小 为什么啊啊啊啊啊 等以后再写一遍吧 #include<iostream> #include<cstdio> #i ...
- luogu1941 [NOIp2014]飞扬的小鸟 (dp)
设f[i][j]为到达(i,j)这个位置的最小操作数 就有$f[i][j]=min\{f[i-1][j+Y[i-1]],f[i-1][j-X[i-1]*k]+k\}$ 然后考虑优化一下转移: 对于一系 ...
- [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:// ...
随机推荐
- NestedPreb
屌丝手动版 One of the things we’re sorely missing from Unity is nested prefabs. So we rolled this little ...
- Html5 编程题
1.请写出下面所示的控件的html 代码? <div> <div><a>姓名:</a><input type="text" ...
- Oracle取查询结果数据的第一条记录SQL
Oracle取查询结果数据的第一条记录SQL: ; ;
- 学习笔记 第五章 使用CSS美化网页文本
第五章 使用CSS美化网页文本 学习重点 定义字体类型.大小.颜色等字体样式: 设计文本样式,如对齐.行高.间距等: 能够灵活设计美观.实用的网页正文版式. 5.1 字体样式 5.1.1 定义字体 ...
- Android yuv转Bitmap
YuvImage image = new YuvImage(data, ImageFormat.NV21, size.width, size.height, null); if(image!=nu ...
- 【译】x86程序员手册29-第8章 输入输出
Chapter 8 Input/Output 输入/输出 This chapter presents the I/O features of the 80386 from the following ...
- Java 基础入门随笔(11) JavaSE版——继承、覆盖、抽象类
1.面向对象的特征二:继承 定义: 指一个对象直接使用另一对象的属性和方法. 继承好处: 1.提供代码的复用性. 2.让类与类直接产生了关系,给第三个特征多态提供了前提. java中支持单继承.不直接 ...
- C#压缩文件夹至zip,不包含所选文件夹【转+修改】
转自园友:jimcsharp的博文C#实现Zip压缩解压实例[转] 在此基础上,对其中的压缩文件夹方法略作修正,并增加是否对父文件夹进行压缩的方法.(因为笔者有只压缩文件夹下的所有文件,却不想将选中的 ...
- (转)淘淘商城系列——商品搜索功能Service实现
http://blog.csdn.net/column/details/15737.html 首先我们在taotao-search-interface工程中新建一个SearchService接口,并在 ...
- sharepoint services
I have got solution for authentication to share point web service I have use fedAuth Cookie and rtfa ...