栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3525 Disappearance

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3525 Disappearance

#include <cstdio>#include <algorithm>#include <cstring>#include <cmath>#include <iostream>#include <map>#include <queue>#include <string>#include <vector>#include <map>#include <set>using namespace std;const int N = 5010, ex = 30001;struct SegT { int l, r; int sum, maxsum;} segt[N * 5];void init(int ind, int l, int r) { segt[ind].l = l; segt[ind].r = r; segt[ind].sum = segt[ind].maxsum = 0; if (l != r) { int mid = (l + r) >> 1; init(ind << 1, l, mid); init((ind << 1) + 1, mid + 1, r); }}void insert(int ind, int x, int t) { if (segt[ind].r == segt[ind].l) { segt[ind].sum += t; segt[ind].maxsum = max(0, segt[ind].sum); } else { int mid = (segt[ind].l + segt[ind].r) >> 1; if (x <= mid) insert(ind << 1, x, t); else insert((ind << 1) + 1, x, t); segt[ind].sum = segt[ind << 1].sum + segt[(ind << 1) + 1].sum; segt[ind].maxsum = max(segt[ind << 1].maxsum, segt[ind << 1].sum + segt[(ind << 1) + 1].maxsum); }}struct T { int x, y, z, w;} a[1003];int n, wx, wy, wz;bool cmp(const T& u, const T& v) { return (u.z < v.z);}bool cmpx(const T& u, const T& v) { return (u.x < v.x);}int ans;void deal(int s, int e) { sort(a + s, a + e + 1, cmpx); int ss = s; for (int i = s; i <= e; ++i) { if (a[i].x - a[ss].x <= wx) { insert(1, a[i].y, a[i].w); insert(1, a[i].y + wy + 1, -a[i].w); ans = max(segt[1].maxsum, ans); } else { while (a[i].x - a[ss].x > wx) { insert(1, a[ss].y, -a[ss].w); insert(1, a[ss].y + wy + 1, a[ss].w); ss++; } insert(1, a[i].y, a[i].w); insert(1, a[i].y + wy + 1, -a[i].w); ans = max(segt[1].maxsum, ans); } } for (int i = ss; i <= e; ++i) { insert(1, a[i].y, -a[i].w); insert(1, a[i].y + wy + 1, a[i].w); } sort(a + s, a + e + 1, cmp);}bool judge(int id) { if (segt[id].maxsum) { cout << segt[id].maxsum << endl; return false; } if (segt[id].l == segt[id].r) return true; if (judge(id << 1) == false) return false; if (judge((id << 1) + 1) == false) return false; return true;}int main() { init(1, 1, N); while (cin >> n) { for (int i = 0; i < n; ++i) { scanf("%d%d%d%d", &a[i].x, &a[i].y, &a[i].z, &a[i].w); if (a[i].w > 0) a[i].w = 0; else a[i].w = -a[i].w; a[i].x += 1001; a[i].y += 1001; a[i].z += 1001; } scanf("%d%d%d", &wx, &wy, &wz); sort(a, a + n, cmp); int s = 0; ans = 0; for (int i = 0; i < n; ++i) { while (a[i].z - a[s].z > wz) { deal(s, i - 1); ++s; } } deal(s, n - 1); if (ans > 0)printf("%dn", -ans); else puts("Error 404, mahou shoujo not found!"); } return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/372292.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号