博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BestCoder Round #89 1002 Fxx and game
阅读量:6307 次
发布时间:2019-06-22

本文共 899 字,大约阅读时间需要 2 分钟。

题目链接:

分析:

很容易想到用bfs,然而会超时,几乎是O(xt)了

这里用单调队列优化,

首先反着来,f[x] 为 x 要到1 的步数,f[1] = 0;

1、第一个条件就是 队列里面的元素个数小于t,

2、单调队列是个单调递减的队列。

1 #include 
2 #include
3 #include
4 #include
5 6 using namespace std; 7 8 const int maxn = 1000000 + 5; 9 int dis[maxn];10 int d[maxn];11 12 #define inf 0x3f3f3f3f13 14 int main()15 {16 int t;17 cin>>t;18 while(t--) {19 int x,k,t;20 cin>>x>>k>>t;21 22 int l,r;23 24 l = r = 1;25 dis[1] = 0;26 d[1] = 1;27 28 for(int j=2;j<=x;j++) {29 30 dis[j] = inf;31 32 while(l<=r&&d[l]
=dis[j]) r--;36 d[++r] = j;37 38 }39 40 printf("%d\n",dis[x]);41 }42 43 return 0;44 }

 

转载于:https://www.cnblogs.com/TreeDream/p/6404015.html

你可能感兴趣的文章
Android计算器开发实例
查看>>
有关PHP不利于和MYSQL建立长连接的原因
查看>>
Redis客户端
查看>>
一个积分不等式的再讨论
查看>>
vsftpd.conf配置文件详解
查看>>
阶乘因式分解(一) 给定两个数m,n,其中m是一个素数。 将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m。 输入第一行是一个整数s(0<s<=100),表示测试数据的组数 ...
查看>>
20120515传智学习
查看>>
第7周
查看>>
NYOJ-36 最长公共子序列 AC 分类: NYOJ ...
查看>>
第一次作业
查看>>
C# 判断access建库、建表、文件是否存在等
查看>>
抢月饼 浏览器插件开发
查看>>
JavaScript - 倒计时
查看>>
CSS属性Vertical Align使用方法讲解
查看>>
微信授权文件放到域名根目录下
查看>>
Android-Service概念和用途
查看>>
Web.Config配置
查看>>
44. Wildcard Matching
查看>>
使用JQ实现相同行或列合并
查看>>
java实现反向代理服务器
查看>>