• HDU 6206 青岛网络赛1001 高精度 简单几何


    给出的数据1e12规模,常规判点是否在圆范围内肯定要用到半径,求得过程中无法避免溢出,因此用JAVA自带的浮点大数运算,和个ZZ一样比赛中eclipse出现问题,而且太久没写JAVA语法都不清楚变量忘了申请空间/构造,还不知道为什么写不了类/函数,一个一个把运算符改成JAVA大数对象封装的函数,括号看的头疼,太傻了,应该交给IDE正常的队友写的,而且也没什么难度,JAVA大数还不用考虑什么精度,怎么简单怎么来。

    import java.io.*;
    import java.math.*;
    import java.util.*;
    import java.util.concurrent.atomic.DoubleAdder;
    import java.util.zip.ZipEntry;
    
    import org.omg.PortableInterceptor.DISCARDING;
    
    
    public class Main {
    	public static BigDecimal dis(BigDecimal ax, BigDecimal  ay, BigDecimal bx, BigDecimal by){
    		BigDecimal res = ((ax.subtract(bx)).multiply(ax.subtract(bx))).add((ay.subtract(by)).multiply(ay.subtract(by)));
    		return res;
    	}
    	public static BigDecimal R(BigDecimal ax, BigDecimal  ay, BigDecimal bx, BigDecimal by, BigDecimal cx, BigDecimal cy) {
    		BigDecimal pa = by.subtract(cy);
    		BigDecimal pb = cy.subtract(ay);
    		BigDecimal pc = ay.subtract(by);
    		BigDecimal PA = ax.multiply(pa);
    		BigDecimal PB = bx.multiply(pb);
    		BigDecimal PC = cx.multiply(pc);
    		return PA.add(PB.add(PC));
    	}
    	public static BigDecimal Ux(BigDecimal ax, BigDecimal  ay, BigDecimal bx, BigDecimal by, BigDecimal cx, BigDecimal cy){
    		BigDecimal pa = by.subtract(cy);
    		BigDecimal pb = cy.subtract(ay);
    		BigDecimal pc = ay.subtract(by);
    		BigDecimal PA = ((ax.multiply(ax)).add((ay.multiply(ay)))).multiply(pa);
    		BigDecimal PB = ((bx.multiply(bx)).add((by.multiply(by)))).multiply(pb);
    		BigDecimal PC = ((cx.multiply(cx)).add((cy.multiply(cy)))).multiply(pc);
    		return PA.add(PB.add(PC));
    	}
    	public static BigDecimal Uy(BigDecimal ax, BigDecimal  ay, BigDecimal bx, BigDecimal by, BigDecimal cx, BigDecimal cy){
    		BigDecimal pa = cx.subtract(bx);
    		BigDecimal pb = ax.subtract(cx);
    		BigDecimal pc = bx.subtract(ax);
    		BigDecimal PA = ((ax.multiply(ax)).add((ay.multiply(ay)))).multiply(pa);
    		BigDecimal PB = ((bx.multiply(bx)).add((by.multiply(by)))).multiply(pb);
    		BigDecimal PC = ((cx.multiply(cx)).add((cy.multiply(cy)))).multiply(pc);
    		return PA.add(PB.add(PC));
    	}
    	public static void main(String[] args) {
    		int T;
    		Scanner cin = new Scanner((new BufferedInputStream(System.in)));
    		BigDecimal[] a = new BigDecimal[2];
    		BigDecimal[] b = new BigDecimal[2];
    		BigDecimal[] c = new BigDecimal[2];
    		BigDecimal[] z = new BigDecimal[2];
    		BigDecimal r = null;
    		BigDecimal x = null;
    		BigDecimal y = null;
    		BigDecimal dd = null;
    		BigDecimal eps = BigDecimal.valueOf(1e-20);
    		T = cin.nextInt();
    		for(int i = 0; i < T; i++)
    		{
    			a[0] = cin.nextBigDecimal(); a[1] = cin.nextBigDecimal();
    			b[0] = cin.nextBigDecimal(); b[1] = cin.nextBigDecimal();
    			c[0] = cin.nextBigDecimal(); c[1] = cin.nextBigDecimal();
    			z[0] = cin.nextBigDecimal(); z[1] = cin.nextBigDecimal();
    			BigDecimal D = R(a[0], a[1], b[0], b[1], c[0], c[1]).multiply(BigDecimal.valueOf(2));
    			x = Ux(a[0], a[1], b[0], b[1], c[0], c[1]).divide(D);
    			y = Uy(a[0], a[1], b[0], b[1], c[0], c[1]).divide(D);
    			//System.out.println(x+" "+y);
    			r = dis(a[0], a[1], x, y);
    			dd = dis(z[0], z[1], x, y);
    			//System.out.println(r+" "+dd);
    			if(dd.subtract(r).compareTo(eps) > 0)
    				System.out.println("Accepted");
    			else 
    				System.out.println("Rejected");
    				
    		}
    	}
    }
    
    
  • 相关阅读:
    Maven 建立的项目resource对应的实际位置
    MySQL常用查询语句汇总(不定时更新.......)
    Eclipse中使用Maven新建 Servlet 2.5的 SpringMVC项目
    Java异常(输出[D@139a55问题)
    JSP的原理、JSP的执行过程
    使用CMD命令行来对MySQL数据库执行迁移、备份、恢复
    Tomcat项目部署方式
    Java网络编程小结 URLConnection协议处理器
    java 多线程下载文件 以及URLConnection和HttpURLConnection的区别
    java中的==、equals()、hashCode()
  • 原文地址:https://www.cnblogs.com/Yumesenya/p/7554071.html
Copyright © 2020-2023  润新知