P1941 飞扬的小鸟(背包)
细节题
上升是完全背包
下降是01背包
(数组访问越界本机怎么能过???(大雾))
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cctype>
#define re register
using namespace std;
void read(int &x){
char c=getchar();x=;
while(!isdigit(c)) c=getchar();
while(isdigit(c)) x=(x<<)+(x<<)+(c^),c=getchar();
}
int min(int &a,int &b){return a<b?a:b;}
int max(int &a,int &b){return a>b?a:b;}
void swap(int &a,int &b){a^=b;b^=a;a^=b;}
#define N 10002
int ans=2e9,n,m,k,f[N][];
int a[N],b[N],l[N],r[N],v[N];
int main(){
read(n); read(m); read(k); int q1,q2,q3;
for(re int i=;i<=n;++i){
read(a[i]); read(b[i]);
l[i]=; r[i]=m;//下/上界
}
for(re int i=;i<=k;++i){
read(q1); read(q2); read(q3);
if(q2>q3) swap(q2,q3);
l[q1]=q2+; r[q1]=q3-; v[q1]=;//v:当前列是否有管子
}
memset(f,,sizeof(f)); int inf=f[][],tot=;
for(re int i=;i<=m;++i) f[][i]=;
for(re int i=;i<=n;++i){
for(re int j=a[i]+;j<=m+a[i];++j) //上升完全背包
f[i][j]=min(f[i][j-a[i]],f[i-][j-a[i]])+;
for(re int j=m+;j<=m+a[i];++j) //飞到m时特判
f[i][m]=min(f[i][m],f[i][j]);
for(re int j=;j<=m-b[i];++j)//下降01背包
f[i][j]=min(f[i][j],f[i-][j+b[i]]);
for(re int j=;j<l[i];++j) f[i][j]=inf;//其他地方不能飞
for(re int j=r[i]+;j<=m;++j) f[i][j]=inf;
bool gg=;
for(re int j=l[i];j<=r[i];++j) gg=(gg&&f[i][j]>=inf);
if(gg){printf("0\n%d",tot); return ;}//无法飞下去
tot+=v[i];
}
for(re int i=l[n];i<=r[n];++i) ans=min(ans,f[n][i]);
printf("1\n%d",ans);
return ;
}
P1941 飞扬的小鸟(背包)的更多相关文章
- 洛谷P1941 飞扬的小鸟(背包 dp)
题意 题目链接 Sol 很显然的dp,设\(f[i][j]\)表示第\(i\)个位置,高度为\(j\)的最小步数 向上转移的时候是完全背包 向下转移判断一下就可以 #include<bits/s ...
- Codevs 3729==洛谷P1941 飞扬的小鸟
P1941 飞扬的小鸟 456通过 2.4K提交 题目提供者该用户不存在 标签动态规划2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录 题目描述 Flappy Bird 是一 ...
- 洛谷 P1941 飞扬的小鸟
洛谷 P1941 飞扬的小鸟 原题链接 首先吐槽几句 noip都快到了,我还不刷起联赛大水题! 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节 ...
- UOJ #17. 【NOIP2014】飞扬的小鸟 背包DP
#17. [NOIP2014]飞扬的小鸟 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4902 Solved: 1879 题目连接 http:// ...
- [洛谷P1941] 飞扬的小鸟
洛谷题目链接:飞扬的小鸟 题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了 ...
- 2018.11.06 洛谷P1941 飞扬的小鸟(背包)
传送门 上升看成完全背包. 下降看成01背包. 注意边界转移就行了. 代码: #include<bits/stdc++.h> using namespace std; inline int ...
- 洛谷P1941 飞扬的小鸟 [noip2014] 背包
正解:背包 解题报告: 话说好久没做背包的题了,都有些陌生了?这几天加强基础题目多刷点儿dp和背包趴qwq 其实这题是95...然后我下了我错的那个测试点,我答案是9874正解是9875...然后读入 ...
- 洛谷P1941飞扬的小鸟 完全背包
思维难度不大,就是有许多细节要注意. 1.不能开滚动数组. 2.要特判飞过天花板的情况. Code: #include<cstdio> #include<algorithm> ...
- P1941 飞扬的小鸟[dp]
题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣 ...
随机推荐
- nginx 重复提交 重复请求问题
我遇到的奇葩问题. 后台使用的是nginx + tomcat 前端页面确实只发送了一个ajax请求到后台. 后台却接收到了两条请求! 百度了一下,说是因为nginx负载均衡,一个请求超时后会重复发送一 ...
- redis学习之集群报错Node is not empty
遇到的问题及解决办法 在redis.conf里bind 真机ip后,接着重新执行每个redis.conf,最后再创建集群,但报错,如下图所示: 图中报的错即: [ERR] Node 192.168.1 ...
- hdu 5318 The Goddess Of The Moon
The Goddess Of The Moon Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/ ...
- ansible批量验证密码
author: headsen chen date: 2018-08-31 20:45:49 综合比较salt-ssh,ansible .sshpass等批量验证100台机器的密码,最好推荐用ans ...
- 【Android】Scrollview 相关问题汇总
去除Scrollview 滑动边界渐变颜色 去掉滚动条,并将在滑动时,边界不会变成灰白 <horizontalscrollview android:overScrollMode="ne ...
- Activity工作流入门之HelloWorld
Activity的在线安装地址为:http://www.activiti.org/designer/update/ 打开Eclipse -> Help -> Install New Sof ...
- 从零打造在线网盘系统之Hibernate查询与更新技术
欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重 ...
- 修改js confirm alert 提示框文字
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Jmeter性能测试实践之java请求
前言 Apache Jmeter是开源.易用的性能测试工具,之前工作中用过几次对http请求进行性能测试,对jmeter的基本操作有一些了解.最近接到开发的对java请求进行性能测试的需求,所以需要 ...
- postgresql----数据库表约束----FOREIGN KEY
六.FOREIGN KEY ---- 外键约束 外键可以是单个字段,也可以是多个字段.所谓的外键约束就是引用字段必须在被引用字段中存在,除非引用字段部分为NULL或全部为NULL(由MATCH TYP ...