P1438 無聊的數列

2021-09-12 12:05:41 字數 1301 閱讀 1252

板子題

按照ppt所說的,預留0號位和n+1號位,0號位位於2的若干次方的位置。

但是我試了一下。。。沒有嚴格要求的這樣的寫法,這題也能a,資料有點水。

#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define qcin; ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

#define pb push_back

#define mp make_pair

#define clr(x) memset(x,0,sizeof x)

#define fmax(x) memset(x,0x3f,sizeof x)

#define finit(x) memset(x,-1,sizeof x)

#define iio(n,m) io(n),io(m)

#define ls(p) (p<<1)

#define rs(p) ((p<<1)|1)

#define dis(l,r) r-l+1

#define gstr(str) scanf("%s",str)

#define glen(str) strlen(str)

using namespace std;

namespace input

inline char inputchar()

templateinline void io(t &ret)

if(neg)

ret = -ret;

}typedef long long ll;

typedef pairpll;

const int maxn = 1e6+10;

const int mod = 1e8+7;

const ll inf = 1e18;

typedef ll arr[maxn];

typedef char str[maxn];

void file(int x)}

const long double pi = acos(-1);

arr sum,l,add;

int n,q,m,op,l,r,k,d;

void upd(int ql,int qr,int k,int d)

}ll qry(int p,ll res=0)

int main()else

}return 0;

}

P1438 無聊的數列

無聊的yyb總喜歡搞出一些正常人無法搞出的東西。有一天,無聊的yyb想出了一道無聊的題 無聊的數列。k峰 這題不是傻x題嗎 維護乙個數列,支援兩種操作 1 1 l r k d 給出乙個長度等於r l 1的等差數列,首項為k,公差為d,並將它對應加到a l a r 的每乙個數上。即 令a l a l ...

P1438 無聊的數列

無聊的yyb總喜歡搞出一些正常人無法搞出的東西。有一天,無聊的yyb想出了一道無聊的題 無聊的數列。k峰 這題不是傻x題嗎 維護乙個數列,支援兩種操作 1 1 l r k d 給出乙個長度等於r l 1的等差數列,首項為k,公差為d,並將它對應加到a l a r 的每乙個數上。即 令a l a l ...

P1438 無聊的數列

區間問題,肯定是線段樹了,但是區間加的是乙個等差數列,怎麼辦呢 我們可以通過差分來維護。蛤是差分?搞乙個陣列專門差分,在陣列中記錄 對於l r的區間加x,在l位置加上x,在r 1位置減去x。當查詢某個數值時,該位置上的數加上差分陣列中1 該位置的字首和,自己出組數試一下發現這樣是對的 我們線段樹剛好...