洛谷P1941 飞扬的小鸟 [noip2014] 背包
正解:背包
解题报告:
话说好久没做背包的题了,都有些陌生了?这几天加强基础题目多刷点儿dp和背包趴qwq
其实这题是95...然后我下了我错的那个测试点,我答案是9874正解是9875...然后读入又特别多实在搞不下来...太难受了QAQ太恶心了QAQ
于是我就 打表然后美滋滋地A了 挣扎了一会儿之后不得不面向数据编程A了这题
昂大概港下思路趴?我觉得我的思路应该是没错的...毕竟过了95分应该还是没有大问题dei
就是两个背包,一个完全一个01
完全是在于因为我们可以往上跳很多次鸭,所以就从小往大地做f[i][j]=min(f[i-1][j-x[i-1]]+1,f[i][j-x[i-1]]+1)
然后01是往下降只能降一次,然后就f[i][j]=min(f[i][j],f[i-1][j+y[i-1]])
然后注意一下那个到顶上的事儿特殊处理下就成了
对了这题的话我们可以发现其实f[i][]只会从f[i-1][]和f[i][]转移来所以其实应该是可以开f[1/2/3][]就够了?(当开不下的时候
但是反正是开得下的而且那样很麻烦鸭,那就直接设就行了不用想那么多嘛qwq
over.放个代码我就去做NOIp2014最后一题辣!我真滴觉得我今天能搞完14年的!yeah!
#include<bits/stdc++.h> using namespace std; #define ll long long #define rp(i,x,y) for(register ll i=x;i<=y;++i) +,M=+; ll n,m,k,x[N],y[N],f[N][M],ans; struct guandao{ll l,h;}gd[N]; ; inline ll read() { ;; '))ch=getchar(); if(ch=='-')ch=getchar(); )+(x<<)+(ch^'),ch=getchar(); return y?x:-x; } inline ll check(){;i--)rp(j,,m)][])return i;} int main() { n=read();m=read();k=read();memset(f,/,][]; rp(i,,n)x[i]=read(),y[i]=read(),gd[i].l=,gd[i].h=m+;gd[n+].l=;gd[n+].h=m+; rp(i,,k){ll t=read()+;gd[t].l=read(),gd[t].h=read();} rp(i,gd[].l+,gd[].h-)f[][i]=;++n; rp(i,,n) { rp(j,x[i-]+,x[i-]+m)f[i][j]=min(f[i-][j-x[i-]]+,f[i][j-x[i-]]+); rp(j,m+,m+x[i-])f[i][m]=min(f[i][m],f[i][j]); rp(j,,m-y[i-])f[i][j]=min(f[i][j],f[i-][j+y[i-]]); rp(j,,gd[i].l)f[i][j]=f[][];rp(j,gd[i].h,m)f[i][j]=f[][]; } rp(i,gd[n].l+,gd[n].h-)if(f[n][i])ans=min(f[n][i],ans); )++ans; ][]); ll cjk=check(); ans=; rp(i,,cjk) || gd[i].h!=m+)++ans; printf("0\n%lld\n",ans); ; }
95我也很绝望鸭QAQ
洛谷P1941 飞扬的小鸟 [noip2014] 背包的更多相关文章
- 2018.11.06 洛谷P1941 飞扬的小鸟(背包)
传送门 上升看成完全背包. 下降看成01背包. 注意边界转移就行了. 代码: #include<bits/stdc++.h> using namespace std; inline int ...
- 洛谷P1941飞扬的小鸟 完全背包
思维难度不大,就是有许多细节要注意. 1.不能开滚动数组. 2.要特判飞过天花板的情况. Code: #include<cstdio> #include<algorithm> ...
- 洛谷 P1941 飞扬的小鸟
洛谷 P1941 飞扬的小鸟 原题链接 首先吐槽几句 noip都快到了,我还不刷起联赛大水题! 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节 ...
- Codevs 3729==洛谷P1941 飞扬的小鸟
P1941 飞扬的小鸟 456通过 2.4K提交 题目提供者该用户不存在 标签动态规划2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录 题目描述 Flappy Bird 是一 ...
- [洛谷P1941] 飞扬的小鸟
洛谷题目链接:飞扬的小鸟 题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了 ...
- [NOIP2014] 提高组 洛谷P1941 飞扬的小鸟
题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便 ...
- 洛谷P1941 飞扬的小鸟(背包 dp)
题意 题目链接 Sol 很显然的dp,设\(f[i][j]\)表示第\(i\)个位置,高度为\(j\)的最小步数 向上转移的时候是完全背包 向下转移判断一下就可以 #include<bits/s ...
- 洛谷P1941飞扬的小鸟——细节DP
题目:https://www.luogu.org/problemnew/show/P1941 此题主要注意许多细节,详见代码. 代码如下: #include<iostream> #incl ...
- 洛谷 P1941 飞扬的小鸟 (NOIP 2014)
题面 题解 背包细节题,wa了一片,上升的过程我们可以看做一个完全背包(多重背包好像跑不过去),下降 过程是一个0/1背包,为了避免冲突应该先跑多重,先跑0/1就有可能产生这个点又上升又下降的 非法情 ...
随机推荐
- MongoDB(四)-- 主从配置
一.前言 虽然MongoDB官方已经不建议使用主从模式了,但是 熟悉下 也是有用的,替代方案是采用副本集的模式.slave默认情况下是不支持读写的,但是master会把数据同步到slave,不支持客户 ...
- java jni调用
http://www.cnblogs.com/mandroid/archive/2011/06/15/2081093.html
- CharacterMotor_刚体角色驱动
using UnityEngine; //this class holds movement functions for a rigidbody character such as player, e ...
- c++学习笔记—单链表基本操作的实现
用c++语言实现的单链表基本操作,包括单链表的创建(包括头插法和尾插法建表).结点的查找.删除.排序.打印输出.逆置.链表销毁等基本操作. IDE:vs2013 具体实现代码如下: #include ...
- c++学习笔记——个单词转换的map程序详解
实现功能:给定一个string,将它转换为另一个string.程序输入是两个文件,第一个文件保存转换规则,第二个文件为将要进行转换的文本. IDE:Windows7+VS2013 #include & ...
- 利用pdb获取未导出符号
BOOL InitSymHandler(HANDLE hProc) { CHAR SymPath[MAX_PATH], CurDir[MAX_PATH]; GetCurrent ...
- Android studio 插件安装
安装插件步骤 一 CodeGlance 最大的用途:可用于快速定位代码.显示在右侧 二 Android Studio Prettify 可以将代码中的字符串写在string.xml文件中 选中字符串鼠 ...
- LeetCode 25 Reverse Nodes in k-Group Add to List (划分list为k组)
题目链接: https://leetcode.com/problems/reverse-nodes-in-k-group/?tab=Description Problem :将一个有序list划分 ...
- Laravel 5.1 中如何使用模型观察者
有时候我们需要在一个表更改后,触发某个事件,最常见的比如,首页推荐商品 1 更改了,需要清空所有首页商品缓存. 首先我们需要在建立一个观察者类,比如 App\Model\Observers\Proje ...
- HDU 2102 A计划(BFS/DFS走迷宫)
A计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...