正题

题目链接:https://www.luogu.com.cn/problem/CF39C


题目大意

坐标轴上有\(n\)个圆,给出每个圆的位置\(c_i\)和半径\(r_i\)。

要求选出最多的圆使得他们不相交,求方案。

\(1\leq n\leq 2000\)


解题思路

转换为选出最多的不交区间,然后离散一下,按照区间长度排序。

设\(f_{i,j}\)表示区间\(i\)内最右边的圆边界是\(r\)时的最多数量。

然后转移就可以了。

时间复杂度\(O(n^2)\)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int N=2100,inf=2147483647;
int n,l[N],r[N],f[N][N<<1],fr[N][N<<1];
int cnt,p[N],b[N<<1];
vector<int> q[N<<1];
bool cmp(int x,int y)
{return (long long)r[x]-l[x]<=(long long)r[y]-l[y];}
void print(int x,int r){
if(r<l[x])return;
if(fr[x][r]){
printf("%d ",fr[x][r]);
print(fr[x][r],r);
print(x,l[fr[x][r]]);
}
else print(x,r-1);
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++){
int c,R;
scanf("%d%d",&c,&R);
l[i]=c-R;r[i]=c+R;p[i]=i;
b[++cnt]=c-R;b[++cnt]=c+R;
}
l[++n]=-inf;r[n]=inf;p[n]=n;
b[++cnt]=-inf;b[++cnt]=inf;
sort(b+1,b+1+cnt);
cnt=unique(b+1,b+1+cnt)-b-1;
sort(p+1,p+1+n,cmp);
for(int xx=1;xx<=n;xx++){
int x=p[xx];
l[x]=lower_bound(b+1,b+1+cnt,l[x])-b;
r[x]=lower_bound(b+1,b+1+cnt,r[x])-b;
f[x][l[x]]=1;
for(int i=l[x]+1;i<=r[x];i++){
f[x][i]=f[x][i-1];
for(int j=0;j<q[i].size();j++){
int y=q[i][j];
if(l[y]<l[x])continue;
if(f[x][l[y]]+f[y][r[y]]>f[x][i])
f[x][i]=f[x][l[y]]+f[y][r[y]],fr[x][i]=y;
}
}
q[r[x]].push_back(x);
}
printf("%d\n",f[n][r[n]]-1);
print(n,r[n]);
return 0;
}

CF39C-Moon Craters【dp】的更多相关文章

  1. Kattis - honey【DP】

    Kattis - honey[DP] 题意 有一只蜜蜂,在它的蜂房当中,蜂房是正六边形的,然后它要出去,但是它只能走N步,第N步的时候要回到起点,给出N, 求方案总数 思路 用DP 因为N == 14 ...

  2. HDOJ 1423 Greatest Common Increasing Subsequence 【DP】【最长公共上升子序列】

    HDOJ 1423 Greatest Common Increasing Subsequence [DP][最长公共上升子序列] Time Limit: 2000/1000 MS (Java/Othe ...

  3. HDOJ 1501 Zipper 【DP】【DFS+剪枝】

    HDOJ 1501 Zipper [DP][DFS+剪枝] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...

  4. HDOJ 1257 最少拦截系统 【DP】

    HDOJ 1257 最少拦截系统 [DP] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...

  5. HDOJ 1159 Common Subsequence【DP】

    HDOJ 1159 Common Subsequence[DP] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...

  6. HDOJ_1087_Super Jumping! Jumping! Jumping! 【DP】

    HDOJ_1087_Super Jumping! Jumping! Jumping! [DP] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...

  7. POJ_2533 Longest Ordered Subsequence【DP】【最长上升子序列】

    POJ_2533 Longest Ordered Subsequence[DP][最长递增子序列] Longest Ordered Subsequence Time Limit: 2000MS Mem ...

  8. HackerRank - common-child【DP】

    HackerRank - common-child[DP] 题意 给出两串长度相等的字符串,找出他们的最长公共子序列e 思路 字符串版的LCS AC代码 #include <iostream&g ...

  9. LeetCode:零钱兑换【322】【DP】

    LeetCode:零钱兑换[322][DP] 题目描述 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成 ...

随机推荐

  1. Docker搭建Svn服务器

    一.下载镜像 # 搜索镜像 docker search svn # 下载镜像 docker pull garethflowers/svn-server 二.启动镜像 # 编辑配置文件 vim dock ...

  2. 使用Hugo和GitHub搭建博客

    折腾了几天博客的框架终于搭建起来了.研究了一番之后,最终还是选择使用Hugo和GitHub来搭建博客.本文介绍了如何使用Hugo来搭建静态博客网站,并将其部署在GitHub上.使用https://&l ...

  3. Go语言 判断key是否在map里 if _, ok := map[key]; ok

    if val, ok := map[key]; ok { //do something here } 如果key在map里 val 被赋值map[key] ok 是true 否则val得到相应类型的零 ...

  4. 再过五分钟,你就懂 HTTP 2.0 了!

    Hey guys ,各位小伙伴们大家好,这里是程序员 cxuan,欢迎你收看我最新一期的文章. 这篇文章我们来聊一聊 HTTP 2.0,以及 HTTP 2.0 它在 HTTP 1.1 的基础上做了哪些 ...

  5. Linux压缩解压 tar.gz格式的文件.查看tomcat是否运行

    tar命令详解 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用 ...

  6. 关闭 Scroll Lock

    通常,在电子表格中选择一个单元格并按箭头键时,所选内容会在各个单元格之间上下左右移动,具体取决于您按的箭头键.但是,如果在 Scroll Lock 处于开启状态时按箭头键,则向上或向下滚动一行.或者, ...

  7. Confluence7.4安装并破解汉化教程

    Confluence是一款由JAVA编写用于企业知识库管理协同软件,多用于构建企业内部WIKI,支持多人协作,共享信息等. 当前系统环境Centos7.9,内存至少2G以上,数据库采用MySQL5.7 ...

  8. oracle基础知识及语法

    ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CHECK (检查)--检查在约 ...

  9. 在CentOs7源码安装mysql-5.6.35单实例数据库

    首先安装依赖包,避免在安装过程中出现问题 [root@bogon liuzhen]# yum -y install gcc gcc-c++[root@bogon liuzhen]# yum -y in ...

  10. .Net Core配置Configuration源码研究

    最近又研究了一下.NetCore配置选项的源码实现,又学习到了不少东西.这篇文章先写一下IConfiguration的学习成果,Options的后面补上 核心类 ConfigurationBuilde ...