青年理论计算机科学家Fxx给的学生设计了一款数字游戏。

一开始你将会得到一个数X,每次游戏将给定两个参数x,k,t, 任意时刻你可以对你的数执行下面两个步骤之一:

.X=X−i(<=i<=t)。

.若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+;
int f[N],k,t;
deque<int>mn;
int dfs(int x)
{
f[] = ;
mn.clear();
mn.push_back();
int j = ;
for(int i=;i<=x;i++)
{
if(i%k==) f[i]=min(f[i],f[i/k]+);
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()]+);
}
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>)
cout<<dfs(x)<<endl;
else cout<<int(ceil(double(x-)/t))<<endl;
}
return ;
}
 

hdu 5945 Fxx and game的更多相关文章

  1. hdu 5945 Fxx and game(单调队列优化DP)

    题目链接:hdu 5945 Fxx and game 题意: 让你从x走到1的位置,问你最小的步数,给你两种走的方式,1.如果k整除x,那么你可以从x走一步到k.2.你可以从x走到j,j+t<= ...

  2. hdu 5945 Fxx and game(dp+单调队列! bc#89)

    Young theoretical computer scientist Fxx designed a game for his students. In each game, you will ge ...

  3. HDU 5945 Fxx and game (DP+单调队列)

    题意:给定一个 x, k, t,你有两种操作,一种是 x - i (0 <= i <= t),另一种是 x / k  (x % k == 0).问你把x变成1需要的最少操作. 析:这肯定是 ...

  4. HDU 5945 / BestCoder Round #89 1002 Fxx and game 单调队列优化DP

    Fxx and game 问题描述   青年理论计算机科学家Fxx给的学生设计了一款数字游戏. 一开始你将会得到一个数\:XX,每次游戏将给定两个参数\:k,tk,t, 任意时刻你可以对你的数执行下面 ...

  5. 【23.33%】【hdu 5945】Fxx and game

    Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submission(s ...

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

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

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

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

  8. hdu 5944 Fxx and string

    \:nn,下标从1开始,第\:i\:i位的字母为\:s_is​i​​,现在Fxx想知道有多少三元组\:(i,j,k)\:(i,j,k)满足下列条件 1.i,j,k\:i,j,k三个数成等比数列 2.s ...

  9. HDU 5945 维护一个单调队列 dp

    Fxx and game Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Tot ...

随机推荐

  1. 利用Redis解决Url过长的问题

    做网站,接手别人的代码,发现url有时候会过长导致页面直接翻掉. 后来想了一下可以利用redis将太长的地方暂存,加载页面时获取即可. 存Redis: /// <summary> /// ...

  2. hdu 1258 Sum It Up(dfs+去重)

    题目大意: 给你一个总和(total)和一列(list)整数,共n个整数,要求用这些整数相加,使相加的结果等于total,找出所有不相同的拼凑方法. 例如,total = 4,n = 6,list = ...

  3. Java基础知识系列——数组

    数组是我们在编程中常用到的一种数据结构. 数组创建有三种方式,以int类型为例: 1.int value[] = new int[]{1,2,3,4,5}; //{}中的是元素 2.int value ...

  4. form表单里如果只存在一个文本框,enter键提交

    在这里说一说浏览器里form表单的默认行为 我们都知道浏览器是存在很多默认行为的,可能是出于常用行为考虑又或者是历史原因.但有时候我们不需要这些默认行为.以下: 1).当form表单里只存在一个inp ...

  5. leveldb 学习笔记之log结构与存取流程

    log文件的格式 log文件每一条记录由四个部分组成: CheckSum,即CRC验证码,占4个字节 记录长度,即数据部分的长度,2个字节 类型,这条记录的类型,后续讲解,1个字节 数据,就是这条记录 ...

  6. iOS 定位功能的实现

    1.导入框架 Xcode中添加"CoreLocation.framework" 2.导入主头文件 #import <CoreLocation/CoreLocation.h&g ...

  7. SegmentControl的多选项实现(标题栏)

    NSArray *titleArr = @[STR(@"全部"), STR(@"未使用"), STR(@"已赠送"), STR(@" ...

  8. pycharm5新版注册

    ##注册方法1### 0x1 ,安装 0x2 , 调整时间到2038年. 0x3 ,申请30天试用 0x4, 退出pycharm 0x5, 时间调整回来. ##注册方法2### 注册方法: 在 注册时 ...

  9. Python 9X9乘法口诀表

    #乘法口诀 for i in range(1,10): for j in range(1,i+1): print ( j,'*',i,'=',j*i,'',' ',end='') print(end= ...

  10. 学习html心得

    最近我们小组在搞一个网站项目,每个组员都在学习html与css. 我们先找到相关网站寻找信息进行学习,内容不多,我很快就把html的教程看完了.感觉还不错,就下载了html编辑器Notepad++进行 ...