摘要:http://poj.org/problem?id=3468第一次手写的线段树,以后就用这个做模板好了。自己风格的线段树:(区段更新 1 #define maxn 100005 2 #define ls(p) p=L && R>=r){37 t[p].f+=v;38 ...
阅读全文
摘要:http://poj.org/problem?id=1836题意: 一队士兵排队,高低起伏。去掉最少的士兵,使得中间高两边低(单峰)。经典LIS,注意[1~n]的最优解并不一定在dp[n]中,故需预处理。 1 #include <iostream> 2 #include <stdio.h> 3 #include <string> 4 #include <string.h> 5 #include <stdlib.h> 6 #define EPS 1e-5 7 #define INF 0x3f3f3f 8 9 using namespac
阅读全文
摘要:http://poj.org/problem?id=1862题意描述: 有n个生物,体重为w1, w2, ... , wn;任意两个生物可合成为一个生物;其体重w'满足:w' = 2sqrt(wi * wj); 如此反复,终将得到一个生物,体重为W。适当调整合成顺序,使得W最小。思路:贪心 每次取体重最大的两个生物先合成。证明: 不妨设w1>w2>...>wn, f(a, b) = 2sqrt(a*b); 那么按照贪心策略: W = f(f(... f(f(w1, w2), w3) ...), wn); (1)Hint:(1)式正确,是因为f(w1, w2)合
阅读全文