HDU 4562 守护雅典娜(DAG上的最长路)
理解错题意了。。。写的很麻烦,而且900+卡过。。。
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 #include <string> 6 #include <cmath> 7 using namespace std; 8 #define eps 1e-6 9 struct cir 10 { 11 int x,y,r; 12 } p[1001]; 13 int flag[1001]; 14 int o[1001]; 15 int t1[1001],t2[1001]; 16 struct node 17 { 18 int u,v,next; 19 } edge[1000000]; 20 int X,Y; 21 int t,first[1001],dp[1001]; 22 void CL() 23 { 24 memset(first,-1,sizeof(first)); 25 t = 1; 26 } 27 double dis(int x1,int y1,int x2,int y2) 28 { 29 return sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1)+0.0); 30 } 31 int judge(int key,int x,int y) 32 { 33 double temp; 34 temp = dis(x,y,p[key].x,p[key].y); 35 if(temp < p[key].r) 36 return 1; 37 else 38 return 0; 39 } 40 int fun(int x,int y) 41 { 42 /*B包含A 他们都含有原点 不含有X Y 建边A->B 43 A包含原点,B含有X Y 且A B不相交 建边A->B 44 A B 都包含X Y,A包含B 建边 A -> B */ 45 double temp; 46 temp = dis(p[x].x,p[x].y,p[y].x,p[y].y); 47 if(temp <= p[x].r + p[y].r &&temp >= fabs(p[x].r-p[y].r*1.0))//相交相切 48 return 0; 49 if(t1[x]&&t1[y]&&p[x].r < p[y].r) 50 return 1; 51 else if(t1[x]&&t2[y]) 52 return 1; 53 else if(t2[x]&&t2[y]&&p[x].r > p[y].r) 54 return 1; 55 else 56 return 0; 57 } 58 void add(int u,int v) 59 { 60 edge[t].u = u; 61 edge[t].v = v; 62 edge[t].next = first[u]; 63 first[u] = t ++; 64 } 65 int dfs(int u) 66 { 67 int ans,i; 68 if(dp[u] > 0) 69 return dp[u]; 70 ans = 0; 71 for(i = first[u]; i != -1; i = edge[i].next) 72 { 73 ans = max(dfs(edge[i].v),ans); 74 } 75 dp[u] = ans + 1; 76 return dp[u]; 77 } 78 int main() 79 { 80 int cas,i,j,n,num = 1,ans1; 81 scanf("%d",&cas); 82 while(cas--) 83 { 84 memset(flag,0,sizeof(flag)); 85 memset(o,0,sizeof(o)); 86 memset(dp,0,sizeof(dp)); 87 CL(); 88 scanf("%d%d%d",&n,&X,&Y); 89 for(i = 1; i <= n; i ++) 90 { 91 scanf("%d%d%d",&p[i].x,&p[i].y,&p[i].r); 92 } 93 for(i = 1; i <= n; i ++) 94 { 95 t1[i] = judge(i,X,Y);//标记了一下,卡过了。。 96 t2[i] = judge(i,0,0); 97 if(t1[i]&&t2[i]) 98 flag[i] = 1; 99 else if(!t1[i]&&!t2[i]) 100 flag[i] = 1; 101 } 102 for(i = 1; i <= n; i ++) 103 { 104 if(!flag[i]) 105 { 106 for(j = 1; j <= n; j ++) 107 { 108 if(i != j&&!flag[j]) 109 { 110 if(fun(i,j)) 111 { 112 add(i,j); 113 o[j] ++; 114 } 115 } 116 } 117 } 118 } 119 ans1 = 0; 120 for(i = 1; i <= n; i ++) 121 { 122 if(!flag[i]&&o[i] == 0) 123 { 124 ans1 = max(dfs(i),ans1); 125 } 126 } 127 printf("Case %d: %d\n",num ++,ans1); 128 } 129 return 0; 130 }
转载于:https://www.cnblogs.com/naix-x/archive/2013/05/25/3099399.html
HDU 4562 守护雅典娜(DAG上的最长路)相关推荐
- HDU 4562 守护雅典娜(dp)
守护雅典娜 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Subm ...
- hdu 4562 守护雅典娜(计算几何+dp)
守护雅典娜 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Subm ...
- hdu 4562 守护雅典娜 (Simple Geometry + dp)
http://acm.hdu.edu.cn/showproblem.php?pid=4562 中文题. 这道题的做法是先筛选出那些能够起到分隔雅典娜和怪兽的圆,就是那些只包围雅典娜或者只包围怪兽的圆, ...
- HDU 4562 守护雅典娜(金山复赛第二场)
题意是塔防建塔,要求建最多塔 然后符合的情况是: rt 红色是允许的,蓝色是不允许的 输入时选择红色的 然后dp1 ath的圈,再dp2 mon的圈,最后dp3这两种圈的总和 dp1和dp2中能增加的 ...
- HDU 4562 守护雅典娜(动态规划)
答案分为三种只能只有包含雅典娜的塔,只有包含怪兽的塔,包含雅典娜和怪兽的塔的和. 使用dp可以分别计算包含雅典娜.怪兽的最厚塔层数,过程类似LIS.枚举这两种情况的塔数,求和计算第三种情况. #inc ...
- HDU 4562 守护雅典娜
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4562 题意:给出一个点p(X,Y)以及若干圆.从中选出尽可能多的圆满足:圆能且只能包含p或者原点中的一 ...
- nyoj 10 skiing(DAG上的最长路,备忘录方法)
skiing 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑 ...
- hdu4562 守护雅典娜 DP
守护雅典娜 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Subm ...
- 杭电acm4562守护雅典娜 (dp+圆)
守护雅典娜 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Subm ...
最新文章
- 【JavaSE_07】Java中类和对象-封装特性
- 【tensorflow速成】Tensorflow图像分类从模型自定义到测试
- python 如何编写图像标定(标记)(annotation)画框程序?
- VTK:Shaders之BozoShader
- 枚举类 - Java面向对象编程
- Qt之QGraphicsView实战篇(很强大)
- 字节二面:优化 HTTPS 的手段,你知道几个?
- 巧用 PHP 数组函数 1
- 跟我学Spring Cloud(Finchley版)-21-Spring Cloud Config-配置属性加解密
- 预言:ALEXA工具条即将进行大规模升级(转)
- 最新ThinkPHP仿华为商城源码+带支付宝接口/在线支付
- Excel工作表丨使用Excel表格直接添加条码/二维码
- html鼠标悬停改变背景,html - 更改鼠标悬停行的背景颜色 - SO中文参考 - www.soinside.com...
- 酒店客房管理系统安排 Java项目 毕业设计项目不用愁
- 数据分析:新冠疫情实时数据爬取
- python公众号接口_用Python实现微信公众号API素材库图文消息抓取
- 99刀299刀 开发者账户 区别
- Java版Quest Soft Player
- 分页第一页用0还是1_洗脸用冷水还是热水好?这些错误只要犯1个,你的脸就白洗了!...
- python中英文字频率_python 统计英语文档词汇出现频率,以六级真题为例
热门文章
- linux内核开启ssh,linux开启ssh服务
- 【uniapp】真机调试
- Twinmotion 初学者教程
- Elasticsearch:如何实现短语建议 - phrase suggester
- 微信小程序:保持常亮
- zabbix监控服务器性能,使用zabbix监控apache性能
- 奇偶个数和数字特征值—程序设计入门C语言
- Vue使用html2Canvas导出pdf报Uncaught (in promise) Error: Element is not attached to a Document错误
- 利用dayjs格式化时间
- Scala 中的偏函数