hdu3706單調佇列

2022-03-16 00:57:02 字數 1409 閱讀 4589

很基礎的單調佇列

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define pi acos(-1)

#define ll long long

#define mod 1000000007

#define ls l,m,rt<<1

#define rs m+1,r,rt<<1|1

#pragma comment(linker, "/stack:1024000000,1024000000")

using

namespace

std;

const

double g=10.0,eps=1e-9

;const

int n=100000+10,maxn=500+100,inf=0x3f3f3f

;ll q[n];

intmain()

cout

}return0;

}

能ac的錯解

突然發現這**是有問題的,沒有考慮到s和t的間距問題,可能是資料太弱了,居然過了

所以重新改了一下,加乙個id記錄標號,如果s的標號小於i-a就說明差距大於a了,需要把s++

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define pi acos(-1)

#define ll long long

#define mod 1000000007

#define ls l,m,rt<<1

#define rs m+1,r,rt<<1|1

#pragma comment(linker, "/stack:1024000000,1024000000")

using

namespace

std;

const

double g=10.0,eps=1e-9

;const

int n=100000+10,maxn=500+100,inf=0x3f3f3f

;ll q[n],id[n];

intmain()

cout

}return0;

}

正解

hdu3706基礎的單調佇列

題意 解釋題意不如直接把這個題貼上過來,因為題目很短題意很容易懂。give you three integers n,a and b.then we define si ai mod b and ti min your task is to calculate the product of ti 1...

HDU3415單調佇列

這題是單調佇列的典型運用。至於單調佇列,就是乙個雙端佇列,在隊首 f 出隊,在隊尾 b 出隊入隊,我們要維護整個佇列的元素是單調的,比如,我們要動態查詢從左向右的區間的最小值,那麼我們就要在佇列中維護乙個單調遞增的序列,從左向右列舉,佇列的元素還有乙個id值,代表這個元素在原序列中的位置,然後左邊的...

HDU 3415單調佇列

這個題目屬於常見題型,給定一組環狀數列,求出其中長度不超過k的數字之和的最大值。用到了字首和的技巧,比如要求i,j間所有數字之和,可以提前在輸入的時候計算出從0 i的數字之和及從0 j的數字之和,那麼sum i j sum j sum i 現在的問題是求出最大的sum i j 那麼我們可以固定sum...