題意:給出乙個長度為n的序列,m次操作,操作分為兩種:
1.在x的位置上加上數y,在x+1的位置加上數y-1,以此類推,一直到n或者y為0.
2.詢問x位置上數字為多少
分析:乍一看像是線段樹,但是貌似又很難用線段樹解決,主要是區間不好處理,而分塊對於這類題目有優勢,在區間上更容易計數,對於每個塊,對於1操作,如果某個塊全覆蓋,記錄兩個值,增值和差值,通過加加減減就能得到答案,如果不是全覆蓋直接sq
rt(n
) 處理值,複雜度o(
m∗sq
rt(n
))
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//#pragma comment(linker, "/stack:1024000000,1024000000");
using
namespace
std;
#define inf 0x3f3f3f3f
#define maxn 20004
long
long mod = 772002+233;
long
long a[maxn];
int n,q;
int belong[maxn],l[maxn],r[maxn],block,num;
int val[maxn],del[maxn];
void init()
for(int i=1;i<=num;i++)
}void update(int x,int y,int num)
return ;
}for(int i=x;i<=r[belong[x]];i++)
for(int i=belong[x]+1;ifor(int i=l[belong[y]];i<=y;i++)
}long
long query(int x)
return temp%mod;
}int main()
init();
while(q--)
else}}
return
0;}
1292 聖誕老人
這道題是一道動態規劃題 for int j 0 j 上面是該題的式子。例如 測試資料 315 199 155 301 215 170 150 25 當發射第二顆飛彈時i 2,我們另j 0。首先a j a i 即a 0 a 2 成立。於是我們看一下ans j 1 ans i ans 0 1 ans 2...
uva1292 基礎樹形dp
思路 題目的意思是,遊一棵樹或者是森林,然後要在某些節點上放置乙個警察來防衛,然後每個警察呢只能防衛到自己所在節點和相鄰的節點,求所有節點都在直接或間接被防衛的時候需要的最少警察數目。意思顯然,然後就是dp了 對於當前節點的決策是選與不選,dp i j 表示第i個節點的是否直接放置警察 初始化是dp...
1292 寵物小精靈之收服
寵物小精靈是一部講述小智和他的搭檔皮卡丘一起冒險的故事。一天,小智和皮卡丘來到了小精靈狩獵場,裡面有很多珍貴的野生寵物小精靈。小智也想收服其中的一些小精靈。然而,野生的小精靈並不那麼容易被收服。對於每乙個野生小精靈而言,小智可能需要使用很多個精靈球才能收服它,而在收服過程中,野生小精靈也會對皮卡丘造...