题目链接  飞扬的小鸟 考场的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); ++…
题目传送门 放在14年Day1T3的dp题目...应该比较看出来是dp算法吧,因为在本蒟蒻看来求最值的算法不清晰时就是dp了==. 状态还是比较好设计的,考虑到每个情况需要记录下的量:f[i][j]表示横坐标到达i,纵坐标到达j的最小点击次数. 转移的话,也不难想,当前有两种转移方法:不点,小鸟会掉一定高度:点q次,小鸟会上升一定高度.(注意是可以连续点很多次的) 也就能写出转移:f[i][j]=min(f[i][j],f[i-1][j-q*x[i]]+q,f[i-1][j+y[i]]),复杂度…
Description Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败. 为了简化问题,我们对游戏规则进行了简化和改编: 游戏界面是一个长为n ,高为 m 的二维平面,其中有k 个管道(忽略管道的宽度). 小鸟始终在游戏界面内移动.小鸟从游戏界面最左边任意整数高度位置出发,到达游戏界面最右边时,游戏完成. 小鸟每个单位时间沿横坐标方向右移的距离为…
飞扬的小鸟 DP 细节有点恶心的DP,设\(f[i][j]\)表示横坐标为\(i\)(从\(0\)开始)高度为\(j\)时,屏幕点击的最小次数为\(f[i][j]\),转移便很好写了,这里要注意枚举当前状态时要枚举完所有\(j\),因为每次转移只向上跳了一次,所以必须枚举完. for(int j=1;j<=m+xd[i];++j) if(j-xd[i]>=0) f[i][j]=min(f[i][j-xd[i]]+1, f[i-1][j-xd[i]]+1); // 向上跳 for(int j=m…
[NOIP2014]飞扬的小鸟 ——!x^n+y^n=z^n 题目描述: Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败. 为了简化问题,我们对游戏规则进行了简化和改编: <i>游戏界面是一个长为n ,高为 m 的二维平面,其中有k 个管道(忽略管道的宽度). <ii>小鸟始终在游戏界面内移动.小鸟从游戏界面最左边任意整数高度位置出…
传送门 https://www.cnblogs.com/violet-acmer/p/9937201.html 参考资料: [1]:https://www.luogu.org/blog/xxzh2425/fei-yang-di-xiao-niao-ti-xie-p1941-post [2]:https://www.luogu.org/blog/JOE/solution-p1941 需注意的地方: (1):在每一时刻都可以点击屏幕好多好多次,就算是在m高度处也可以点击屏幕使其保持在最高点. 题解:…
题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败. 为了简化问题,我们对游戏规则进行了简化和改编: 游戏界面是一个长为 nn,高为 mm 的二维平面,其中有 kk 个管道(忽略管道的宽度). 小鸟始终在游戏界面内移动.小鸟从游戏界面最左边任意整数高度位置出发,到达游戏界面最右边时,游戏完成. 小鸟每个单位时间沿横坐标方向右移的距离为 11,…
坑人啊朴素的dp 75分 用了完全背包才是80分,结果普遍偏小 为什么啊啊啊啊啊 等以后再写一遍吧 #include<iostream> #include<cstdio> #include<cstring> using namespace std; ,M=,INF=1e9; int n,m,k, x,y,p,ll,hh; int up[N],down[N],l[N],h[N], has[N]; int f[N][M]; int ans=INF; void dp(){ ;…
设f[i][j]为到达(i,j)这个位置的最小操作数 就有$f[i][j]=min\{f[i-1][j+Y[i-1]],f[i-1][j-X[i-1]*k]+k\}$ 然后考虑优化一下转移: 对于一系列模x[i-1]相同的高度,它们都可以转移到模x[i-1]相同的高度.而且在它们上边的点,所以只要从下往上做,不断地取一个最小值就可以了(会意 会意...) 要注意的是不管怎么操作,只要操作完高度>M都会变成=M,而且还可以从M点一下还维持在M #include<bits/stdc++.h>…
Prob.1 生活大爆炸版 石头剪刀布 模拟.代码: #include<cstdio> #include<cstring> #include<iostream> using namespace std; const int mp[5][5]={{0,0,1,1,0}, {1,0,0,1,0}, {0,1,0,0,1}, {0,0,1,0,1}, {1,1,0,0,0}}; int A[205],B[205]; int n,lA,lB,ansA,ansB; int mai…