http://acm.hdu.edu.cn/showproblem.php?pid=6154
题意就是在一个平面直角坐标系里面,每一笔只能画1的直线或者是根号2的斜对角线,给出一个面积,求最少需要多少笔才能围成一个封闭图形的面积大于等于给出的面积
比赛的时候一直在瞎画图,思路很乱,结果没有找到规律。
结果看到题解,才发现自己想的差不多了就是没有去总结一下,其实就是用根号2的边为菱形的边不停的展开。。。找规律即可。
好像比赛的时候把菱形画成正方形了。。。。。真鸡儿尴尬。
#include<iostream>
using namespace std;
int main(){
double ans[111111];
double s1=1.5;
double s2=4;
ans[4]=2;
ans[5]=2.5;
ans[6]=4;
for(int i=7;i<=100020;i++)
{
if(i%4==1)
{
ans[i]=ans[i-1]+s1;
s1+=1;
}
if(i%4==2)
{
ans[i]=ans[i-2]+s2;
s2+=2;
}
if(i%4==3)
{
ans[i]=ans[i-1]+s1;
}
if(i%4==0)
{
ans[i]=ans[i-2]+s2;
}
}
int t;
cin>>t;
while(t--)
{
double n;
scanf("%lf",&n);
int ans1;
for(int i=4;i<=100020;i++)
{
if(ans[i]>=n)
{
ans1=i;
break;
}
}
cout<<ans1<<endl;
}
return 0;
}