2018.11.06 洛谷P1941 飞扬的小鸟(背包)
传送门
上升看成完全背包。
下降看成01背包。
注意边界转移就行了。
代码:
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
const int N=1e4+5,M=1e3+5;
int n,m,k,f[N][M<<1],ban[N][2],X[N],Y[N];
bool is[N];
inline void calc(int pos){
int ret=0;
for(int i=1;i<pos;++i)if(is[i])++ret;
printf("0\n%d",ret);
exit(0);
}
int main(){
memset(f,0x3f,sizeof(f)),n=read(),m=read(),k=read();
for(int i=1;i<=m;++i)f[0][i]=0;
for(int i=1;i<=n;++i)X[i]=read(),Y[i]=read(),ban[i][0]=0,ban[i][1]=m+1;
for(int i=1,p,d,u;i<=k;++i)p=read(),is[p]=1,ban[p][0]=read(),ban[p][1]=read();
for(int i=1;i<=n;++i){
for(int j=X[i]+1;j<=m+X[i];++j)f[i][j]=min(f[i][j],min(f[i-1][j-X[i]]+1,f[i][j-X[i]]+1));
for(int j=m+1;j<=m+X[i];++j)f[i][m]=min(f[i][m],f[i][j]);
for(int j=1;j<=m-Y[i];++j)f[i][j]=min(f[i][j],f[i-1][j+Y[i]]);
for(int j=1;j<=ban[i][0];++j)f[i][j]=f[0][0];
for(int j=ban[i][1];j<=m;++j)f[i][j]=f[0][0];
bool ff=0;
for(int j=ban[i][0]+1;j<=ban[i][1]-1;++j)if(f[i][j]^f[0][0]){ff=1;break;}
if(!ff)calc(i);
}
int ans=f[0][0];
for(int i=1;i<=m;++i)ans=min(ans,f[n][i]);
printf("1\n%d",ans);
return 0;
}
2018.11.06 洛谷P1941 飞扬的小鸟(背包)的更多相关文章
- 洛谷P1941 飞扬的小鸟(背包 dp)
题意 题目链接 Sol 很显然的dp,设\(f[i][j]\)表示第\(i\)个位置,高度为\(j\)的最小步数 向上转移的时候是完全背包 向下转移判断一下就可以 #include<bits/s ...
- 洛谷 P1941 飞扬的小鸟
洛谷 P1941 飞扬的小鸟 原题链接 首先吐槽几句 noip都快到了,我还不刷起联赛大水题! 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节 ...
- Codevs 3729==洛谷P1941 飞扬的小鸟
P1941 飞扬的小鸟 456通过 2.4K提交 题目提供者该用户不存在 标签动态规划2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录 题目描述 Flappy Bird 是一 ...
- [洛谷P1941] 飞扬的小鸟
洛谷题目链接:飞扬的小鸟 题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了 ...
- 2018.11.06 洛谷P1099 树网的核(最短路+枚举)
传送门 之前看李煜东的书一直感觉是道神题. 然后发现这题数据范围只有300?300?300? 直接上floydfloydfloyd然后暴力就完了啊. 代码: #include<bits/stdc ...
- 洛谷P1941飞扬的小鸟——细节DP
题目:https://www.luogu.org/problemnew/show/P1941 此题主要注意许多细节,详见代码. 代码如下: #include<iostream> #incl ...
- [NOIP2014] 提高组 洛谷P1941 飞扬的小鸟
题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便 ...
- 洛谷P1941 飞扬的小鸟 [noip2014] 背包
正解:背包 解题报告: 话说好久没做背包的题了,都有些陌生了?这几天加强基础题目多刷点儿dp和背包趴qwq 其实这题是95...然后我下了我错的那个测试点,我答案是9874正解是9875...然后读入 ...
- 洛谷 P1941 飞扬的小鸟【dp】
设f[i][j]为在坐标(i,j)时的最小点击次数,转移的话从i-1向上飞或者向下掉转移,注意转移完了之后要把管子部分赋值为inf #include<iostream> #include& ...
随机推荐
- viewpager fragment 滑动界面
先新建几个fragment,包括java和xml 然后在主界面的布局文件中: <android.support.v4.view.ViewPager android:id="@+id/m ...
- PHP抽象方法、抽象类以及接口
1.什么是抽象方法? 我们在类里面定义的没有方法提的方法就是抽象方法.所谓的没有方法体指的是,在声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时 ...
- unity的inputField文本框赋值问题
GameObject t = GameObject.Find("InputFieldT"); Text tt = t.transform.Find("Text" ...
- mac上为nodejs设置环境变量
Mac下面的环境变量设置和Linux差不多,一般为这几个文件(左边的先加载): /etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.pro ...
- linux下svn版本控制的常用命令大全
1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:s ...
- 记录css的常用属性
background-color:背景颜色 color:字体颜色 text-align:标签内容的位置 margin-left:左外边距 font-size:字体大小 font_family:字体格式 ...
- input框和文字对齐问题
css样式解决! style="vertical-align: text-bottom;margin-bottom: 2px;"一.问题产生的条件对于14像素大小的字体是没有本篇所 ...
- linux 压缩命令
.zip格式压缩 zip 压缩文件名 源文件 压缩文件 zip -r 压缩文件名 源目录 #压缩目录 .zip格式解压缩 unzip 压缩文件 #解压缩 .gz格式压缩 gzip ...
- Activity和Intent
- BZOJ1079或洛谷2476 [SCOI2008]着色方案
一道记忆化搜索 BZOJ原题链接 洛谷原题链接 发现对于能涂木块数量一样的颜色在本质上是一样的,所以可以直接压在一个状态,而这题的数据很小,直接暴力开\(6\)维. 定义\(f[a][b][c][d] ...