阿姆斯特朗回旋加速喷气式阿姆斯特朗炮
题目来源:https://biancheng.love/contest-ng/index.html#/34/problems
题目描述
时代在进步,在Nova君的改进下,阿姆斯特朗回旋加速喷气式阿姆斯特朗炮终于进化成为了先进的电磁轨道炮,不仅能够在直筒中发射直线型电磁炮,还能利用正负极磁场,在两座炮台间形成弧形电磁炮,大大加强了御敌能力。某一天,天人(外星人)入侵了地球,现在要用阿姆斯特朗回旋加速喷气式阿姆斯特朗炮进行轰击,简化图如下: ![] (http://ww1.sinaimg.cn/mw690/006jMFyngw1eyupfrs57wj30kg0drgm3.jpg)
现在抽象问题,假设外星人都在X轴上方(不含X轴本身)出现,现在有三门阿姆斯特朗回旋加速喷气式阿姆斯特朗炮,中间的A炮,可以发射以原点O为起点的任意射线的电磁炮,其方向向量和X轴正方向夹角为Θ,可以消灭位于射线的所有敌人,位于两翼的炮B和炮C形成电磁回路,两炮口间有半圆形的弧形电磁炮,可以消灭位于弧形线上的所有敌人,设半圆的半径为R。每当发现敌人,A炮可以计算出敌人与O点连线和X轴正方向的夹角Θi,B炮和C炮可以计算出敌人所处弧形炮的半径Ri。现在有N个敌人,至少需要发射几次炮弹才能清理所有的外星人?(B、C联动只算发射一次)
PS:
(1) 假设Θi为角度制,范围1~179(单位:度)
(2) 假设敌人出现的最大半径为1000
输入
多组测试数据(组数不超过10),对于每组数据,输入N+1行,第一行输入一个正整数N,代表外星人的个数。接下来的N行,每行输入两个正整数,为对应的A炮计算出的Θi 和 B、C炮计算出的Ri。
输出
对于每组数据,输出一行,代表发射的最少次数。
输入样例
3
1 2
2 2
3 4
输出样例
2
代码:
1 #include<iostream> 2 #include<cstdio> 3 #include<list> 4 #include<algorithm> 5 #include<cstring> 6 #include<string> 7 #include<queue> 8 #include<stack> 9 #include<map> 10 #include<vector> 11 #include<cmath> 12 #include<memory.h> 13 #include<set> 14 15 long long TNF=99999999; 16 #define LL __int64 17 #define eps 1e-8 18 19 20 using namespace std; 21 22 #define M 400000100 23 24 #define inf 0xfffffff 25 26 27 vector<int>G[1212]; 28 29 char tempmp[1212]; 30 int mp[1212][1212]; 31 int lmarry[1212],rmarry[1212]; 32 bool visl[1212],visr[1212]; 33 34 int dis[2][4]={0,-1,0,1,1,0,-1,0}; 35 36 int n=1000,m=1000,k; 37 38 void clear() 39 { 40 memset(lmarry,-1,sizeof(lmarry)); 41 memset(rmarry,-1,sizeof(rmarry)); 42 memset(visl,false,sizeof(visl)); 43 memset(visr,false,sizeof(visr)); 44 memset(mp,0,sizeof(mp)); 45 for(int i=0;i<1212;i++) 46 G[i].clear(); 47 } 48 49 bool dfs(int x) 50 { 51 visl[x]=true; 52 for(int i=0;i<G[x].size();i++) 53 { 54 int v=G[x][i]; 55 if(!visr[v]) 56 { 57 visr[v]=true; 58 if(lmarry[v]==-1 || dfs(lmarry[v])) 59 { 60 lmarry[v]=x; 61 rmarry[x]=v; 62 return 1; 63 } 64 } 65 } 66 return 0; 67 } 68 69 70 int main(void) 71 { 72 while(~scanf("%d",&k)) 73 { 74 clear(); 75 int u,v; 76 for(int i=0;i<k;i++) 77 { 78 scanf("%d %d",&u,&v); 79 G[u].push_back(v); 80 } 81 int ans=0; 82 for(int i=1;i<=n;i++) 83 { 84 memset(visr,false,sizeof(visr)); 85 if(dfs(i)) 86 ans++; 87 } 88 printf("%d",ans); 89 memset(visl,false,sizeof(visl)); 90 memset(visr,false,sizeof(visr)); 91 printf("\n"); 92 } 93 }
转载于:https://www.cnblogs.com/zpfbuaa/p/5037565.html
阿姆斯特朗回旋加速喷气式阿姆斯特朗炮相关推荐
- python判断阿姆斯特朗数_Python 程序检查阿姆斯特朗数
Python 程序检查阿姆斯特朗数 在此示例中,您将学习检查n位整数是否是Armstrong数字. 要理解此示例,您应该了解以下Python编程主题: 一个正整数称为阿姆斯特朗阶数,n如果abcd.. ...
- java阿姆斯特朗数,Java判断阿姆斯特朗数
Java判断阿姆斯特朗数 1 什么是阿姆斯特朗数 Java中的阿姆斯壮数字:如果正数等于其数字的立方之和,例如0.1.153.370.371.407等,则称为阿姆斯特朗数. 让我们尝试了解为什么153 ...
- sql number转varchar_MySQL 指南之 SQL 语句基础
个人所有文章整理在此篇,将陆续更新收录:知无涯,行者之路莫言终(我的编程之路) 零.结构化查询语言:SQL(Structured Query Language) DDL 数据定义语言 管理库,表 DM ...
- 滚轮每次滚动距离是一致的吗_「超硬核科普」鼠标的发展历史,中国人发明的鼠标滚轮...
鼠标,作为现代计算机必不可少的硬件之一 一直都在伴随着我们的成长 你可能,每天都会不停的在人家身上,摸来摸去的 并且,不停的感受着人家给你带来的舒适的手感 今天就由我来带领大家回顾一下这半个多世纪间, ...
- # IFE前端(2015春)-task2
第一章 JavaScript数据类型及语言基础 期望达成 掌握JavaScript的各种数据类型概念.判断方法 掌握JavaScript函数.对象的概念 掌握字符串.数字.数组.日期等对象的方法 了解 ...
- 异常强大的Markdown编辑插件-Markdown Preview Enhanced
最近使用Markdown写作,了解到以下这些Markdown写作工具 MaHua 在线markdown编辑器 百度搜索Markdown时,它排在非常靠前的位置 马克飞象- 专为印象笔记打造的Markd ...
- 理解 Math.max(min).apply 获取数组中的最大(小)值机制
前言- 阿姆斯特朗回旋加速喷气式阿姆斯特朗炮, 还原度还真高呢 >-< 了解 apply 传入参数机制 //模拟 Math.max 方法 function Math_max(num1, n ...
- [转] 对不起 ,老师 ,我完成不了寒假作业了
老师,真的非常抱歉,我已经无法交出作业. 今天我出门补完课后,正走在回家的路上, 没想到突然从后面窜出一个男人抢走了我的背包. 要知道,我的背包里放着寒假作业. 我可以不管我的手机或者钱包, 但是我怎 ...
- 逗B少年搞程序番外篇 人山人海,我自独白
转眼这个暑假又过去了,突然收到了老师发来的消息:"论文开题报告准备的怎么样了?"怎么我就给忘了...看了一眼我们亲爱的计算机系的事物什么什么网站,据说这个网站使我们老师 ...
- COGS 2091. Asm.Def的打击序列
★★★ 输入文件:asm_lis.in 输出文件:asm_lis.out 简单对比 时间限制:4 s 内存限制:256 MB [题目描述] 白色圆柱形的"蓝翔"号在 ...
最新文章
- 动态改变标题_插入控件-gt;引用变量-gt;实现动态图表纵横筛选
- 2014年工作中遇到的20个问题:120-140
- Python 位操作运算符
- 第四十八期:只因写了一段爬虫,公司200多人被抓!
- php怎么在html上得到input值,怎么把一個php頁面的值傳到另一個html表單中的input里面去...
- JZOJ5146:港湾
- [恢]hdu 2074
- Cannot delete or update a parent row: a foreign key constraint fails
- 关于影视后期制作的就业市场调查报告
- 一款很漂亮的一天只弹窗一次的公告
- Python编写时钟表turtle
- glassfish配置错误问题
- 总结27 -- E45: ‘readonly‘ option is set (add ! to override)
- BUU Web[33-36]
- 历史性一刻,中国航天器首次登上火星!!!
- github上的免费书籍
- 【时序】DeepGLO:可以学习全局依赖和局部信息的多时间序列预测模型
- 自然数拆分(完全背包问题求方案数)
- Airtest 入门2 图像库
- mpich2+gfortran+siesta3.1安装过程