日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hdu3706基础的单调队列

發(fā)布時(shí)間:2025/6/17 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu3706基础的单调队列 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題意:
解釋題意不如直接把這個(gè)題粘貼過來,因?yàn)轭}目很短題意很容易懂。
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


思路:
? ? ? 比較簡單的一個(gè)單調(diào)隊(duì)列題目,我們可以建立一個(gè)單調(diào)遞增的單調(diào)隊(duì)列,開一個(gè)1000W的數(shù)組,不用怕報(bào)內(nèi)存,內(nèi)存夠,然后我們每次都把一個(gè)新值進(jìn)隊(duì)列,然后把隊(duì)尾比這個(gè)值大于等于的出隊(duì),對(duì)頭把下標(biāo)之差大于A的出隊(duì)就行了,每次都是把一個(gè)新的值放進(jìn)隊(duì)列,然后在對(duì)頭拿一個(gè)最小的來作為當(dāng)前的T,然后一邊更新,一邊拿,一邊記錄答案就行了,O(n)的時(shí)間復(fù)雜度,1000W的,可以過(不過感覺還是有點(diǎn)險(xiǎn),但這個(gè)題目都O(n)了在過不了,那估計(jì)就設(shè)計(jì)到轉(zhuǎ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;
}
? ? ? ? ?



《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的hdu3706基础的单调队列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。