數列操作問題
time limit:10000ms memory limit:65536k
total submit:345 accepted:185
case time limit:1000ms
description
假設有一列數(1≤i≤n),支援如下兩種操作:
將ak的值加d。(k, d是輸入的數)
輸出as+as+1+…+at。(s, t都是輸入的數,s≤t)
input
第一行乙個整數n,
第二行為n個整數,表示的初始值≤10000。
第三行為乙個整數m,表示運算元
下接m行,每行描述乙個操作,有如下兩種情況:
add k d (表示將ak加d,1<=k<=n,d為數,d的絕對值不超過10000)
sum s t (表示輸出as+…+at)
output
對於每乙個sum提問,輸出結果
sample input
5sample output1 2 3 2 4
5 sum 1 2
sum 1 5
add 1 2
sum 1 2
sum 1 5
3hint12 5
14
m,n<=100000
線段樹的基本題型,具體看**
#include#includeusing namespace std;
const int maxn=100005;
struct wktree[2*maxn];//a,b分別表示當前節點的左右端點,left,right表示當前節點的左右兒子節點標號,v為權值
int n,m,tot,s,t,k,d,sum[maxn];
char qust[4];
inline void _read(int &x)
for(x=0;t>='0'&&t<='9';t=getchar())x=x*10+t-'0';
if(!sign)x=-x;
}void insert(int x,int y)//add操作函式
int getsum(int r)
}//sum操作函式
int main()
insert(1,n);
scanf("%d",&m);
for(i=1;i<=m;i++)
else
}}
NKOI 防守馬克
題目略 我最早其實想的貪心,力量從大到小,從下到上放置奶牛,但是如果有乙隻力量小的奶牛非常重,就矛盾。狀壓dp基礎題,但是開始我一直沒有想到運用列舉頂端的奶牛進行狀態轉移。我發現其實題目中物件增長的方式可以給狀態轉移帶來啟發,比如這裡的奶牛就是乙隻只疊上去的嘛。另外我還發現其實驗證dp是否可行就是看...
13 2 賽馬遊戲
作為乙個馬場的主人,你要安排你的n匹賽馬和另乙個馬場的n匹馬比賽。你已經知道了對方馬場的出戰表,即參加每一場的馬的強壯程度。當然你也知道你自己的所有馬的強壯程度。我們假定比賽的結果直接由馬的強壯程度決定,即更壯的馬獲勝 若相同則雙方均不算獲勝 請你設計乙個策略,使你能獲得盡量多的場次的勝利。給定對方...
NKOI 1349 工作安排
uasco 2009 open gold 2 工作安排 time limit 10000ms memory limit 65536k total submit 63 accepted 43 case time limit 1000ms description farmer john 有太多的工作要做...