博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 3432
阅读量:4481 次
发布时间:2019-06-08

本文共 1677 字,大约阅读时间需要 5 分钟。

水题,就是把一个矩形平分。

题意:一个wid*hei的矩形,过底边上的一点(dor,0)做m-1条射线,把这个矩形的面积平均分成m份,求这些射线和矩形的另外一个交点。

直接枚举,然而求三角形高底移动坐标即可。

#include 
#include
#include
#include
using namespace std;struct pointer { double x,y;}ans[120];const double eps=0.00000001;int main(){ int wid,heg,door,p; while(scanf("%d%d%d%d",&wid,&heg,&door,&p)!=EOF){ if(wid==0&&heg==0&&door==0&&p==0) break; double ye=0,xe=wid,ys=heg; double parea=(wid*heg)*1.0/p; double part1=(wid-door)*heg*1.0/2; double part2=wid*heg*1.0/2; double part3=(door)*heg*1.0/2; double tmp; for(int i=0;i
eps){ if(tmp-eps>part1){ tmp-=part1; part1=0; } else if(fabs(tmp-part1)<=eps){ ans[i].x=wid; ans[i].y=heg; part1=0; continue; } else { double yy=(tmp*2)/(wid-door); ye+=yy; ans[i].x=wid; ans[i].y=ye; part1-=tmp; continue; } } if(part2>eps){ if(tmp-eps>part2){ tmp-=part2; part2=0; } else if(fabs(tmp-part2)<=eps){ ans[i].x=0; ans[i].y=heg; part2=0; continue; } else { double xx=(tmp*2)/heg; xe-=xx; ans[i].x=xe; ans[i].y=heg; part2-=tmp; continue; } } if(part3>eps){ if(tmp-eps>part3){ tmp-=part3; part2=0; } else if(fabs(tmp-part3)<=eps){ ans[i].x=0; ans[i].y=0; part3-=0; continue; } else{ double yy=(tmp*2)/door; ys-=yy; ans[i].x=0; ans[i].y=ys; part2-=tmp; continue; } } } printf("%.3lf %.3lf",ans[0].x,ans[0].y); for(int i=1;i

  

转载于:https://www.cnblogs.com/jie-dcai/p/3877417.html

你可能感兴趣的文章
English class 82 The Importance of traveling
查看>>
python用递归函数解汉诺塔游戏
查看>>
Redis与Python交互
查看>>
Maximum-SubsequenceSum
查看>>
常用的一些shell变量
查看>>
Android无法删除项目+导入项目报错
查看>>
poj 2349(最小生成树应用)
查看>>
python接口自动化测试二十五:执行所有用例,并生成HTML测试报告
查看>>
c# 指定的存储区提供程序在配置中找不到,或者无效
查看>>
最简陋的python数据
查看>>
第一堂java web课
查看>>
操作系统简介
查看>>
第1周小组博客作业--1703班06组
查看>>
vue项目中icon图标的完美引入
查看>>
C语言指针
查看>>
Java的安装
查看>>
0920 JSON数据 蓝懿
查看>>
Azure Cosmos DB 使用费用参考
查看>>
【嵌入式开发】写入开发板Linux系统-模型S3C6410
查看>>
C# 子线程与主线程通讯方法一
查看>>