zoukankan      html  css  js  c++  java
  • Enclosure POJ

    0:Enclosure

    http://poj.openjudge.cn/challenge3/0/

    总时间限制: 
    1000ms
     
    内存限制: 
    131072kB
    描述

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

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


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


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

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

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

    数据范围

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

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

    一行,1个数,即最小的次数。
    样例输入
    1
    2
    8
    样例输出
    4
    6
    12
    提示
    样例1中,只需要:右→上→左→下。(或者别的画出此图形的方法)。
    用%lld,坑呐。。。。。。。。
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    
    using namespace std;
    
    int main(){
    
        //freopen("input.txt","r",stdin);
    
        long long n;
        while(~scanf("%lld",&n)){
            if(n==1){
                puts("4");
            }else if(n==2){
                puts("6");
            }else if(n==3 || n==4){
                puts("8");
            }else{
                long long ans=8;
                long long x=(long long)sqrt(n-1);
                long long tmp=x*x+1;
                if(n-tmp+1<=x)
                    ans+=2+(x-2)*4;
                else
                    ans+=4+(x-2)*4;
                cout<<ans<<endl;
            }
        }
        return 0;
    }
  • 相关阅读:
    【转】Visual Studio 选择相同变量高亮
    匿名委托(方法) 以 ThreadStart 为例
    执行多个Sql脚本,Sqlplus
    【转】Win8 下 管理无线网络
    ORA-22992:没法使用从远程表选择的LOB定位器
    【转】NET中管理数字证书(Digital Certificate)的一些类
    修改数据库内存
    C# 计算一串字符串算法
    奇数平方的九宫格
    lua 的一些常用概念
  • 原文地址:https://www.cnblogs.com/jackge/p/3366964.html
Copyright © 2011-2022 走看看