hdu 6154 CaoHaha's staff【找规律】

来源:互联网 发布:电脑广告制作软件 编辑:程序博客网 时间:2024/05/18 02:03

题目

http://acm.hdu.edu.cn/showproblem.php?pid=6154

题意

在笛卡尔坐标系下,画一个面积至少为 nn 的简单多边形,每次只能画一条边或者一个格子的对角线,问至少要画几条。

分析

至少 4 条边才能围成封闭图形,然后考虑对于每一条边,最多能围成的面积。如果是偶数条边,那么就是使得两条边长度差最小得到的面积。如果是奇数条边,那么就是,首先少用一条,然后围成一个偶数条边的最大矩形,之后在这个矩形的较长边上增加一条边,可以突出一个梯形的部分,这就是对应的最大面积。

代码

#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <string>#include <vector>#include <queue>#include <map>#include <set>#include <cmath>using namespace std;int Area(int x){    if(x%4==0)return x/4*(x/4)*2;    else if(x%2==0) return x/4*(x/4+1)*2;    else return Area(x-1)+(x-2)/4;}int main(){    int T;scanf("%d",&T);    while(T--){        int n;        scanf("%d",&n);        for(int i=4;;i++){            if(Area(i)>=n){                printf("%d\n",i );                break;            }        }    }    return 0;}