洛谷 P1941 飞扬的小鸟 原题链接 首先吐槽几句 noip都快到了,我还不刷起联赛大水题! 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败. 为了简化问题,我们对游戏规则进行了简化和改编: 游戏界面是一个长为n ,高为 m 的二维平面,其中有k 个管道(忽略管道的宽度). 小鸟始终在游戏界面内移动.小鸟从游戏界面最左边任意整数高度位…
P1941 飞扬的小鸟 456通过 2.4K提交 题目提供者该用户不存在 标签动态规划2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录   题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败. 为了简化问题,我们对游戏规则进行了简化和改编: 游戏界面是一个长为n ,高为 m 的二维平面,其中有k 个管道(忽略管道的宽度…
洛谷题目链接:飞扬的小鸟 题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败. 为了简化问题,我们对游戏规则进行了简化和改编: 游戏界面是一个长为 \(n\),高为 \(m\) 的二维平面,其中有 \(k\) 个管道(忽略管道的宽度). 小鸟始终在游戏界面内移动.小鸟从游戏界面最左边任意整数高度位置出发,到达游戏界面最右边时,游戏完成. 小鸟…
题面 题解 背包细节题,wa了一片,上升的过程我们可以看做一个完全背包(多重背包好像跑不过去),下降 过程是一个0/1背包,为了避免冲突应该先跑多重,先跑0/1就有可能产生这个点又上升又下降的 非法情况,最后在将非法情况删去. 代码 #include<bits/stdc++.h> using namespace std; const int MAXM = 1005; const int MAXN = 10005; const int inf = 0x3f3f3f3f; inline int r…
题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败. 为了简化问题,我们对游戏规则进行了简化和改编: 游戏界面是一个长为n ,高为 m 的二维平面,其中有k 个管道(忽略管道的宽度). 小鸟始终在游戏界面内移动.小鸟从游戏界面最左边任意整数高度位置出发,到达游戏界面最右边时,游戏完成. 小鸟每个单位时间沿横坐标方向右移的距离为1 ,竖直移动…
题目:https://www.luogu.org/problemnew/show/P1941 此题主要注意许多细节,详见代码. 代码如下: #include<iostream> #include<cstdio> #include<cstring> using namespace std; int n,m,k,up[10005],down[10005],p[10005],l[10005],h[10005],f[10005][1005],wall[10005]; int I…
传送门 上升看成完全背包. 下降看成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 an…
正解:背包 解题报告: 话说好久没做背包的题了,都有些陌生了?这几天加强基础题目多刷点儿dp和背包趴qwq 其实这题是95...然后我下了我错的那个测试点,我答案是9874正解是9875...然后读入又特别多实在搞不下来...太难受了QAQ太恶心了QAQ 于是我就 打表然后美滋滋地A了 挣扎了一会儿之后不得不面向数据编程A了这题 昂大概港下思路趴?我觉得我的思路应该是没错的...毕竟过了95分应该还是没有大问题dei 就是两个背包,一个完全一个01 完全是在于因为我们可以往上跳很多次鸭,所以就从…
题意 题目链接 Sol 很显然的dp,设\(f[i][j]\)表示第\(i\)个位置,高度为\(j\)的最小步数 向上转移的时候是完全背包 向下转移判断一下就可以 #include<bits/stdc++.h> #define Fin(x) {freopen(x, "r", stdin);} #define chmin(a, b) (a = (a < b ? a : b)) //#define int long long using namespace std; co…
设f[i][j]为在坐标(i,j)时的最小点击次数,转移的话从i-1向上飞或者向下掉转移,注意转移完了之后要把管子部分赋值为inf #include<iostream> #include<cstdio> using namespace std; const int N=10005,inf=1e9; int n,m,k,p,ans,a[N],b[N],x[N],y[N],f[N][1005]; int main() { scanf("%d%d%d",&n,…
思维难度不大,就是有许多细节要注意. 1.不能开滚动数组. 2.要特判飞过天花板的情况. Code: #include<cstdio> #include<algorithm> using namespace std; const int maxm = 1009; const int maxn = 10000 + 4; const int inf = 10000000 + 4; int F[maxn][maxm], up[maxn], down[maxn], height[maxn]…
题面 这道题是一道隐藏的比较深的DP(我太蒟蒻了!) 设f[i][j]表示到第i列时高度为j的最少步数是多少: 求上升时的方案就是一个完全背包!,求下降时的方案就是一个01背包: 然后处理边界就能A掉: #include <bits/stdc++.h> using namespace std; int n,m,k; ],down[]; ],top[],bo[]; ][]; int main() { cin>>n>>m>>k; ;i<=n;i++){ s…
次元传送门:洛谷P1941 思路 从题意可知 在每个单位时间内 可以无限地向上飞 但是只能向下掉一次 所以我们可以考虑运用背包解决这道题 上升时 用完全背包 下降时 用01背包 设f[x][y]为在坐标(x,y)时的最小点击屏幕次数 当飞到天花板时和撞到柱子时特判 一开始设ans为极大值 如果最后一排的值都为极大值则无解 如果无解就倒着回来判断最远能到达第几根柱子 代码 #include<iostream> #include<cstring> using namespace std…
P1941 飞扬的小鸟 细节题 上升是完全背包 下降是01背包 (数组访问越界本机怎么能过???(大雾)) #include<iostream> #include<cstdio> #include<cstring> #include<cctype> #define re register using namespace std; void read(int &x){ ; while(!isdigit(c)) c=getchar(); )+(x<…
f [ i ] [ j ] 表示横坐标为 i ,高度为 j 时的最小点击次数 分别dp处理: 1.上升,(1)<m (2)>=m 2.下降 3.管道 #include<cstdio> #include<cstring> using namespace std; ,M=; ; int n,m,k,f[N][M],up[N],down[N],l[N],h[N],flag[N]; int min(int x,int y){ return x<y?x:y; } void…
分析: 这是一个DP,没什么好说的,细节很烦人. DP[i][j]表示到第i个位置,高度为j点最少的次数. 转移: 当j=m时 k属于[m-h,m]都可以向DP[i][j]转移,即dp[i][j]=min(dp[i-1][k]+1); 当j!=m时 dp[i][j]=min{dp[i-1][j-h]+1,dp[i-1][j+p]}; 剩下的就是细节问题,没有别的了,细节巨恶心... #include <cstdio> #include <cmath> #include <cs…
P3946 ことりのおやつ(小鸟的点心) 滑完雪之后,ことり突然想吃点心啦!于是她去了甜品店. 日本的冬天经常下雪.不幸的是,今天也是这样,每秒钟雪的厚度会增加q毫米. 秋叶原共有n个地点,编号从1到n.每个地点在开始的时候的积雪高度为hi. 有m条双向道路连接这些地点,它们的长度分别为wi米. 雪太大,公共交通系统已经停摆了,所以ことり得走路回家.她走路的速度是1m/s. 为了方便地图的绘制,秋叶原的道路规划使得每条道路严格地连接两个不同的地点,并且不会有两条道路连接的地点相同. 每个地点都有…
题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败. 为了简化问题,我们对游戏规则进行了简化和改编: 游戏界面是一个长为n ,高为 m 的二维平面,其中有k 个管道(忽略管道的宽度). 小鸟始终在游戏界面内移动.小鸟从游戏界面最左边任意整数高度位置出发,到达游戏界面最右边时,游戏完成. 小鸟每个单位时间沿横坐标方向右移的距离为1 ,竖直移动…
题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败. 为了简化问题,我们对游戏规则进行了简化和改编: 游戏界面是一个长为 nn,高为 mm 的二维平面,其中有 kk 个管道(忽略管道的宽度). 小鸟始终在游戏界面内移动.小鸟从游戏界面最左边任意整数高度位置出发,到达游戏界面最右边时,游戏完成. 小鸟每个单位时间沿横坐标方向右移的距离为 11,…
此题很容易写出方程,由以前的知识可以迁移得,本题可以用完全背包的方法进行优化,使用滚动数组即可得到答案. //莫名奇妙60分.不知道什么细节出了错. #include <bits/stdc++.h> using namespace std; const int maxn = 10005; int main() { // freopen("input.in", "r", stdin); int n, m, k; cin >> n >>…
题目描述 小新正在玩一个简单的电脑游戏. 游戏中有一条环形马路,马路上有 nn个机器人工厂,两个相邻机器人工厂之间由一小段马路连接.小新以某个机器人工厂为起点,按顺时针顺序依次将这 nn个机器人工厂编号为1-n1−n,因为马路是环形的,所以第nn 个机器人工厂和第11个机器人工厂是由一段马路连接在一起的.小新将连接机器人工厂的这 n 段马路也编号为 1-n1−n,并规定第ii段马路连接第 i 个机器人工厂和第 i+1i+1 个机器人工厂(1≤i≤n-11≤i≤n−1),第 nn 段马路连接第 n…
我发现现在没了题解我做普及提高+的题也做不了 更不要说这些提高+难度的‍题 此题是一个二维DP.暴力是三重循环ijk,k枚举在i位置上的点击次数.即 for(int i=1;i<=n;++i) for(int j=1;j<=m;++j) for(int k=1;j-k*up[i]>0;k++)    f[i][j]=min(f[i][j],f[i][k]+k); 这样的暴力能拿到80分.但是很不幸,我一开始搞错了,所以只拿了60,剩下20是TLE. 后来发现可以把水管放在外面计算.也就是…
传送门 本题本来是一个很好的并查集的题(似乎靠的就是并查集),然而蒟蒻我刚刚学习了 tarjan 所以就用 terjan做了一下 大概题意就是:一个人要和另外的一个人告诉他所知道的信息,然后问什么时候他自己的生日可以由 一个人那里传回自己这里来. 那么这个一个人向另一个人传递信息,我们可以看成一条有向边. 因为是问什么时候自己的信息可以传回自己这里, 可以自己yy成,一个有向边的环(因为成为一个环,才可以传回自己这里), 那么因为答案求的是有人知道就停止, 那么则是求一个最小的环,所以我们可以求…
P2668 斗地主 326通过 2.6K提交 题目提供者洛谷OnlineJudge 标签搜索/枚举NOIp提高组2015 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 出现未知错误是说梗啊 30分打酱油 无水印版本 题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4<5<6<7<8<9<10<J<Q<…
[咻咻咻] (https://www.luogu.org/contestnew/show/11616) 令人窒息的洛谷月赛,即将参加NOIp的我竟然只会一道题(也可以说一道也不会),最终145的我只能惨惨的迎接剩下的16天(吧) 下面是题解的代码(填坑),神奇的是这四道题都需要DP.参加SXOI的大佬真是tql,此处手动@ljt12138@__stdcall T1找性质,popcnt为1的加上popcnt为0的就是答案(然而当时没想到只打了暴力) #include<bits/stdc++.h>…
题目链接  飞扬的小鸟 考场的70分暴力(实际只有50分因为数组开小了……) 考场代码(数组大小已修改) #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <functional> using namespace std; #define rep(i, a, b) for (int i(a); i <= (b); ++…
noip好难呀. 上一个感觉有点长了,重开一个. 36.Vigenère 密码 粘个Openjudge上的代码 #include<cstdio> #include<iostream> #include<cstring> #include<cmath> #include <cstdlib> #include <algorithm> #include <iomanip> using namespace std; char a[…
洛谷模拟NOIP考试反思 想法 考了这么简单的试qwq然而依然emmmmmm成绩不好 虽然本次难度应该是大于正常PJ难度的但还是很不理想,离预估分数差很多qwq 于是就有了本反思嘤嘤嘤 比赛链接 原比赛链接(已结束但仍然可提交) 题目解析反思 第一题 超简单(虽然仍然没做对) 第二题 代码扔上来qwq(虽然还是不会) 第三题 代码 第四题 毒瘤极了wodema 据说原来数据是50%那里的,但是出题人z某灵机一动加到了1000orz 于是很多人自然而然地想到了状压DP 普及组是到不了这个难度的,主…
题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败. 为了简化问题,我们对游戏规则进行了简化和改编: 游戏界面是一个长为n ,高为 m 的二维平面,其中有k 个管道(忽略管道的宽度). 小鸟始终在游戏界面内移动.小鸟从游戏界面最左边任意整数高度位置出发,到达游戏界面最右边时,游戏完成. 小鸟每个单位时间沿横坐标方向右移的距离为1 ,竖直移动…
洛谷NOIp热身赛题解 A 最大差值 简单树状数组,维护区间和.区间平方和,方差按照给的公式算就行了 #include<bits/stdc++.h> #define il inline #define vd void #define mod 1000000007 typedef long long ll; namespace IO{ const int maxn=(1<<21)+1; char ibuf[maxn],*iS,*iT,c;int f; inline char getc…