這神題,暴力陣列可過,vector可過,線段樹可過。。。時限拉的太長了,所以就成水題了。。。不過比賽的時候真的沒敢用陣列暴力寫。。。
說說線段樹的思路吧。
對樹的每個節點 l, r, cnt, sum[5],分別表示左區間,右區間,這段區間上的點數,這段區間上sum[x%5]的和。
先把所有的資料都讀入,然後離散化,去掉重複的資料建樹。
再處理一邊就可以了。
ps:葉節點只有sum[0]需要更新,sum[1...4]更新不到。。這個注意理解。。
view code
#include #include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define cl(arr, val) memset(arr, val, sizeof(arr))
#define rep(i, n) for((i) = 0; (i) < (n); ++(i))
#define for(i, l, h) for((i) = (l); (i) <= (h); ++(i))
#define ford(i, h, l) for((i) = (h); (i) >= (l); --(i))
#define l(x) (x) << 1
#define r(x) (x) << 1 | 1
#define mid(l, r) (l + r) >> 1
#define min(x, y) x < y ? x : y
#define max(x, y) x < y ? y : x
#define e(x) (1 << (x))
#define iabs(x) (x) < 0 ? -(x) : (x)
#define out(x) printf("%i64d\n", x)
#define lowbit(x) (x)&(-x)
#define read() freopen("data.in", "r", stdin)
#define write() freopen("data.out", "w", stdout);
const
double eps = 1e-8
;typedef
long
long
ll;const
int inf = ~0u>>2
;using
namespace
std;
const
int n = 100010
;struct
node tree[n
<<2
];char op[n][5
];int
num[n];
intt[n];
inttt[n];
intcnt, ts, p;
void build(int t, int l, int
r) void push_up(int
t) }
void updata(int t, int pos, int val, bool
flag)
int mid =mid(tree[t].l, tree[t].r);
if(pos <=mid) updata(l(t), pos, val, flag);
else
updata(r(t), pos, val, flag);
push_up(t);
}int find(int
x)
return -1;}
intmain()
}sort(t, t +cnt);
ts = 0
; tt[ts++] = t[0
];
for(i = 1; i < cnt; ++i)
build(
1, 0, ts - 1
);
for(i = 0; i < n; ++i)
else
if(op[i][0] == 'a'
) else}}
return0;
}
無聊題目大紀實(HDU 4288 Coder)
這神題,暴力陣列可過,vector可過,線段樹可過。時限拉的太長了,所以就成水題了。不過比賽的時候真的沒敢用陣列暴力寫。說說線段樹的思路吧。對樹的每個節點 l,r,cnt,sum 5 分別表示左區間,右區間,這段區間上的點數,這段區間上sum x 5 的和。先把所有的資料都讀入,然後離散化,去掉重複...
無聊的題目,權當一樂
話說有這麼一段 要求你在橫線上填出相應的 來列印出集合的全部元素,不允許用var關鍵字。敝人上週真實經歷的筆試題 1dictionary string string dict new dictionary string string 2 3foreach item indict 4 6 正確答案是 ...
HDU 5242 思路題目
本題目給定一顆以1為根的樹,每個節點都有乙個權,記,從根走到葉子節點的一條線為一條路,問從根走到葉子k次,最多可以得到得到的權和。被走過的點的權不再被疊加。1 n,k 100000 思路 首先這題目,不適合樹形揹包,資料範圍太大,樹形揹包大概是被背數量上限的平方的複雜度即k 2。可以用貪心的思想來做...