HDU 5945 Fxx and game(DP+单调队列)
来源:互联网 发布:网络上夹头是什么意思 编辑:程序博客网 时间:2024/06/07 09:25
题目链接:点击打开链接
思路:用d[i]表示从i变到1的最小花费, 那么如果i % k == 0, 转移到d[i/k], 还可以转移到min(d[i-t, i]), 我们可以发现这是一个区间最小值, 用线段树维护即可, 但是该题时间卡的很严, 线段树会TLE, 那么我们还可以用单调队列搞一搞。
复杂度O(n)。
细节参见代码:
#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#include <string>#include <vector>#include <stack>#include <ctime>#include <bitset>#include <cstdlib>#include <cmath>#include <set>#include <list>#include <deque>#include <map>#include <queue>using namespace std;typedef long long ll;typedef long double ld;const double eps = 1e-6;const double PI = acos(-1);const int mod = 1000000000 + 7;const int INF = 0x3f3f3f3f;const int seed = 131;const ll INF64 = ll(1e18);const int maxn = 1e6 + 10;int T,n,m,x,k,t,d[maxn];struct node { int id, v; node(int id=0, int v=0):id(id), v(v) {}}a[maxn];int main() { scanf("%d",&T); while(T--) { scanf("%d%d%d", &x, &k, &t); memset(d, 0x3f, sizeof(d)); d[1] = 0; int l = 0, r = 0; a[0] = node(1, 0); for(int i = 2; i <= x; i++) { if(i % k == 0) d[i] = min(d[i], d[i/k]+1); while(a[l].id < i-t && l <= r) l++; if(l > r) { l--; a[l] = node(i, d[i]); continue; } d[i] = min(d[i], a[l].v+1); while(d[i] < a[r].v && r >= l) r--; a[++r] = node(i, d[i]); } printf("%d\n", d[x]); } return 0;}
0 0
- hdu 5945 Fxx and game (dp+单调队列)
- 【HDU 5945】Fxx and game(DP+单调队列)
- HDU 5945 Fxx and game(DP+单调队列)
- HDU-5945 Fxx and game (dp+单调队列)
- HDU 5945 Fxx and game(dp+单调队列优化)
- hdu 5945 Fxx and game(单调队列,dp)
- hdu 5945 Fxx and Game dp(单调队列优化)
- 【HDU 5945】 Fxx and game 【单调队列优化dp】
- [hdu 5945 Fxx and game] dp+单调队列
- hdu - 5945 Fxx and game 【dp + 单调队列】
- hdu 5945 Fxx and game【dp+单调队列】
- [hdu 5945 Fxx and game] dp+单调队列
- BestCoderRound#89 HDU 5945 Fxx and game【单调队列+DP】
- HDU 5945 Fxx and game [单调队列+dp]【动态规划】
- hdu 5945 Fxx and game(dp+单调队列)
- HDU 5945 Fxx and game 单调队列优化DP
- HDU 5945 Fxx and game (DP+单调队列优化)
- hdu 5495 Fxx and game(dp+单调队列优化)
- [转]imx6 uboot logo 更改
- Andriod中的SystemClock类
- Android SDK上手指南:Java应用程序编程
- Oracle监听配置及访问方式完全解析
- Android 清除默认launcher 改为其他的launcher
- HDU 5945 Fxx and game(DP+单调队列)
- NAT类型
- Jenkins环境搭建指导文档【1】-- tomcat
- iOS 将唯一标识符 写入keyChain(钥匙串)保存
- Leetcode 78 Subsets(打印全部子集)
- 自定义头像圆角控件
- 环信即时聊天步骤
- BSOJ:3768 玩具车--贪心+堆
- Differential geometry for machine learning (微分几何在机器学习中的应用)