BZOJ3276 磁力

2023-12-09 03:50
文章标签 磁力 bzoj3276

本文主要是介绍BZOJ3276 磁力,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先按照到站的点的距离排个序,然后贪心的每次拿当前范围最大的来找

然后集齐了一组范围递增,可控重量递减的磁铁以后,就可以直接一个个看能不能拿了

但是会TLE,用线段树维护即可

 

  1 /**************************************************************
  2     Problem: 3276
  3     User: rausen
  4     Language: C++
  5     Result: Accepted
  6     Time:4884 ms
  7     Memory:19364 kb
  8 ****************************************************************/
  9  
 10 #include <cstdio>
 11 #include <algorithm>
 12  
 13 using namespace std;
 14 typedef long long ll;
 15 const int N = 250005;
 16  
 17 struct data {
 18     int w, p;
 19     ll d2, r2;
 20      
 21     inline bool operator < (const data &a) const {
 22         return d2 < a.d2;
 23     }
 24 } a[N];
 25  
 26 struct seg_node {
 27     int v;
 28     seg_node *son[2];
 29 } *seg_root, mempool[N << 2], *cnt_seg = mempool, *null;
 30  
 31 int n;
 32 int q[N], H, T;
 33 ll R2;
 34  
 35 inline int lower() {
 36     int l = 1, r = n + 1, mid;
 37     while (l + 1 < r) {
 38         mid = l + r >> 1;
 39         if (a[mid].d2 <= R2) l = mid;
 40         else r = mid;
 41     }
 42     return l;   
 43 }
 44  
 45 inline int read() {
 46     int x = 0, sgn = 1;
 47     char ch = getchar();
 48     while (ch < '0' || '9' < ch) {
 49         if (ch == '-') sgn = -1;
 50         ch = getchar();
 51     }
 52     while ('0' <= ch && ch <= '9') {
 53         x = x * 10 + ch - '0';
 54         ch = getchar();
 55     }
 56     return sgn * x;
 57 }
 58  
 59 #define mid (l + r >> 1)
 60 #define V p -> v
 61 #define Ls p -> son[0]
 62 #define Rs p -> son[1]
 63 inline void new_node(seg_node *&p) {
 64     p = ++cnt_seg;
 65     V = 0, Ls = Rs = null;
 66 }
 67  
 68 inline int get_min(int x, int y) {
 69     if (!x) return y;
 70     if (!y) return x;
 71     return a[x].w < a[y].w ? x : y;
 72 }
 73  
 74 inline void update(seg_node *p) {
 75     V = get_min(Ls -> v, Rs -> v);
 76 }
 77  
 78 void seg_build(seg_node *&p, int l, int r) {
 79     new_node(p);
 80     if (l == r) {
 81         V = l;
 82         return;
 83     }
 84     seg_build(Ls, l, mid), seg_build(Rs, mid + 1, r);
 85     update(p);
 86 }
 87  
 88 void seg_modify(seg_node *p, int l, int r, int pos) {
 89     if (l == r) {
 90         V = 0;
 91         return;
 92     }
 93     if (pos <= mid) seg_modify(Ls, l, mid, pos);
 94     else seg_modify(Rs, mid + 1, r, pos);
 95     update(p);
 96 }
 97  
 98 int seg_query(seg_node *p, int l, int r, int pos) {
 99     if (r <= pos) return V;
100     int res = seg_query(Ls, l, mid, pos);
101     if (pos > mid) res = get_min(res, seg_query(Rs, mid + 1, r, pos));
102     return res;
103 }
104 #undef mid
105 #undef V
106 #undef Ls
107 #undef Rs
108  
109 inline ll sqr(ll x) {
110     return x * x;
111 }
112  
113 int main() {
114     int X, Y, P, x, y, r, i, tmp, pos;
115     null = cnt_seg, null -> son[0] = null -> son[1] = null, null -> v = 0;
116     X = read(), Y = read(), P = read(), R2 = sqr(read()), n = read();
117     for (i = 1; i <= n; ++i) {
118         x = read(), y = read(), a[i].w = read(), a[i].p = read(), r = read();
119         a[i].d2 = sqr(X - x) + sqr(Y - y), a[i].r2 = sqr(r);
120     }
121     sort(a + 1, a + n + 1);
122     seg_build(seg_root, 1, n);
123     while ((pos = lower()) != 0) {
124         tmp = seg_query(seg_root, 1, n, pos);
125         if (!tmp || a[tmp].w > P) break;
126         seg_modify(seg_root, 1, n, tmp);
127         q[++T] = tmp;
128     }
129     while (H <= T) {
130         P = a[q[H]].p, R2 = a[q[H]].r2, ++H;
131         while ((pos = lower()) != 0) {
132             tmp = seg_query(seg_root, 1, n, pos);
133             if (!tmp || a[tmp].w > P) break;
134             seg_modify(seg_root, 1, n, tmp);
135             q[++T] = tmp;
136         }
137     }
138     printf("%d\n", T);
139     return 0;
140 }
View Code

 

转载于:https://www.cnblogs.com/rausen/p/4324730.html

这篇关于BZOJ3276 磁力的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/472372

相关文章

【C++二分查找 贪心】1552. 两球之间的磁力

本文涉及的基础知识点 C++二分查找 贪心:决策兼容性 LeetCode1552. 两球之间的磁力 在代号为 C-137 的地球上,Rick 发现如果他将两个球放在他新发明的篮子里,它们之间会形成特殊形式的磁力。Rick 有 n 个空的篮子,第 i 个篮子的位置在 position[i] ,Morty 想把 m 个球放到这些篮子里,使得任意两球间 最小磁力 最大。 已知两个球如果分别位于 x

BT磁力下载器

下载 用法 usage: BTDown [OPTIONS] [TORRENT|MAGNETURL]OPTIONS:CLIENT OPTIONS-h print this message-f <log file> logs all events to the given file-s <path> sets the

【报告分享】2021快手电商数据报告发布-磁力数观(附下载)

摘要:随着反垄断进入监管时代,品牌商家没有往年“二选一”的站队担忧,纷纷开启以天猫为主阵地,抖音、快手、拼多多、小红书多渠道布局的策略。在这场平台与平台、平台与商家的博弈中,商家们不断尝试多平台全面撒网,“多一个平台就多一份收入”,流量焦虑的品牌们都愿意去短视频平台挖掘新增量。 来源:磁力数观   如需查看完整报告和报

【报告分享】快手新锐品牌人群洞察报告-磁力数观(附下载)

摘要:随着短视频、直播平台逐渐成为新兴媒体主角,年轻用户的触媒习惯发生了变化。TA们在平台上通过内容共鸣快速建立起与创作者及品牌之间的信任度,表达着自我并释放消费力。平台帮助品牌跨越了与用户间的遥远距离。这带来的另一个变化是,众多新锐品牌近年来快速崛起。这些新锐品牌以拥有大量年轻用户的新兴媒体平台为基础,聚拢起自己庞大的粉丝阵地,实现了品销协同的快速市场突破。 来源:磁力数观 ​

【报告分享】快手汽车行业品牌矩阵解决方案-磁力引擎(附下载)

摘要:如今,车市“寒冬”来临,从传统车企到造车新势力,从国外汽车巨头到国内自主品牌,每家车企都在考虑如何调整战略才能适应快速变革的汽车产业,而加强品牌建设、重塑品牌口碑就是一条重要出路。品牌形象决定企业的成败,品牌声誉好坏、品牌知名度大小是企业立足市场,长远发展的关键。 来源:磁力引擎 ​ 如需查看完整报告和报告下载或了解更多,公众号:行业

【报告分享】快手男性消费用户洞察-36Kr磁力引擎(附下载)

摘要:曾几何时,一张消费价值图片在朋友圈刷屏,某电商网站发布了一份大数据排行榜上,投资人心目中消费投资&市场价值,从高到低依次是少女>儿童>少妇>老人>狗>男人。男性用户也是线上高消费人群的中坚力量,且保持持续增长态势。男性活跃用户稳定增长,消费需求持续释放。 来源:36Kr&磁力引擎 ​ 如需查看完整报告和报告下载或了解更多,公众号:行业

【报告分享】新市井过大年-2022年年货节营销趋势报告-磁力引擎(附下载)

摘要:大背景下,“云逛街”逐步成为疫情中主流的消费方式,以直播带货为代表的社交电商崛起,信任经济正在高速发展,快手平台的优势进一步凸显。近年来随着我国整体经济水平的提升,人们对生活质量的要求不断提高。往期数据显示,21年年货节成交客单价明显提升,重金购年货现象的背后,是人们对商品品质要求的提高以及对直播电商信任度的大幅提升,其中休闲食品、新年服饰及美妆个护等品类成交额稳居前列。 来源:磁

【报告分享】快手磁力金牛达人商家成长白皮书-磁力金牛(附下载)

摘要:过去品牌与达人主要通过合作带货模式实现双方营销增长,现在则转为以品牌自播+达人分销双线并行模式为核心,这不仅有利于沉淀品牌数据和品牌资产,也是帮助品牌在快手形成长期营销阵地的基础,同时品牌客户的引入和成长,也带来了平台货品的极大丰富。“未来,平台营销将加码打造品牌与达人共繁荣的平台生态,达成品牌、达人客户的GMV和ROI目标,使得更多品牌留存并形成规模,使更多专业卖货主播成长并盈利。

磁力链接网址

一、磁力蜘蛛: http://www.xsmxdy.com/ 二、磁力聚合搜索引擎: http://www.cilihezi.cn/ 三、BT磁力链: http://www.cilimiao.cn/ 四、磁力点点: http://www.cilisouou.com 五、磁力狗: http://ccmoka.com 六、西边云:(书籍类文件bt下载,

uTorrent Pro一款轻量级的Torrent磁力下载工具去广告绿色版 v3.6.0.47044

01 uTorrent Pro v3.6.0.47044 µTorrent是一款俄罗斯号称全球排名第一的免费BT下载工具,海外最受欢迎的BT下载客户端软件。支持UPnP,支持流行的 BT 扩展协议,磁力链接(Magnet Links),IPv6,用户来源交换,DHT和uTP,以及RSS下载器等丰富特性。μTorrent具有许多自定义选项,比如多任务同时下载,设置文件下载优先级,根据计划任务调整占