【Luogu】P1941飞扬的小鸟(DP)
我发现现在没了题解我做普及提高+的题也做不了 更不要说这些提高+难度的题
此题是一个二维DP。暴力是三重循环ijk,k枚举在i位置上的点击次数。即
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
for(int k=1;j-k*up[i]>0;k++) f[i][j]=min(f[i][j],f[i][k]+k);
这样的暴力能拿到80分。但是很不幸,我一开始搞错了,所以只拿了60,剩下20是TLE。
后来发现可以把水管放在外面计算。也就是三重暴力算完之后,把水管部分的值修改为INF,让它被覆盖掉。
然后有一个想法就是f[i][j]=f[i][j-up[i]]。也就是说现在这个状态(比如点a次)可以从点a-1次的状态转移过来。
于是100分,但是1829ms被zht大佬完虐(137)
#include<iostream>
#include<cctype>
#include<cstdio>
#include<cstring> inline long long min(long long a,long long b){ return a<b?a:b; } long long INF;
inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} struct Point{
long long up,down;
Point(){up=;down=;}
}Map[],Pipe[]; long long f[][];
long long ans;
long long tot;
int main(){
long long n=read(),m=read(),K=read();
for(long long i=;i<n;++i){
Map[i].up=read();
Map[i].down=read();
}
for(long long i=;i<=K;++i){
long long pos=read();
Pipe[pos].down=read();
Pipe[pos].up=read();
}
memset(f,/,sizeof(f));
ans=INF=f[][];
for(long long i=;i<=m;++i) f[][i]=;
for(long long i=;i<=n;++i){
for(long long j=;j<=m;++j){
if(j>Map[i-].up){
f[i][j]=min(f[i][j],f[i-][j-Map[i-].up]+);
f[i][j]=min(f[i][j],f[i][j-Map[i-].up]+);
}
if(j==m)
for(long long k=j-Map[i-].up;k<=m;++k){
f[i][j]=min(f[i][j],f[i-][k]+);
f[i][j]=min(f[i][j],f[i][k]+);
}
}
for(long long j=;j<=m;++j)
if(f[i][j]>f[i-][j+Map[i-].down]&&j+Map[i-].down<=m)
f[i][j]=f[i-][j+Map[i-].down];
long long minn=INF;
for(long long k=;k<=m;++k){
if(k<=Pipe[i].down) f[i][k]=INF;
if(k>=Pipe[i].up) f[i][k]=INF;
if(minn>f[i][k]) minn=f[i][k];
}
if(minn==INF){
printf("0\n%lld",tot);
return ;
}
if(Pipe[i].up<=m) tot++;
} for(long long i=;i<=m;++i){
if(ans>f[n][i]) ans=f[n][i];
}
printf("1\n%lld",ans);
return ;
}
【Luogu】P1941飞扬的小鸟(DP)的更多相关文章
- luogu P1941 飞扬的小鸟
题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便 ...
- P1941 飞扬的小鸟[dp]
题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣 ...
- Codevs 3729==洛谷P1941 飞扬的小鸟
P1941 飞扬的小鸟 456通过 2.4K提交 题目提供者该用户不存在 标签动态规划2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录 题目描述 Flappy Bird 是一 ...
- P1941 飞扬的小鸟(背包)
P1941 飞扬的小鸟 细节题 上升是完全背包 下降是01背包 (数组访问越界本机怎么能过???(大雾)) #include<iostream> #include<cstdio> ...
- 洛谷 P1941 飞扬的小鸟
洛谷 P1941 飞扬的小鸟 原题链接 首先吐槽几句 noip都快到了,我还不刷起联赛大水题! 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节 ...
- 飞扬的小鸟 DP
飞扬的小鸟 DP 细节有点恶心的DP,设\(f[i][j]\)表示横坐标为\(i\)(从\(0\)开始)高度为\(j\)时,屏幕点击的最小次数为\(f[i][j]\),转移便很好写了,这里要注意枚举当 ...
- [洛谷P1941] 飞扬的小鸟
洛谷题目链接:飞扬的小鸟 题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了 ...
- NOIP 2014飞扬的小鸟(DP优化)
题目链接 飞扬的小鸟 考场的70分暴力(实际只有50分因为数组开小了……) 考场代码(数组大小已修改) #include <cstdio> #include <cstring> ...
- luogu 1941 飞扬的小鸟
这道题对于第13个数据点,不知为什么f数组第二位开到2000以下就不能过,求指教 飞扬的小鸟 传送门 题目大意 一个小鸟在\(n*m\)的方阵里,然后有许多管道你们玩过就不多介绍了,然后每一个位置,点 ...
- [NOIP2014]飞扬的小鸟[DP]
[NOIP2014]飞扬的小鸟 ——!x^n+y^n=z^n 题目描述: Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画 ...
随机推荐
- arcgis jsapi接口入门系列(8):鼠标在地图画面
初始化,每个map执行一次 PS:画点也差不多,都是用SketchViewModel,因此本demo没有专门写画点的 drawPolygonInit: function () { //画几何对象初始化 ...
- Objective-C Composite Objects
We can create subclass within a class cluster that defines a class that embeds within it an object. ...
- Jenkins执行shell脚本启动tomcat失败解决方法
环境:Centos 7 Jenkins版本:2.124 状况:Jenkins会执行服务器某个目录下的Shell, 脚本中功能是复制替换某两个配置文件,然后关闭tomcat,重启Tomcat. 但是,T ...
- Spring MVC系列[2]——参数传递及重定向
1.目录结构 2.代码 <?xml version="1.0" encoding="UTF-8"?> <web-app version=&qu ...
- ios UnitTest 学习笔记1
一.运行第一个单元测试: 1.在Xcode 5中新建一个工程默认自带一个单元测试的文件夹,IDE自动生成了一个实现XCTestCase的.m文件,里面有一个失败测试(早期版本中实现的是SenTestC ...
- vuex存取token,http简单封装、模拟登入权限校验操作、路由懒加载的几种方式、vue单页设置title
1.config index.js下面的跨域代理设置: proxyTable: { '/api': { target: 'http://xxxx', //要访问的后端接口 changeOrigin: ...
- SQL2005中使用backup、restore来备份和恢复数据库
在SQL2005数据库中利用SQL语句进行数据备份与还原: 备份backup:backup database 数据库名称 tO disk = 备份路径例:BACKUP DATABASE test TO ...
- C++数据文件存储与加载(利用opencv)
首先请先确认已经安装好了opencv3及以上版本. #include <opencv2/opencv.hpp>#include <iostream>#include <s ...
- 爬虫_python3_requests_2
pip install requests 进行简单的操作 发送一个get请求 # 发送请求 import requests response = requests.get('http://httpbi ...
- off-by-one&doublefree. 看雪10月ctf2017 TSRC 第四题赛后学习
off-by-one 0x00 发现漏洞 1.off-by-one 在massage函数中,如图所示,可以修改的字节数比原内存大小多了一个字节 2.悬挂指针 可以看到,在free堆块的时候,没有清空指 ...