先筛选出来两种圆,一种是包含雅典娜,不包含怪兽的,一种是不包含雅典娜,包含怪兽的,然后圆的半径大小排序,分别对两种圆dp,最后合并两种DP,求出最大的就是结果

#include <cstdio>
#include <set>
#include <iostream>
#include <string>
#include <queue>
#include <cstring>
#include <algorithm>
#define LL long long
#define Inf (1<<30)
#define max(x,y)  x>y?x:y
using namespace std;
int n,X,Y;
int cntp,cntq;
struct node
{int x,y,r;int num;
}p[1100],q[1100];
bool cmp(node a,node b)
{return a.r<b.r;
}
int judge(node a,node b)//判断两个圆是否内含或者相离,是的话返回对
{int d=(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);if((a.r-b.r)*(a.r-b.r)<=d&&d<=(a.r+b.r)*(a.r+b.r))return 0;return 1;
}
int main()
{   int i,j,t,o=1;//freopen("D:\\oo.txt","r",stdin);scanf("%d",&t);while(t--){cntp=cntq=0;scanf("%d%d%d",&n,&X,&Y);      for(i=0;i<n;i++){int x,y,r;scanf("%d%d%d",&x,&y,&r);int d1=x*x+y*y;int d2=(x-X)*(x-X)+(y-Y)*(y-Y);if(d1<r*r&&d2>r*r)//包含雅典娜,不包含怪兽{p[cntp].x=x;p[cntp].y=y;p[cntp].r=r;p[cntp].num=1;cntp++;}if(d1>r*r&&d2<r*r)//不包含雅典娜,包含怪兽{q[cntq].x=x;q[cntq].y=y;q[cntq].r=r;q[cntq].num=1;cntq++;}}int ans=0;sort(p,p+cntp,cmp);sort(q,q+cntq,cmp);for(i=1;i<cntp;i++){for(j=0;j<i;j++)if(judge(p[i],p[j]))p[i].num=max(p[i].num,p[j].num+1);ans=max(ans,p[i].num);}if(cntp==1)ans=max(p[0].num,ans);//比较坑,因为这里错了很多次for(i=1;i<cntq;i++){for(j=0;j<i;j++)if(judge(q[i],q[j]))q[i].num=max(q[i].num,q[j].num+1);ans=max(ans,q[i].num);}      if(cntq==1)ans=max(q[0].num,ans);//比较坑,因为这里错了很多次for(i=0;i<cntp;i++){for(j=0;j<cntq;j++)if(judge(p[i],q[j]))ans=max(ans,p[i].num+q[j].num);}printf("Case %d: %d\n",o++,ans);}return 0;
}

hdu4562 守护雅典娜相关推荐

  1. hdu4562 守护雅典娜 DP

    守护雅典娜 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Subm ...

  2. HDU4562 守护雅典娜(DP)

    守护雅典娜 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Subm ...

  3. 守护雅典娜 HDU-4562

    vj链接: 守护雅典娜 题目描述: 许多塔防游戏都是以经典的"守护雅典娜"为原型的.玩家需要建立各种防御工具来阻止怪物接近我们的女神--雅典娜. 这里,我们可以建造的防御工具只有标 ...

  4. 杭电acm4562守护雅典娜 (dp+圆)

    守护雅典娜 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Subm ...

  5. HDU 4562 守护雅典娜(dp)

    守护雅典娜 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Subm ...

  6. hdu 4562 守护雅典娜(计算几何+dp)

    守护雅典娜 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Subm ...

  7. HDU 4562 守护雅典娜(金山复赛第二场)

    题意是塔防建塔,要求建最多塔 然后符合的情况是: rt 红色是允许的,蓝色是不允许的 输入时选择红色的 然后dp1 ath的圈,再dp2 mon的圈,最后dp3这两种圈的总和 dp1和dp2中能增加的 ...

  8. HDU 4562 守护雅典娜(动态规划)

    答案分为三种只能只有包含雅典娜的塔,只有包含怪兽的塔,包含雅典娜和怪兽的塔的和. 使用dp可以分别计算包含雅典娜.怪兽的最厚塔层数,过程类似LIS.枚举这两种情况的塔数,求和计算第三种情况. #inc ...

  9. HDOJ - 4562/西山居复赛2 守护雅典娜

    比赛的时候WA得一塌糊涂~~原因!..读题粗心了!!上一题的输出是Case #1: 0 , 而本题居然是Case 1: 1 ... 同一套题..神坑... 思路很简单了..能产生防御效果的..无非是能 ...

最新文章

  1. [干货]Kaggle热门 | 用一个框架解决所有机器学习难题
  2. oracle查看表和索引碎片,Oracle 表空间索引存储与碎片检查
  3. Android AsyncTask源码解读
  4. 【数据结构与算法】之深入解析“省份数量”的求解思路与算法示例
  5. 最新Android ADT, SDK, SDK_tool等官方下载说明(及时更新)
  6. Android周日历可滑动可选择日期
  7. reviewboard 安装
  8. Telink BDT 的使用方法
  9. 如何将您的计算机变成带有病态胡须的增压TiVo
  10. mysql字符集与校对规则设置_mysql 字符集和校对规则
  11. BI报表工具FineReport的使用2【帆软聚合报表设计,最常用功能】
  12. java.lang.IllegalArgumentException: Failed to decrypt.
  13. Eolink 11月企业与产品动态速览!
  14. 第二次使用Arduino MKR WiFi 1010做服务器
  15. linux 喂狗时间,看门狗喂狗时间及程序
  16. 疫情风险地区查询数据库
  17. Unsupervised Cross-Dataset Transfer Learning for Person Re-identification阅读总结
  18. javaCV入门指南:调用FFmpeg原生API和JavaCV是如何封装了FFmpeg的音视频操作?
  19. 数学符号大全 打不出就复制吧
  20. 新来个阿里 P7,仅花 2 小时,撸出一个多线程永动任务,看完直接跪了,真牛逼!...

热门文章

  1. 传统节日被淡化 老外:圣诞节在中国流行不可思议
  2. Go :测试简单的布尔和数字常量(附完整源码)
  3. html使页面崩溃,HTML5新特性Bug:这12行代码分分钟让你浏览器崩溃iPhone重启
  4. 通过浏览器直接打开android应用程序,直接通过浏览器打开Android App 应用
  5. linux(凝思系统)进入单用户模式
  6. matlab需要64g内存吗,买128G的手机有必要吗?64G手机内存会不够用么?
  7. CorelDRAW变换面板
  8. java毕业生设计高校二手交易平台计算机源码+系统+mysql+调试部署+lw
  9. Exchange Server 2013管理及应用-王进-专题视频课程
  10. 赢在中国主题曲《在路上》