• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
james1207

博客园    首页    新随笔    联系   管理    订阅  订阅

OpenJudge.poj CR2(Enclosure-ceil向上取整)

 

0:Enclosure

  • 查看
  • 提交
  • 统计
  • 提问
总时间限制: 
1000ms 
内存限制: 
131072kB
描述

为了防止爆零而加入了一道热身题。大家轻虐~

Picks在参加NOI(网上同步赛)时,看到大家都在疯狂讨论“圈地游戏”,于是Picks对这个游戏很!好!奇!他想自己开发一个Bot来玩。



不过Picks水平不行……写一个复杂的程序对他太难了,于是他简化了一下,使得场上只有他写的Bot,且场地大小无限。


圈地游戏的规则是:Bot能够水平或者纵向移动 1 格,每次移动可以选择是否落笔,在落笔状态下就会画出轨迹。每当曾经自己走到的轨迹上时,围成的封闭图形就归它所有,得到这块区域的分数,并且轨迹消失。

请注意!在本题中,得到的分为圈住的地的面积。

为了打倒他的幻想对手,他给自己限定了一个分数 K,只有在得分不少于 K 时他才会满足。他很想知道他最少要移动多少次?


数据范围


输入
一个测试点中有多组数据(不超过10组)。对于每组数据:

一行,1个数:K,意义如题。
输出
对于每组数据:

一行,1个数,即最小的次数。
样例输入
1
2
8
样例输出
4
6
12
提示
样例1中,只需要:右→上→左→下。(或者别的画出此图形的方法)。


这题就是公式题
均值不等式a+b≥2√ab ≥2√k

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<functional>
#include<iostream>
#include<cmath>
#include<cctype>
#include<ctime>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Lson (x<<1)
#define Rson ((x<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,127,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define INF (2139062143)
#define F (100000007)
long long mul(long long a,long long b){return (a*b)%F;}
long long add(long long a,long long b){return (a+b)%F;}
long long sub(long long a,long long b){return (a-b+(a-b)/F*F+F)%F;}
typedef long long ll;
ll k;
int main()
{
	freopen("Enclosure.in","r",stdin);
//	freopen("Enclosure.out","w",stdout);
	while (cin>>k)
	{
		cout<<(ll)(2*ceil(2*sqrt(k)))<<endl;
	}
	
	
	return 0;
}





 

 




 

posted @ 2013-10-14 09:56  Class Xman  阅读(271)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3