思路{

  对于每一列,小鸟或下落,或上升。那我们很容易想到对应的背包问题!

  按照完全背包的思想更新上升部分,01背包的方法更新下降部分。

  撞到柱子了(aluba。。。。。。aluba.。。。。。)不慌,只需把它设为不可打即可,

  处理出最后到达的的柱子乱搞即可。。。。。。

  还是比较水的。。。。。。

}

 1 #include<map>
 2 #include<set>
 3 #include<list>
 4 #include<deque>
 5 #include<cmath>
 6 #include<queue>
 7 #include<stack>
 8 #include<vector>
 9 #include<cstdio>
10 #include<complex>
11 #include<cstring>
12 #include<cstdlib>
13 #include<iostream>
14 #include<algorithm>
15 #define maxx 10010
16 using namespace std;
17 struct ZHU{
18     int pos,h,l;
19 }a[maxx];
20 int flag,x[maxx],y[maxx];
21 int f[2][maxx],now,n,m,k,B;
22 bool comp(const ZHU & A,const ZHU & b){return A.pos<b.pos;}
23 int main(){
24     scanf("%d%d%d",&n,&m,&k);
25     memset(f,127,sizeof(f));flag=f[1][1];
26     for(int i=1;i<=n;++i)scanf("%d%d",&x[i],&y[i]);
27     for(int i=1;i<=k;++i)
28         scanf("%d%d%d",&a[i].pos,&a[i].l,&a[i].h),a[i].pos++;
29     int nowp=1;sort(a+1,a+k+1,comp);
30     if(a[nowp].pos==1)for(int i=a[nowp].l+1;i<a[nowp].h;++i)f[now][i]=0,nowp=2;//初始化
31     else for(int i=1;i<=m;++i)f[now][i]=0;
32     for(int i=2;i<=n+1;++i){
33         now^=1;for(int j=1;j<=m;++j)f[now][j]=flag;
34         for(int j=1;j<=m-x[i-1];++j)
35             f[now][j+x[i-1]]=min(f[now^1][j]+1,f[now][j+x[i-1]]),//由于滚动数组先01背包更新解
36                 f[now][j+x[i-1]]=min(f[now][j]+1,f[now][j+x[i-1]]);//完全背包更新解
37         for(int j=m-x[i-1]+1;j<=m;++j)
38             f[now][m]=min(f[now^1][j]+1,f[now][m]),
39                 f[now][m]=min(f[now][j]+1,f[now][m]);//同上,只是到顶了。。。。
40         for(int j=m;j>y[i-1];--j)
41             f[now][j-y[i-1]]=min(f[now][j-y[i-1]],f[now^1][j]);//处理01背包下降的情况
42         if(a[nowp].pos==i){//判断柱子
43             for(int j=1;j<=m;++j)
44                 if(j<=a[nowp].l)f[now][j]=flag;
45                 else if(j>=a[nowp].h)f[now][j]=flag;
46             nowp++;
47         }
48         for(int j=1;j<=m;++j)if(f[now][j]!=flag)B=i;//取最优解
49         if(B!=i)cout<<"0 "<<nowp-2,exit(0);
50     }int ans=flag;
51     for(int i=1;i<=m;++i)ans=min(ans,f[now][i]);
52     if(ans!=flag)cout<<"1 "<<ans;
53     return 0;
54 }

转载于:https://www.cnblogs.com/zzmmm/p/7123861.html

[NOIP2014]飞扬的小鸟相关推荐

  1. NOIP2014 飞扬的小鸟

    3. 飞扬的小鸟 (bird.cpp/c/pas) [问题描述] Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的 ...

  2. noip2014飞扬的小鸟

    一百分做法,完全背包的运用 #include<cstdio> #include<algorithm> #include<cstdlib> #include<c ...

  3. [noip2014] 飞扬的小鸟

    题目描述: 为了简化问题,我们对游戏规则进行了简化和改编: 游戏界面是一个长为n,高 为m的二维平面,其中有k个管道(忽略管道的宽度). 小鸟始终在游戏界面内移动.小鸟从游戏界面最左边任意整数高度位置 ...

  4. NOIP2014 飞扬的小鸟 题解

    描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告 ...

  5. Luogu 1941 【NOIP2014】飞扬的小鸟 (动态规划)

    Luogu 1941 [NOIP2014]飞扬的小鸟 (动态规划) Description Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度 ...

  6. P1941 [NOIP2014 提高组] 飞扬的小鸟

    题目来源 [NOIP2014 提高组] 飞扬的小鸟 - 洛谷 题目考点 动态规划,dp    枚举,暴力    背包 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点 ...

  7. 【NOIP2014】飞扬的小鸟 背包dp

    UOJ[NOIP2014]飞扬的小鸟 背包dp codevs 3729 飞扬的小鸟 苟且抄DQS代码. 题解都在代码注释中-- #include <cstdio> #include < ...

  8. P1941 [NOIP2014 提高组] 飞扬的小鸟——解题报告

    一.题目链接: P1941 [NOIP2014 提高组] 飞扬的小鸟 二.题目大意 游戏界面是一个长为nnn,高为mmm的二维平面,其中有kkk个管道(忽略管道的宽度).小鸟始终在游戏界面内移动.小鸟 ...

  9. C++——NOIP提高组——飞扬的小鸟

    飞扬的小鸟[NOIP2014提高组] 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟 ...

最新文章

  1. 51单片机好学嘛?学完51单片机学什么?
  2. python中单个和批量增加更新的mysql(没有则插入,有则更新)
  3. xshell链接kali
  4. 3732: Network
  5. java web编写计算器_javaWeb 使用 jsp 和 javaBean 实现计算器功能
  6. axios 是如何封装 HTTP 请求的
  7. 关于Cocos2d-x中图集中图片的调用
  8. Atitit 深入了解UUID含义是通用唯一识别码 (Universally Unique Identifier),
  9. xiaomi手机因小米账户密码遗失而无法激活手机的解决方案
  10. WinDbg、Symbol Packages、SRVINSTW、DebugView下载地址
  11. 用u盘安装mysql,奥维互动地图企业服务器基本环境安装 ——U盘引导安装CentOS 6.5...
  12. Python爬虫第一课:了解爬虫与浏览器原理
  13. android剪贴板历史,可能是史上最便捷的剪贴板应用 -- Native Clipboard #Android
  14. java学习心路历程
  15. 远期、期货和互换(一)
  16. Db2插入数据溢出报错测试
  17. 留言板(php+数据库)
  18. 无限流量与5G即将来临,我们距淘汰Wi-Fi还有多少时间?
  19. Windows版本下安装使用Grafana教程
  20. scipy中的imread,imresize怎么用

热门文章

  1. sql安装联机丛书提示发生网络错误_速达软件:安装问题解答
  2. r语言三维柱状图_R语言三维图的绘制
  3. 【WebRTC---序篇】(一)为什么要使用WebRTC
  4. 【TCP三次握手与四次挥手最强解析】
  5. C语言打印输出红色字体
  6. html文字添加波浪线,利用css渐变给文字下方加波浪线
  7. google账号解除游戏绑定_附方法!关于物联卡手机号的绑定与解绑
  8. 大学计算机应用基础第三版简答题答案,大学计算机应用基础习题答案
  9. 计算机网络整体框架理解与把握(持续更新)
  10. 百兆光纤收发器和千兆光纤收发器的区别