当前位置: 首页 > 编程日记 > 正文

hdu 4720

最小覆盖圆的模板;

  1 #include<stdio.h>
  2 #include<string.h>
  3 #include<math.h>
  4 struct Point
  5 {
  6     double x;
  7     double y;
  8 } pt[1005];
  9 struct Traingle
 10 {
 11     struct Point p[3];
 12 };
 13 struct Circle
 14 {
 15     struct Point center;
 16     double r;
 17 } ans;
 18 //计算两点距离
 19 double Dis(struct Point p, struct Point q)
 20 {
 21     double dx=p.x-q.x;
 22     double dy=p.y-q.y;
 23     return sqrt(dx*dx+dy*dy);
 24 }
 25 //计算三角形面积
 26 double Area(struct Traingle ct)
 27 {
 28     return
 29         fabs((ct.p[1].x-ct.p[0].x)*(ct.p[2].y-ct.p[0].y)-(ct.p[2].x-ct.p[0].x)*(ct.p[1].y-ct.p[0].y))/2.0;
 30 }
 31 //求三角形的外接圆,返回圆心和半径(存在结构体"圆"中)
 32 struct Circle CircumCircle(struct Traingle t)
 33 {
 34     struct Circle tmp;
 35     double a, b, c, c1, c2;
 36     double xA, yA, xB, yB, xC, yC;
 37     a = Dis(t.p[0], t.p[1]);
 38     b = Dis(t.p[1], t.p[2]);
 39     c = Dis(t.p[2], t.p[0]);
 40 //根据S = a * b * c / R / 4;求半径R
 41     tmp.r = (a*b*c)/(Area(t)*4.0);
 42     xA = t.p[0].x;
 43     yA = t.p[0].y;
 44     xB = t.p[1].x;
 45     yB = t.p[1].y;
 46     xC = t.p[2].x;
 47     yC = t.p[2].y;
 48     c1 = (xA*xA+yA*yA - xB*xB-yB*yB) / 2;
 49     c2 = (xA*xA+yA*yA - xC*xC-yC*yC) / 2;
 50     tmp.center.x = (c1*(yA - yC)-c2*(yA - yB)) / ((xA - xB)*(yA - yC)-(xA - xC)*(yA - yB));
 51     tmp.center.y = (c1*(xA - xC)-c2*(xA - xB)) / ((yA - yB)*(xA - xC)-(yA - yC)*(xA - xB));
 52     return tmp;
 53 }
 54 //确定最小包围圆
 55 struct Circle MinCircle(int num, struct Traingle ct)
 56 {
 57     struct Circle ret;
 58     if (num==0) ret.r = 0.0;
 59     else if (num==1)
 60     {
 61         ret.center = ct.p[0];
 62         ret.r = 0.0;
 63     }
 64     else if (num==2)
 65     {
 66         ret.center.x = (ct.p[0].x+ct.p[1].x)/2.0;
 67         ret.center.y = (ct.p[0].y+ct.p[1].y)/2.0;
 68         ret.r = Dis(ct.p[0], ct.p[1])/2.0;
 69     }
 70     else if(num==3) ret = CircumCircle(ct);
 71     return ret;
 72 }
 73 //递归实现增量算法
 74 void Dfs(int x, int num, struct Traingle ct)
 75 {
 76     int i, j;
 77     struct Point tmp;
 78     ans = MinCircle(num, ct);
 79     if (num==3) return;
 80     for (i=1; i<=x; i++)
 81         if (Dis(pt[i], ans.center)>ans.r)
 82         {
 83             ct.p[num]=pt[i];
 84             Dfs(i-1, num+1, ct);
 85             tmp=pt[i];
 86             for (j=i; j>=2; j--)
 87                 pt[j]=pt[j-1];
 88             pt[1]=tmp;
 89         }
 90 }
 91 void Solve(int n)
 92 {
 93     struct Traingle ct;
 94     Dfs(n, 0, ct);
 95 }
 96 int main (void)
 97 {
 98     int n, i,t;
 99     int ca=1;
100     scanf("%d",&t);
101     while (t--)
102     {
103         for (i=1; i<=3; i++)
104             scanf("%lf %lf", &pt[i].x, &pt[i].y);
105         Solve(3);
106         double xx,yy;
107         scanf("%lf%lf",&xx,&yy);
108         printf("Case #%d: ",ca++);
109         if((xx-ans.center.x)*(xx-ans.center.x)+(yy-ans.center.y)*(yy-ans.center.y)<=(ans.r)*(ans.r))
110             puts("Danger");
111         else puts("Safe");
112     }
113     return 0;
114 }
View Code

转载于:https://www.cnblogs.com/yours1103/p/3317640.html

相关文章:

opencv可以在linux上运行,linux上 安装并 运行opencv

我是在树莓派上安装的。1.先安装依赖项OpenCV 2.2以后版本需要使用Cmake生成makefile文件&#xff0c;因此需要先安装cmake。sudo apt-get install build-essentialsudo apt-get install cmakesudo apt-get install libgtk2.0-devsudo apt-get install pkg-configsudo apt-get …

Calendar类点点滴滴积累

为什么80%的码农都做不了架构师&#xff1f;>>> set(f, value) 将日历字段 f 更改为 value。此外&#xff0c;它设置了一个内部成员变量&#xff0c;以指示日历字段 f 已经被更改。尽管日历字段 f 是立即更改的&#xff0c;但是直到下次调用 get()、getTime()、get…

3.3 栈的链式存储结构

<?php header("content-type:text/html;charsetutf-8"); /*** 栈的链式存储结构的基本操作**包括* 1.初始化 __contruct()* 2.进栈操作 push()* 3.出栈操作 pop()* 4.销毁栈 destroyStack()* 5.清空栈 clearStack()* 6.遍历栈 stackTraverse()*/ class Node{publ…

readelf 读取动态链接表命令

readelf -sV xxx 查看指定二进制文件运行时的加载库以及对应版本 并依据该命令可以修改某一二进制文件依赖的glibc库函数的版本&#xff0c;从而让改二进制程序可以运行在低版本的操作系统 readelf 读取链接表头 readelf -h xxx ELF文件介绍 ELF&#xff08;executable and …

[转]cocos2d-x

Cocos2d-x 是一个支持多平台的 2D 手机游戏引擎&#xff0c;使用 C 开发&#xff0c;基于OpenGL ES&#xff0c;基于Cocos2d-iphone&#xff0c;支持 WOPhone, iOS 4.1, Android 2.1 及更高版本, WindowsXP & Windows7&#xff0c;WindowsPhone 8.[1]Cocos2d-x是一个开源的…

Linux哪个和Windows很像,Linuxfx - 这套Linux操作系统看起来和Windows 10非常类似

正如你在截图中所看到的那样&#xff0c;Linuxfx的外观和感觉与Windows 10非常类似&#xff0c;甚至还可以得到一个带有Windows开始按钮的开始菜单&#xff0c;然而&#xff0c;这个实际上可能是一个问题&#xff0c;因为微软可能不喜欢在另一个操作系统中看到它的Windows标志。…

OSPF工作原理

ospf工作原理链路状态路由协议open标准最短路径优先&#xff08;spf&#xff09;算法链路状态路由协议&#xff08;vs&#xff0c;距离矢量&#xff09;与rip的区别 rip是周期性更新&#xff08;30&#xff09;ospf 不发送完整的路由条目但是它发送链路状态的更新有不同的分…

第十八章 MySQL Workbench5.2使用(待续)

转载于:https://www.cnblogs.com/hzzjj/p/9826074.html

r-rpm常用命令集

rpm 安装rpm包 rpm -ivh xxx.rpm rpm -ivh --nodeps --force xxx.rpm强行安装&#xff0c;不考虑依赖性 rpm --nodeps --force -Uvh *同样强行安装&#xff0c;不考虑依赖性 查看一个文件夹属于那个rpm包 rpm -qf /path/filename 查看文件属于哪个rpm包 rpm -qf xxx.so …

MySQL-存储过程

我们常用的操作数据库语言SQL语句在执行的时候需要要先编译, 然后执行; 而存储过程&#xff08;Stored Procedure&#xff09;是一组为了完成特定功能的SQL语句集, 经编译后存储在数据库中, 用户通过指定存储过程的名字并给定参数&#xff08;如果该存储过程带有参数&#xff0…

查看linux虚拟机信息,虚拟机:Linux查看线程信息的步骤

1. 使用 pstree -p PIDps aux | grep firefox | grep -v grepcharles 26058 0.0 0.0 4908 1152 &#xff1f; S 19:17 0:00 /bin/sh /usr/lib/firefox-3.5.4/run-mozilla.sh /usr/lib/firefox-3.5.4/firefoxcharles 26073 7.6 3.4 284264 70164 &#xff1f; Sl 19:17 4:36 /us…

下载备忘:甘特图实现的代码

通过asp.net 代码&#xff0c;拼接字符串&#xff0c;实现甘特图。 样式和原型全部来源于jquery.ganttView插件&#xff0c; https://github.com/mbielanczuk/jQuery.Gantt 通过修改该代码&#xff0c;实现了可以调节高度&#xff0c;宽度等多种参数&#xff0c;具体看代码即可…

Spyder更改默认工作路径已经文件路径

打开spyder&#xff0c;选择菜单栏中的Tools--->Preferences--->Current working directory 然后选择最下面的单选按钮The following directory 。具体操作如下所示 更改文件存放路径 直接点击右上角的的文件夹图标 选择合适的路径即可&#xff1a; 希望能帮到你 转载…

mysql字段类型

数字类型 列类型 需要的存储量 范围、备注 TINYINT 1 个字节 一个很小的整数 有符号的范围是-128到127&#xff0c;无符号的范围是0到255 SMALLINT 2 个字节 一个比较小的整数 有符号的范围是-32768到32767&#xff0c;无符号的范围是0到65535 MEDIUMINT 3 个字节 一…

s-sed替换或者修改文件指定行,同时匹配多个字符串,替换换行符为指定字符

最近需要在脚本中修改几个配置文件参数且不能影响其他参数&#xff0c;于是想到了sed的强大之处&#xff0c;拿来学学 -i参数表示直接替换并修改文件 -i参数时直接修改文件 sed -i s/aaa/bbb/g testfile 将testfile文件中的aaa替换为bbb字符串 删除文件指定行或者某行内容 sed…

linux中非法内存,Linux下数组非法访问导致内存破坏 —— 引发segmentation fault的原因...

2012-02-05 wcdj1, 调试时必需的栈知识2, 数组非法访问导致内存破坏调试时必需的栈知识栈(stack)是程序存放数据的内存区域之一&#xff0c;其特征是LIFO(Last In First Out, 后进先出)式数据结构&#xff0c;即后放进的数据最先备取出。向栈中存储数据的操作称为PUSH(压入)&am…

基于Matlab和Wind SQL数据库的通用选股策略回测程序

function [y,varargout]backtestcomplex(x,varargin) % Created on 2012-07-15 % latest justified on 2012-09-20 % 输入x是一个excel文件的地址字符串&#xff0c;如‘E:\Top50.xlsx’, excel文件的第一行为表头&#xff0c;包含4列&#xff1a;股票交易代码(SZ000001&#x…

Bzoj1123 Blockade

题目链接&#xff1a;https://loj.ac/problem/10104 日常水题&#xff0c;题目中已经给出了算法&#xff0c;写个模板即可&#xff0c;不会割点的这里有一篇博客&#xff1a;https://www.cnblogs.com/WWHHTT/p/9745499.html 难点是每个对可以互换顺序&#xff0c;然后删掉一个点…

sgdisk 磁盘操作命令

划分磁盘分区 sgdisk -n 1:2G:50G /dev/sda 划分磁盘分区&#xff0c;一号分区划分为50G&#xff0c;同时预留2G的空间 磁盘格式化 sgdisk -z -og /dev/sda 查看分区详情 sgdisk -i 1 /dev/hda查看hda第一分区的详情信息 [rootnode3 ~]# sgdisk -i 1 /dev/sdb Partition G…

spring.factories文件的作用

即spring.factories文件是帮助spring-boot项目包以外的bean(即在pom文件中添加依赖中的bean)注册到spring-boot项目的spring容器中。在Spring Boot启动时,它会扫描classpath下所有的spring.factories文件,加载其中的自动配置类,并将它们注入到Spring ApplicationContext中,使得项目能够自动运行。spring.factories文件是Spring Boot自动配置的核心文件之一,它的作用是。

Spring事务七大传播机制与五个隔离级别,嵌套事务

如果当前方法正有一个事务在运行中,则该方法应该运行在一个嵌套事务中,被嵌套的事务可以独立于被封装的事务中进行提交或者回滚。如果封装事务存在,并且外层事务抛出异常回滚,那么内层事务必须回滚,反之,内层事务并不影响外层事务。当前方法必须在一个具有事务的上下文中运行,如有客户端有事务在进行,那么被调用端将在该事务中运行,否则的话重新开启一个事务。当前方法必须运行在它自己的事务中。一个新的事务将启动,而且如果有一个现有的事务在运行的话,则这个方法将在运行期被挂起,直到新的事务提交或者回滚才恢复执行。

emacs python环境配置

python作为日常用语&#xff0c;配置好emacs的开发环境&#xff0c;有效提高日后的开发效率。 几篇老外的文章作为参考&#xff1a; Configing emacs as a python ide python、emacs 安装python和emacs就不用说了&#xff0c;这是必须的&#xff0c;apt-get安装即可 基础python…

编写linux下跑马灯应用程序,01 arm11 led 跑马灯程序

.text.globl _start_start:ldr r0, 0x70000000orr r0, r0, #0x13mcr p15, 0, r0, c15, c2, 4ldr r0, 0x7e004000mov r1, #0str r1, [r0]ldr sp, 8*1024bl xxxxb .start.S文件代码&#xff1b;void delay (){int i;for (i 0; i < 100000; i);}int xxxx (void){volatile unsi…

Exchange 2013防止数据丢失DLP预览

介绍 防止数据丢失&#xff08;Data loss Prevention&#xff09;是Exchange Server 2013带来的一个新功能&#xff0c;感觉其实应该叫做防止数据泄露&#xff0c;许多第三方工具和设备也有类似的功能&#xff0c;而在Exchange 2013种已经直接集成了&#xff0c;并且之前的传输…

Django 模型层(1)

知识预览 ORM简介单表操作章节作业回到顶部ORM简介 MVC或者MVC框架中包括一个重要的部分&#xff0c;就是ORM&#xff0c;它实现了数据模型与数据库的解耦&#xff0c;即数据模型的设计不需要依赖于特定的数据库&#xff0c;通过简单的配置就可以轻松更换数据库&#xff0c;这极…

软件测试面试的linux基础知识,linux基础面试题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼linux的用户管理useradd 用户名&#xff0c;添加用户【案例】useradd xiaomingpasswd 用户名&#xff0c;为新用户设密码【案例】passwd xiaoming&#xff0c;修改小明的密码userdel 用户名&#xff0c;删除用户【案例】userdel xi…

s-sort命令

对文本操作进行排序&#xff0c;以行为单位&#xff0c;依次根据ascii值进行比较&#xff0c;默认的排序方式为升序 sort [-bcfMnrtk][源文件][-o 输出文件]补充说明&#xff1a;sort可针对文本文件的内容&#xff0c;以行为单位来排序。 参 数&#xff1a;-b 忽略…

变体类的使用 package record case【转载】

**************理论区 start********************* DELPHI中记录的存储方式 在DELPHI中&#xff0c;我们用record关键字来表明一个记录&#xff0c;有时候&#xff0c;我们还会看到用packed record来声明的记录&#xff0c;这二者的区别就在于存储方式的不同&#xff1b;在wind…

【Boost】系列01:时间与日期

timer库(含timer,progress_timer和progress_display三个组件)和date_time timer用法&#xff1a; #include <boost/timer.hpp> #include <iostream> using namespace std; using namespace boost;int main() {timer t;//开始计时cout<<"max timespan:&q…

git学习网址

1、git 上传代码到GitHub 以及git删除github上文件和文件的命令 - lexsaints - CSDN博客 https://blog.csdn.net/weixin_42350212/article/details/80560272 2、git误区error: failed to push some refs to gitgithub.com: - whaleluo的博客 - CSDN博客 https://blog.csdn.n…