【DP+树状数组 or 贪心】Codeforces527D[Clique Problem]题解
来源:互联网 发布:php函数大全怎么记忆 编辑:程序博客网 时间:2024/06/17 18:15
题目概述
给出平面上
解题报告
先将点按照位置排序,然后会发现若
所以一条链上的点均能互相到达成为团,那么现在求最大团等价于求最长链。
DP一下就好了,离散之后用树状数组优化。
实际上推到这里发现每个点可以抽象成线段,用贪心求最多的不相交线段即可,详细点?不如Orz CHNJZ。
示例程序
#include<cstdio>#include<algorithm>#define fr first#define sc secondusing namespace std;const int maxn=200000;int n,A[maxn+5],B[maxn+5],a[maxn*2+5],c[maxn*2+5];pair<int,int> p[maxn+5];inline int Find(int x){ int L=1,R=a[0]; for (int mid=L+(R-L>>1);L<=R;mid=L+(R-L>>1)) if (a[mid]<=x) L=mid+1; else R=mid-1; return R;}inline void Update(int x,int tem) {for (int i=x;i<=a[0];i+=i&-i) c[i]=max(c[i],tem);}inline int Max(int x) {int MAX=0;for (int i=x;i;i-=i&-i) MAX=max(MAX,c[i]);return MAX;}int main(){ freopen("program.in","r",stdin); freopen("program.out","w",stdout); scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d%d",&p[i].fr,&p[i].sc);sort(p+1,p+1+n); for (int i=1;i<=n;i++) a[++a[0]]=p[i].fr-p[i].sc,a[++a[0]]=p[i].fr+p[i].sc; sort(a+1,a+1+a[0]);a[0]=unique(a+1,a+1+a[0])-a-1; for (int i=1;i<=n;i++) A[i]=Find(p[i].fr-p[i].sc),B[i]=Find(p[i].fr+p[i].sc); for (int i=1;i<=n;i++) Update(B[i],Max(A[i])+1); return printf("%d\n",Max(a[0])),0;}
阅读全文
0 0
- 【DP+树状数组 or 贪心】Codeforces527D[Clique Problem]题解
- Codeforces 528B Clique Problem dp+线段树(or 树状数组)
- Codeforces 527D Clique Problem (dp+树状数组+离散化)
- CodeForces 527D Clique Problem 树状数组
- 【贪心+堆+树状数组】JXOI2017[加法]题解
- 【DP】【线段树】【树状数组】saber 题解
- 贪心(最大团)||dp+线段树(Codeforces Round #296 (Div. 2)D. Clique Problem)
- codeforces 527D D. Clique Problem(二分+线段树+贪心+dp)
- Codeforce 527D Clique Problem题解
- Codeforces 527D. Clique Problem 贪心
- Codefroces 527D Clique Problem【思维+贪心】
- [贪心] Codeforces #527D. Clique Problem
- CF 443D. Andrey and Problem 贪心 or DP
- 【BZOJ】【P1537】【POI2005】【Aut- The Bus】【题解】【树状数组+dp】
- bzoj 2090 [Poi2010]Monotonicity 2 树状数组 dp 贪心
- HDU5293 Tree chain problem - 树形dp&树状数组优化
- Codeforces Round #296 (Div. 2) - D. Clique Problem(贪心)
- 【ZJOI2017】树状数组 题解
- 数据分析团队正成为手游公司的标配,但我为什么说解散他
- 山东大学操作系统课后作业1-7章
- iOS 之MBProgressHUD的简单封装
- Waymo无人车报告:通往自动驾驶之路
- C# DataTable分页(不需要sql)
- 【DP+树状数组 or 贪心】Codeforces527D[Clique Problem]题解
- iOS 使用UIScrollView实现图片的缩放
- 11.Java数组
- 【theano-windows】学习笔记十二——卷积神经网络
- C#生成单号
- 操作系统与应用程序的关系 操作系统主要可以分为两大部分:内核和内核之外的一些程序。内核就是直接控制最底层的硬件,而我们日常所用到的软件,大都是通过内核之外一些程序与内核之间的接口完成的,例如WINDO
- day71_oracle01_练习题
- 浏览器内核简介
- tomcat jdbc-pool