青年理论计算机科学家Fxx给的学生设计了一款数字游戏。一开始你将会得到一个数X,每次游戏将给定两个参数x,k,t, 任意时刻你可以对你的数执行下面两个步骤之一:1.X=X−i(1<=i<=t)。2.若X为k的倍数,X=X/k。现在Fxx想要你告诉他最少的运行步骤,使X变成1。

 

设f[x]为x的最小变为1步数

initialize: f[1]=0

equation: f[x]=min{f[x-i](i<=t),f[x/k](if x%k==0)} (x:1~x)

对于求min{f[x-i](i<=t)} 使用单调队列维护区间最小f[x-i]

#include <iostream>
#include <cstring>
#include <cmath>
#include <deque>
using namespace std;
const int N=1e6+10;
int f[N],k,t;
deque<int>mn;
int dfs(int x)
{f[1] = 0;mn.clear();mn.push_back(1);int j = 1;for(int i=2;i<=x;i++){if(i%k==0) f[i]=min(f[i],f[i/k]+1);while(!mn.empty() and i-mn.front() > t) mn.pop_front();if(!mn.empty() and i-mn.front() <= t){f[i]=min(f[i],f[mn.front()]+1);}while(!mn.empty() and f[mn.back()] >= f[i]) mn.pop_back();mn.push_back(i);}return f[x];
}
int main()
{int T;cin>>T;while(T--){memset(f,0x3f,sizeof(f));int x;cin>>x>>k>>t;if(k>1)cout<<dfs(x)<<endl;else cout<<int(ceil(double(x-1)/t))<<endl;}return 0;
}

View Code

 

转载于:https://www.cnblogs.com/zsyacm666666/p/6135364.html

hdu 5945 Fxx and game相关推荐

  1. HDU 5945 Fxx and game 单调队列优化dp

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5945 题目 Young theoretical computer scientist Fxx desi ...

  2. Fxx and game hdu 5945 单调队列dp

    dfs你怕是要爆炸 考虑dp; 很容易想到 dp[ i ] 表示到 i 时的最少转移步数: 那么: dp[ i ]= min( dp[ i ],dp[ i-j ]+1 ); 其中 i-t<=j& ...

  3. Fxx and game HDU - 5945(单调队列优化dp)

    思路:考虑反着dp,从dp[1]倒推dp[x] 因为dp[i]<=dp[j]  j<i  ,所以考虑用单调队列来优化. 除法不用考虑,考虑加法就行. 代码: #include <bi ...

  4. 【HDU 5945】Fxx and game

    1.题目链接.一开始想直接搜索过了,但是发现似乎不得行.然后dp可做,因为上一状态向下一状态的转移最多只有t+1个 dp[i]=min(dp[i-1],dp[i-2]....dp[i-t])+1当k| ...

  5. HDU 5944 Fxx and string(暴力/枚举)

    传送门 Fxx and string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Othe ...

  6. HDU 5944 Fxx and string BestCoder Round #89 1001(细节)

    Fxx and string  Accepts: 213  Submissions: 1867  Time Limit: 2000/1000 MS (Java/Others)  Memory Limi ...

  7. 【hdu 5944】Fxx and string(枚举)

    Fxx and string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) ...

  8. 【HDU 5944】Fxx and string

    1.题目链接.题意比较简单,想表达的意思就是(i,j,k)是等比数列的相邻的三项,Si='y',Sj='r',Sk='x'.满足这些条件.而且第三点还强调了,j必须是中间项. 2.直接枚举一下公比完事 ...

  9. HDU 4389 - X mod f(x)

    题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4389 2012多校,第9场,1010 . 问题是,询问区间内 存在多少个 哈沙德数(Harshad ...

最新文章

  1. react中使用构建缓存_如何在React中构建热图
  2. 你说我画,你画我说:全球最大中文跨模态生成模型文心ERNIE-ViLG来了!
  3. js控制文本框仅仅能输入中文、英文、数字与指定特殊符号
  4. c 普通的文本变成注释文本的快捷键_IntelliJ Idea 常用快捷键列表 (2019年总结)
  5. 如何入门CTF夺旗赛
  6. 6-6 求二叉树高度 (15 分)
  7. 《Essential C++》读书笔记 之 基于对象编程风格
  8. oracle 索引-1无效,oracle 索引失效原因及解決方法
  9. matplotlib中subplot的各参数的作用
  10. 基于Java JAAS表单的身份验证
  11. 计算机2级vb查询,计算机2级VB
  12. 程序员必备的25个好网站汇总
  13. Python中字典的常用方法
  14. wishbone协议(B.3)下载地址
  15. 皱纹检测Wrinkle-detection
  16. c++之十进制转二进制
  17. VL53L0测距芯片试用【ST主题月】
  18. python3 打包后执行报错failed to execute script ***
  19. opencv 求质心理论指导
  20. 如何采集喜欢的电视剧照?

热门文章

  1. 绝了!这款工具让SpringBoot不再需要Controller、Service、DAO、Mapper!
  2. 牛逼哄哄的布隆过滤器,到底有什么用?
  3. 熬了一个通宵,终于把 7 千万个 Key 删完了
  4. 如何采集Nginx的日志?
  5. 一线大厂的分布式唯一ID生成方案是什么样的?
  6. Science首发奥密克戎突刺蛋白分子水平分析,揭秘2大传染性增强原因,柳叶刀:全球大流行有望3月结束...
  7. 得了诺奖的彩色照相术失传100多年,现在终于被找回来了
  8. 清华唐杰团队造了个“中文AI设计师”,效果比Dall·E好,可在线试玩
  9. 谷歌、微软2020年招新大幅萎缩:新冠流行打击科技巨头
  10. 关系型数据库管理系统和SQL介绍