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& ...
随机推荐
- Python+Selenium学习--键盘事件
场景 我们在实际的测试工作中,有时候需要使用tab键将焦点移动到下一个元素,用于验证元素的排序是否正确.webdriver的Keys()类提供键盘上所有的操作,甚至可以模拟一些组合键的操作,如Ctrl ...
- [LeetCode_96] Unique Binary Search Trees
题目链接 https://leetcode.com/problems/unique-binary-search-trees/ 题意 计算给定节点数的BST有多少种 思路 递归 相关知识 二叉搜索树(B ...
- SAP transportation
1.CONFIGURATION TRANSPORT flow:DEV(100) --scc1--> DEV(400) --STMS after release-> QAS(510) --S ...
- Laravel常用命令行中文版
1.生成控制器 php artisan make:controller ArticleController 对应的会在app/http/controllers下面生成ArticleController ...
- activity背景毛玻璃效果
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...
- 微信小程序中用setData修改一个对象的属性值
原创文章 1. Page({ data: { items:{ //items为一个对象,is_like和like分别为其两个属性 is_like: 0, like: 0 ...
- django分页的东西, 不详细, 但是也足够了。
视图函数中的代码 from django.shortcuts import render, HttpResponse, redirect import json from django.core.pa ...
- jQuery几个好用的插件
jQuery几个好用的插件: jQuery Validate:jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求 ...
- C#生成二维码(可保存二维码图片)
https://www.cnblogs.com/wlays/p/7994393.html 1.NuGet中搜索QRCoder,安装这个插件. 2.创建一个一般处理程序,代码: public void ...
- Android 工程目录
app java:我们写Java代码的地方,业务功能都在这里实现 res:存放我们各种资源文件的地方,有图片,字符串,动画,音频等,还有各种形式的XML文件 Gradle Scripts 1.res资 ...