CF70D Professor's task(动态凸包)】的更多相关文章

地址:http://codeforces.com/problemset/problem/70/D 题目: D. Professor's task time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Once a walrus professor Plato asked his programming students to perf…
题面 两种操作: 1 往点集S中添加一个点(x,y); 2 询问(x,y)是否在点集S的凸包中. 数据保证至少有一个2操作, 保证刚开始会给出三个1操作, 且这三个操作中的点不共线. 题解 动态凸包板子 本来是习惯直接搞整个凸包的,这里似乎得分别维护上下凸壳,然后用平衡树来加点 话说没啥好说的--看代码啥都懂了-- //minamoto #include<bits/stdc++.h> #define R register #define fi first #define se second #…
题目链接:http://codeforces.com/contest/70/problem/D Once a walrus professor Plato asked his programming students to perform the following practical task. The students had to implement such a data structure that would support a convex hull on some set of…
CF70D(动态凸包) 给出q(<=1e5)个询问,每次在加上一个点,维护凸包,或者询问某个点是否在凸包内(在边上也算). 听说可以用cdq做--但是并不会.我等蒟蒻只会用平衡树做. 首先,假设已经维护出了某个点按照极角排序的凸包,那么对于加入的一个点,我们首先要查询它是在凸包内还是凸包外(这个功能也可以用于题目中的查询).O表示极角排序的原点,next表示极角排序的下一个点,pre则表示上一个点: 那么,如果p在凸包外,a\(\times\)b就是正数,若p在凸包内a\(\times\)b则是…
2300: [HAOI2011]防线修建 Description 近来A国和B国的矛盾激化,为了预防不测,A国准备修建一条长长的防线,当然修建防线的话,肯定要把需要保护的城市修在防线内部了.可是A国上层现在还犹豫不决,到底该把哪些城市作为保护对象呢?又由于A国的经费有限,所以希望你能帮忙完成如下的一个任务: 1.给出你所有的A国城市坐标 2.A国上层经过讨论,考虑到经济问题,决定取消对i城市的保护,也就是说i城市不需要在防线内了 3.A国上层询问对于剩下要保护的城市,修建防线的总经费最少是多少…
离线然后倒着做就变成了支持加点的动态凸包...用平衡树维护上凸壳...时间复杂度O(NlogN) ----------------------------------------------------------------------- #include<cmath> #include<cstdio> #include<cctype> #include<cstring> #include<cstdlib> #include<algori…
第一次打动态凸包维护dp,感觉学到了超级多的东西. 首先,set是如此的好用!!!可以通过控制一个flag来实现两种查询,维护凸包和查找斜率k 不过就是重载运算符和一些细节方面有些恶心,90行解决 后面还有一个cdq分治,找时间学下,看下能不能处理一大类恶心的问题 github还是不会用,找时间搞下吧 CODE: #include<cstdio> #include<cstring> #include<algorithm> #include<iostream>…
听说有一种很高端的东西叫动态凸包维护dp就像学一下,不过介于本人还不会动态凸包就去学了下,还是挺神奇的说,维护上下凸包的写法虽然打得有点多不过也只是维护复制黏贴的事情而已罢了. 先说下动态凸包怎么写吧,搞棵平衡树存上下凸壳然后每次插入一个点就往他左右维护看是否满足凸性否则就弹出,就是这么简单 这道题就是删点然后询问凸壳,那么离线反着做就行了 出题人还是挺良心的直接让你维护上凸壳就行了,还不用管边界条件 用set打了一下,比较慢但还是挺好打的= = 换新blog挺多功能得试试的,现在想搞个像HZW…
原题题解和数据下载 Usaco2007 Jan 题意 小牛参加了n个测试,第i个测试满分是\(p_i\),它的得分是\(t_i\).老师去掉\(t_i/p_i\)最小的d个测试,将剩下的总得分/总满分作为小牛的得分. 小牛想知道多少个d存在比老师计算的分数更高的选择测试的方案,并输出这些d. 题解 基础思路 排好序后,$ \frac {t_1} {p_1} < \frac {t_2} {p_2}<..< \frac {t_n} {p_n}$. 如果d==j,老师给的分数是\(r_j=\f…
题意:两种操作1.加点2.查询点是否在之前给定点的凸包内 题解:set维护动态凸包,分别维护上下凸壳,对y取反就行,判断点是否在凸壳内,把点加进去看要不要删除就好了 //#pragma GCC optimize(2) //#pragma GCC optimize(3) //#pragma GCC optimize(4) //#pragma GCC optimize("unroll-loops") //#pragma comment(linker, "/stack:200000…
题面 传送门 题解 真是毒瘤随机化算法居然一分都不给 首先这种树上的题目一般想到的都是点分 我们考虑如何统计经过当前点的路径的贡献,设当前点\(u\)在序列中是第\(c\)个,那么一条路径的贡献就是 \[Ans=\sum_{i=1}^k i\times w_{p_i}=\sum_{i=1}^ci\times w_{p_i}+\sum_{i=c+1}^ki\times w_{p_i}\] 其中前面是从子树到\(u\)的路径,后面是从\(u\)到子树里的路径 然后拆一下 \[Ans=c\times…
一句话题意:给你一个凸包,每次可以插入一个点或者询问周长. 动态凸包裸题嘛,用\(Set\)实现.最初每个点坐标做乘三处理,便于取初始三角形的重心作为凸包判定原点. #include <bits/stdc++.h> using namespace std; const int N = 500000 + 5; const double eps = 1e-8; int n, m, x, y, q, px[N], py[N], ban[N]; struct Point { int x, y; dou…
斜率在转移顺序下不满足单调性的斜率优化\(DP\),用动态凸包来维护.送命题. 简化版题意:每次在凸包上插入一个点,以及求一条斜率为\(K\)的直线与当前凸包的交点.思路简单实现困难. \(P.s\),不是特别建议用\(Set\)来维护动态凸包,万一中间哪一点功能实现\(STL\)没有提供就\(GG\)了.(比如要有两种比较运算符.)本人因此重构了三次\(:)\) 代码来源:黄学长的代码的魔改版. #include <bits/stdc++.h> using namespace std; co…
[题解]P2521 [HAOI2011]防线修建(动态凸包) 凸包是易插入不好删除的东西,按照剧情所以我们时光倒流 然后问题就是维护凸包的周长,支持加入 本来很简单,但是计算几何就是一些小地方经验不足容易WA和RE 然后代码注释里有一些经验 //@winlere #include<iostream> #include<set> #include<cstdio> #include<cstring> #include<algorithm> #incl…
传送门 题意:动态插入点,维护凸包面积. 思路:用setsetset维护极角序来支持面积查询即可. 然后注意选原点的时候要从初始三个点随机平均系数来避免精度误差. 代码: #include<bits/stdc++.h> #define ri register ll using namespace std; typedef long long ll; inline ll read(){ ll ans=0; bool f=1; char ch=getchar(); while(!isdigit(c…
Task是一个很好用的多任务处理类,并且通过Task可以对任务进行很好的控制. 下面将通过代码实现Redis集群在使用IServer.keys时通过多任务对多个服务器示例进行并行计算,并对返回key做汇总计算. 对于主从双服务器的redis使用keys可以很方便的取到所提供的正则匹配KEY集合,但在redis集群中每次只能获取一个redis实例匹配keys,如果先去遍历所有服务器则会十分慢,并且容易出现超时计算,这时我们就用Task为每台Reids服务器做一个异步的Task等待最后一个处理完汇总…
动态维护凸包面积. //Achen #include<bits/stdc++.h> #define For(i,a,b) for(int i=(a);i<=(b);i++) #define Rep(i,a,b) for(int i=(a);i>=(b);i--) #define Formylove return 0 ; typedef long long LL; typedef double db; using namespace std; int n; LL ans; templ…
题目链接:http://codeforces.com/problemset/problem/70/D 本题关键:在log(n)的复杂度内判断点在凸包 或 把点插入凸包 判断:平衡树log(n)内选出点所属于的区域 插入:平衡树log(n)内选出点所属于的区域, 与做一般凸包的时候类似,分别以该点向左右两边进行维护, 一直删除不满足凸包的点,直到所有点满足凸包为止. 水平序: 可以用2个平衡树分别维护上下2个半凸包,具体实现时可以把其中一个半凸包按y轴对称以后,那么2个半凸包的维护就是同一种方法,…
传送门 题意 有三种操作 加入一个二元组\((x,y)\) 删除一个二元组\((x,y)\) 给出一个二元组\((a,b)\),问\(ax+by\)的最大值 题解 \(z=ax+by \Rightarrow y=-\frac{b}{a}x+\frac{z}{b}\) 分\(b\)的符号讨论,分别维护上下凸壳. 对于删除操作,将右边的序列反过来之后转化为没有删除操作的询问,用经典的\(\mathrm{CDQ}\)分治完成. notice 简直恶心,转化序列的时候恶心死了. code…
先放原文,挖个坑,到时候再来说人话ε=(´ο`*))) 作者:Franco P. Preparata 出处:Computational geometry An introduction The technique described in the preceding section could be viewed as the maintenance of a data structure, describing the convex hull of a set of points, when…
蒟蒻才普及组呀~ 大佬别D我 等集中补一下 CF980F:咋说捏,我觉得要联赛了做这题有点浪费时间,等想颓废了再来写写叭qwq 215E/279D/288E/331C3/431D/433E/750G/776G(数位dp) 917E/914F/932G(字符串) 论文 https://www.codechef.com/problems/DISTNUM 316D3(置换) 由于不想浪费时间(太弱),不会做且无中文题解(或者写得不好),直接咕咕咕 CF142C CF156E CF123C CF185C…
斜率优化题目大家肯定都做得不少了,有一些题目查询插入点的x坐标和查询斜率都不单调,这样就需要维护动态凸包并二分斜率.(例如bzoj1492) 常规的做法是cdq分治或手写平衡树维护凸包,然而如果我不愿意写分治,也懒得打平衡树,怎么办呢? 没关系,今天我告诉你怎么用一个set维护这种凸包. 首先orzLH,没什么特殊意义,只是单纯的orz. 我们定义f[i]表示在第i天能拥有的金券组数,按照第i天的比例. 那么,我们要把前面的金券在今天卖出获得最多的钱,并在今天进行买入. 所以,f[i]=max(…
Hadoop的MapReduce的Map Task和Reduce Task都是进程级别的:而Spark Task则是基于线程模型的. 多进程模型和多线程模型 所谓的多进程模型和多线程模型,指的是同一个节点上多个任务的运行模式.无论是MapReduce和Spark,整体上看都是多进程的:MapReduce应用程序是由多个独立的Task进程组成的:Spark应用程序的运行环境是由多个独立的Executor进程(每个应用程序使用一个Executor进程)构建的临时资源池构成的. 多进程模型便于细粒度控…
题面 传送门 题解 这题解法真是多啊--据说可以圆反演转化为动态插入半平面并判断给定点是否在半平面交中,或者化一下改成给定点判断是否所有点都在某一个半平面内-- 鉴于圆反演我也不会,这里讲一下直接推的好了 如果一个圆的圆心是\((a,b)\),询问点是\((x,y)\),那么这个询问点在圆心上的条件就是 \[ \begin{aligned} (x-a)^2+(y-b)^2\le a^2+b^2 \\ x^2+y^2\le 2ax+2by \\ b\ge -\frac{x}{y}a+\frac{x…
题目描述 给你(0,0).(n,0).(x,y)和另外m个点,除(0,0)(n,0)外每个点横坐标都大于0小于n,纵坐标都大于0. 输入 第一行,三个整数n,x,y分别表示河边城市和首都是(0,0),(n,0),(x,y). 第二行,一个整数m. 接下来m行,每行两个整数a,b表示A国的一个非首都非河边城市的坐标为(a,b). 再接下来一个整数q,表示修改和询问总数. 接下来q行每行要么形如1 i,要么形如2,分别表示撤销第i个城市的保护和询问. 输出 对于每个询问输出1行,一个实数v,表示修建…
一.Task类简介: Task类是在.NET Framework 4.0中提供的新功能,主要用于异步操作的控制.它比Thread和ThreadPool提供了更为强大的功能,并且更方便使用. Task和Task<TResult>类:前者接收的是Action委托类型:后者接收的是Func<TResult>委托类型. 任务Task和线程Thread的区别: 1.任务是架构在线程之上.也就是说任务最终还是要抛给线程去执行,它们都是在同一命名空间System.Threading下. 2.任务…
一.预备知识 \(tD/eD\) 问题:状态 t 维,决策 e 维.时间复杂度\(O(n^{e+t})\). 四边形不等式: 称代价函数 w 满足凸四边形不等式,当:\(w(a,c)+w(b,d)\le w(b,c)+w(a,d),\ a < b < c < d\) 如下所示,区间1.2对应的 w 之和 ≤ 3.4之和 \[ \underbrace {\overbrace {a \to \underbrace{b \to c}_3}^1 \to d }_4 \llap{\overbrac…
hdu-5127 思路: 本来正解好像是动态凸包,暴力10000+ms可以搞过去; hdu-5128 思路: 枚举两个长方形的对角线,然后判断是否不相交,更新答案就好; hdu-5130 思路: 将题给的条件变换后是求一个圆与多边形的面积交;将多边形三角剖分后求与圆的面积和; hdu-5131 思路: 写个cmp函数,sort一下就好了; hdu-5135 思路: 暴力枚举每个三角形的三条边,判断是否合法,更新答案; hdu-5137 思路: 枚举要劝阻的那个人,然后跑最短路dijkstra算法…
Description In order to build a ship to travel to Eindhoven, The Netherlands, various sheet metal parts have to be cut from rectangular pieces of sheet metal. Each part is a convex polygon with at most 8 vertices. Each rectangular piece of sheet meta…
还有13天NOI,把各种乱七八糟的算法都重新过一遍还是比较有必要的... //HDU 5046 Airport //DancingLink #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define MAXN 110 #define MAXD MAXN*MAXN #define INF 0x3f3f3f3f #de…