題意:
三種操作:
1. add x – add the element x to the set;
2. del x – remove the element x from the set;
3. sum – find the digest sum of the set.
the digest sum should be understood by:sum(ai) where i % 5 ==3
where the set s is written as satisfying a1
< a2
< a3
< ... < ak
資料規格:
n ( 1 <= n <= 105 )
1 <= x <= 109.
思路:bc做過一題和這個一模一樣的,,,哎,,,這題早就做過了,可是bc卻沒有做出來,,,
這個還要離線處理,因為x很大
**:
intconst maxn=1e5+5
;struct
nodetree[maxn
<<2
];int
n,tot;
intq[maxn],a[maxn];
char ope[maxn][15
];void build(int l,int r,int
rt)void pushup(int
rt)void update(int k,int pos,int num,int l,int r,int
rt)
int m=(l+r)>>1
;
if(pos<=m)
update(k,pos,num,lson);
else
update(k,pos,num,rson);
pushup(rt);
}int
main()
}sort(a,a+tot);
tot=unique(a,a+tot)-a;
//rep(i,0,tot-1) cout) memset(tree[
1].sum,0,sizeof(tree[1
].sum));
else
build(
1,tot,1
); rep(i,
1,n)
if(ope[i][0]=='d'
) printf(
"%i64d\n
",tree[1].sum[2
]); }
}//fclose(stdin);
}
hdu4288 Coder(線段樹單點更新)
題意 支援增刪,查操作,最後的序列式遞增的。做法 主要是如何維護mod5的sum值,這裡左兒子可以不用管,關鍵是右兒子的處理,可以假設右兒子有t個節點,左兒子有cnt個節點,則令 t cnt mod 5 i 則tmod5 i cnt mod 5 mod 5 所以剩下的就是維護每個節點的節點總數以及相...
無聊題目大紀實(HDU 4288 Coder)
這神題,暴力陣列可過,vector可過,線段樹可過。時限拉的太長了,所以就成水題了。不過比賽的時候真的沒敢用陣列暴力寫。說說線段樹的思路吧。對樹的每個節點 l,r,cnt,sum 5 分別表示左區間,右區間,這段區間上的點數,這段區間上sum x 5 的和。先把所有的資料都讀入,然後離散化,去掉重複...
hdu 4288 Coder 成都賽區 線段樹
題意 給出乙個有序集合,3種操作。插入乙個數,刪除乙個數,都保證序列有序。以及求和 其中求和是將下標 5 3的所有數求和 題解 線段樹 離散化 離線處理 一開始也是想的 線段樹 但是 這個和以前的 做過的 乙個線段樹 不同的 是 如果 我們 刪除 乙個 元素後 那麼 他的 下標 將會 改變 比賽是 ...