题意:

解释题意不如直接把这个题粘贴过来,因为题目很短题意很容易懂。

Give you three integers n, A and B. 

Then we define Si = Ai mod B and Ti = Min{ Sk | i-A <= k <= i, k >= 1}

Your task is to calculate the product of Ti (1 <= i <= n) mod B.

 

Input

Each line will contain three integers n(1 <= n <= 107),A and B(1 <= A, B <= 231-1). 

Process to end of file.

 

Output

For each case, output the answer in a single line.

 

Sample Input

1 2 3

2 3 4

3 4 5

4 5 6

5 6 7

 

Sample Output

2

3

4

5

6

思路:

      比较简单的一个单调队列题目,我们可以建立一个单调递增的单调队列,开一个1000W的数组,不用怕报内存,内存够,然后我们每次都把一个新值进队列,然后把队尾比这个值大于等于的出队,对头把下标之差大于A的出队就行了,每次都是把一个新的值放进队列,然后在对头拿一个最小的来作为当前的T,然后一边更新,一边拿,一边记录答案就行了,O(n)的时间复杂度,1000W的,可以过(不过感觉还是有点险,但这个题目都O(n)了在过不了,那估计就设计到转换什么的了,那我就做不了了,嘿嘿)。

#include<stdio.h>

#include<string.h>

#define N 10000005

typedef struct

{

   int id;

   __int64 num;

}NODE;

NODE Q[N];

int tou ,wei;

__int64 A ,B ,n;

void insert(int id ,__int64 num)

{

   for(int i = wei ;i > tou ;i --)

   {

      if(Q[wei].num >= num) wei --;

      else break;

   }

   Q[++wei].num = num;

   Q[wei].id = id;

   for(int i = tou + 1 ;i <= wei ;i ++)

   if(id - Q[i].id > A) tou ++;

   else break;

}

int main ()

{

   while(~scanf("%d %I64d %I64d" ,&n ,&A ,&B))

   {

      __int64 now = A % B;

      __int64 Ans = 1;

      tou = wei = 0;

      for(int i = 1 ;i <= n ;i ++)

      {

         insert(i ,now);

         Ans = (Ans * Q[tou+1].num) % B;

         now = now * A % B;

      }

      printf("%I64d\n" ,Ans);

   }

   return 0;

}

         

hdu3706基础的单调队列的更多相关文章

  1. hdu3706单调队列

    很基础的单调队列 #include<map> #include<set> #include<cmath> #include<queue> #includ ...

  2. POJ 2823 单调队列入门水题

    最最基础的单调队列题目.一个单增一个单减.还是可以借此好好理解一下单调队列的. #include <stdio.h> #include <string.h> #include ...

  3. POJ2823 单调队列

    POJ2823 http://poj.org/problem?id=2823 最基础的单调队列,说是数据结构,其实就是一种更新数组数据的方法. 之前还准备用deque,超时了,直接head,tail快 ...

  4. 单调队列&单调栈 基础

    参考博客https://www.cnblogs.com/tham/p/8038828.html 例题  poj 2823 Sliding Window Time Limit: 12000MS   Me ...

  5. BZOJ 1047: [HAOI2007]理想的正方形( 单调队列 )

    单调队列..先对每一行扫一次维护以每个点(x, y)为结尾的长度为n的最大最小值.然后再对每一列扫一次, 在之前的基础上维护(x, y)为结尾的长度为n的最大最小值. 时间复杂度O(ab) (话说还是 ...

  6. [小明打联盟][斜率/单调队列 优化dp][背包]

    链接:https://ac.nowcoder.com/acm/problem/14553来源:牛客网 题目描述 小明很喜欢打游戏,现在已知一个新英雄即将推出,他同样拥有四个技能,其中三个小技能的释放时 ...

  7. 洛谷P2900 [USACO08MAR]土地征用Land Acquisition(动态规划,斜率优化,决策单调性,线性规划,单调队列)

    洛谷题目传送门 用两种不一样的思路立体地理解斜率优化,你值得拥有. 题意分析 既然所有的土地都要买,那么我们可以考虑到,如果一块土地的宽和高(其实是蒟蒻把长方形立在了平面上)都比另一块要小,那么肯定是 ...

  8. DP的各种优化(动态规划,决策单调性,斜率优化,带权二分,单调栈,单调队列)

    前缀和优化 当DP过程中需要反复从一个求和式转移的话,可以先把它预处理一下.运算一般都要满足可减性. 比较naive就不展开了. 题目 [Todo]洛谷P2513 [HAOI2009]逆序对数列 [D ...

  9. 洛谷P1776 宝物筛选_NOI导刊2010提高(02)(多重背包,单调队列)

    为了学习单调队列优化DP奔向了此题... 基础的多重背包就不展开了.设\(f_{i,j}\)为选前\(i\)个物品,重量不超过\(j\)的最大价值,\(w\)为重量,\(v\)为价值(蒟蒻有强迫症,特 ...

随机推荐

  1. C#中的字段与属性的区别及属性的作用

    C#中的字段与属性的区别及属性的作用 先上代码 public class Employee { //字段 private string name; //属性 public string Name { ...

  2. 免费报表工具 积木报表(JiMuReport)的安装

    分享一b/s报表工具(服务),积木报表(JiMuReport),张代浩大佬出品. 官网:http://www.jimureport.com/ 离线版官方下载:https://github.com/zh ...

  3. This is my first blog----文件操作基本流程

    一,文件操作基本流程. 计算机系统分为: 计算机硬件, 操作系统, 应用程序三部分 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件 ...

  4. 关于ORACLE数据库跨库调用序列的解决办法

    问题  ORACLE  数据库   用户1   xscg  有序列      seq_S_ATTACHMENT_INFO.nextval         我要在  用户2   xsds   里面调用 ...

  5. Redis 通过 RDB 方式进行数据备份与还原

    Redis 通过 RDB 方式进行数据备份与还原 Intro 有的时候我们需要对 Redis 的数据进行迁移,今天介绍一下通过 RDB(快照)文件进行 Redis 数据的备份和还原 Redis 持久化 ...

  6. android分析之Binder 01

    终于还是得写一篇关于Binder的文章了.从最初接触Android到花大把时间研究Android源码,Binder一直是分析道路的拦路虎.看了几本最流行的Android源码分析书籍,每次基本上都不能把 ...

  7. ResNet论文笔记

    其实ResNet这篇论文看了很多次了,也是近几年最火的算法模型之一,一直没整理出来(其实不是要到用可能也不会整理吧,懒字头上一把刀啊,主要是是为了将resnet作为encoder嵌入到unet架构中, ...

  8. c++反汇编 switch

    switch 线性处理 24: int nIndex = 0; 01377EBE C7 45 F8 00 00 00 00 mov dword ptr [nIndex],0 25: scanf(&qu ...

  9. c/s应用程序自动更新组件GeneralUpdate3.2.1发布

    一.组件简介 GeneralUpdate是基于.net standard 开发的一款(c/s应用)自动升级程序.该组件将更新的核心部分抽离出来方便应用于多种项目当中目前适用于wpf,控制台应用,win ...

  10. OpenCV图像处理中“找圆技术”的使用

    一.为什么"找圆"     圆是基本图形的一种,更为重要的是,自然情况下采集的图像,很少大量存在"圆":但凡存在的,大都是人工的,那么就必然代表特定的意义,从而 ...