BNU 7543 && HDU 3425 Wax (分房间+模拟)

【题目链接】click here~~

【题目大意】 

给出一个矩形平分,一个width*hight的矩形,过底边上的一点(dor,0)做m-1条射线,把这个矩形的面积平均分成m份,求这些射线和矩形的(m-1)个交点的坐标

【解题思路】思路给出在代码中了:

//从左往右依次判断每加一个单位面积状态下的坐标
//可以证明每个面积是一块三角形
#include <iostream>
#include <algorithm>
#include <bits/stdc++.h>
using namespace std;
const double eps=1e-6;
struct node
{
    double x, y;
} Map[105];
int main()
{
    int i,j;
    double w,h,door,worker;
    while(~scanf("%lf%lf%lf%lf",&w,&h,&door,&worker),(w+h+door+worker))
    {
        double sum=w*h;          //总面积
        double s=sum/worker;     //每块房间的面积
        double res=0.0;          //
        for(i=0; i<worker-1; i++)
        {
            res+=s;
            if(res<=(w-door)*h/2.0) //边界右边的坐标
            {
                Map[i].x=w;       //面积得出高
                Map[i].y=res*2.0/(w-door);
            }
            else if(res<=(2*w-door)*h /2.0) //边界左边的坐标
            {
                Map[i].x=w-(res*2.0/h-w+door);
                Map[i].y=h;
            }
            else //坐标在有边界上
            {
                double ress=sum-res;//剩余面积
                Map[i].x=0;
                Map[i].y=ress*2.0/door;
            }
        }
        for(i=0; i<worker-1; i++)
        {
            if(i) printf(" ");
            printf("%.3lf %.3lf",Map[i].x,Map[i].y);
        }
       printf("\n");
    }
    return 0;
}
时间: 2024-10-06 05:03:25

BNU 7543 && HDU 3425 Wax (分房间+模拟)的相关文章

BNU 7536 &amp;&amp; HDU 3425 Coverage (圆与直线相交)

[题目链接]click here~~ [题目大意]求多个圆与线段相交的部分占整个线段的百分比. [解题思路] 求出符合要求的交线段,排序一遍圆心.最后求并. 代码: #include <bits/stdc++.h> #define max(a,b) ((a)>(b)?(a):(b)) using namespace std; struct node { double x,y,l,r; } Map[105]; bool cmp(node a, node b) { if(a.l == b.l

Hdu 3887树状数组+模拟栈

题目链接 Counting Offspring Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1757    Accepted Submission(s): 582 Problem Description You are given a tree, it’s root is p, and the node is numbered fr

HDU 4831 Scenic Popularity 暴力模拟

Scenic Popularity Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 340    Accepted Submission(s): 110 Problem Description 临近节日,度度熊们最近计划到室外游玩公园,公园内部包括了很多的旅游景点区和休息区,由于旅游景点很热门,导致景点区和休息区都聚集了很多人.所以度度熊

HDU 1034 Candy Sharing Game 模拟题

一个分糖游戏,找了会规律,没找到,只能直接模拟玩了. 果然0ms过了,看来数据不大,只是考编码能力罢了. #include <stdio.h> #include <vector> #include <string.h> #include <algorithm> #include <iostream> #include <string> #include <limits.h> #include <stack> #

hdu 4891 The Great Pan(模拟)

题目链接:hdu 4891 The Great Pan 题目大意:给出一个文本,问说有多少种理解方式. 1. $$中间的,(s1+1) * (s2+1) * ...*(sn+1), si表示连续的空格数. 2.{}中间,即 | 的个数+1. 解题思路:模拟. #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn = 1<<22

HDU 4930 Fighting the Landlords 模拟

_(:зゝ∠)_ 4带2居然不是炸弹,, #include <algorithm> #include <cctype> #include <cassert> #include <cstdio> #include <cstring> #include <climits> #include <vector> #include<iostream> using namespace std; #define N 18 #

hdu 1316 How Many Fibs? (模拟高精度)

题目大意: 问[s,e]之间有多少个 斐波那契数. 思路分析: 直接模拟高精度字符串的加法和大小的比较. 注意wa点再 s 可以从 0 开始 那么要在判断输入结束的时候注意一下. #include <cstdio> #include <iostream> #include <cstring> #include <algorithm> using namespace std; struct node { char str[111]; int len; void

HDU 5186 zhx&#39;s submissions 模拟,细节 难度:1

http://acm.hdu.edu.cn/showproblem.php?pid=5186 题意是分别对每一位做b进制加法,但是不要进位 模拟,注意:1 去掉前置0 2 当结果为0时输出0,而不是全部去掉 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn=101; const int maxm=201; int n,b; char

HDU 4968 Improving the GPA 模拟

最小时就都当69,最大时都当85 .. #include <cstdio> #include <iostream> #include <algorithm> #include <string.h> #include <math.h> #include <vector> #include <map> #include <queue> using namespace std; #define N 5000 int