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是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣 ...
随机推荐
- openstack的glance、nova、cinder使用ceph做后端存储
块设备与 OPENSTACK 通过 libvirt 你可以把 Ceph 块设备用于 OpenStack ,它配置了 QEMU 到 librbd 的接口. Ceph 把块设备映像条带化为对象并分布到集群 ...
- 转移wordpress到另一台主机
做项目的代码是两个人,我想把另一个小伙伴做的转移到自己的linux系统上(主要是linux下一片空白,从头做太浪费时间了) 这个过程其实也可以用来类比从本地到服务器的过程(可能略有不同,真上线的时候会 ...
- PHP后门的eval类和system类 函数到底有哪些区别
一. 一直以来对PHP的eval这一类函数和system这一类存在疑惑的地方,今天彻底研究了一下,写查PHP一句话的时候可以更有把握一些.其实都是一些满基础的知识,大佬别喷.干安全的基础很重要. 二. ...
- {Azure} 常用链接
https://azure.microsoft.com/zh-cn/documentation/scenarios/web-app/
- Python - 字符串的方法及注释
%r非常有用,他的含义是不管是整形还是字符串,都将打印出来
- gradle多项目 svn依赖
当svn有多个子项目且没有根项目的时候,用eclipse拷贝下来是容易出问题的,经常子项目之间的依赖会有问题,还是推荐用IDEA. 操作说明: 如果SVN有 A,B,C,D四个项目,A为web项目,B ...
- __FILE__ 与 $_SERVER['SCRIPT_FILENAME']的区别
二者都表明了本文件的绝对路径,区别在于,$_SERVER['SCRIPT_FILENAME']指向当前执行脚本的绝对路径:__FILE__指向当前文件的绝对路径:也就是写在哪个文件里就是哪里. 例子: ...
- sqlserver字符串多行合并为一行
--创建测试表 CREATE TABLE [dbo].[TestRows2Columns]( [Id] [,) NOT NULL, [UserName] [nvarchar]() NULL, [Sub ...
- Oracle等待事件之等待事件详解
一. 等待事件的相关知识:1.1 等待事件主要可以分为两类:即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件.1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候, ...
- Spring 体系结构
https://www.w3cschool.cn/wkspring/dcu91icn.html 体系结构 Spring 有可能成为所有企业应用程序的一站式服务点,然而,Spring 是模块化的,允许你 ...