• SSLZYC 2604 (洛谷P2765) 【24题】魔术球问题


    题目大意:
    这里写图片描述


    思路:

    不是网络流,是贪心!!!

    nice我就这样用贪心水过了一道网络流的题
    这题正解当然是网络流啦,但是这数据这么水肯定要用贪心水过啦!233
    第一问:
    公式了解一下。
    这里写图片描述
    第二问:
    贪心啊那还用说。
    首先说一个判断一个数是否是完全平方数的方法。

    bool square(int x)
    {
        if ((sqrt(x))*(sqrt(x))==x) return true;  
        return false;
    }

    因为x是正整数,而C++的整数完成运算后会自动向下取整,那么如果x不是完全平方数的话, x 就是小数,向下取整就会改变它的值,值改变了,那么它的平方也就改变了,就不等于x了。只有x为完全平方数时,x 的值不会是小数,向下取整就没有变化,再平方还是x

    那么接下来就用贪心思想,这个柱子能放就放,不能放再开一个柱子。


    代码:

    #include <cstdio>
    #include <cmath>
    #include <iostream>
    using namespace std;
    
    int n,m,a[101][1001],b[101],k,ok;
    
    bool square(int x)  //判断完全平方数
    {
        if (((int)(sqrt(x)))*((int)(sqrt(x)))==x) return true;
        return false;
    }
    
    int main()
    {
        scanf("%d",&n);
        m=(n*(n+2)+(n&1)-2)/2;  //公式
        printf("%d\n",m);
        a[1][1]=1;
        b[1]=1;
        k=1;  //初始化
        for (int i=2;i<=m;i++)
        {
            ok=0;
            for (int j=1;j<=k;j++)
             if (square(a[j][b[j]]+i))  //贪心,能放就放
             {
                b[j]++;
                a[j][b[j]]=i;  //放
                ok=1;  //标记
                break; 
             }
            if (ok==0)  //不能放
            {
                k++;  //再开一个柱子
                a[k][1]=i;
                b[k]=1;
            }
        }
        for (int i=1;i<=n;i++)
        {
            for (int j=1;j<=b[i];j++)
             printf("%d ",a[i][j]);  //按照顺序输出
            puts("");
        } 
        return 0;
    }

    对于坚持用网络流AC本题的dalao,再这里献上一组数据(方案可能不同)

    输入:

    10

    输出:

    59
    1 3 6 10 15 21 28 36 45 55 
    2 7 9 16 20 29 35 46 54 
    4 5 11 14 22 27 37 44 56 
    8 17 19 30 34 47 53 
    12 13 23 26 38 43 57 
    18 31 33 48 52 
    24 25 39 42 58 
    32 49 51 
    40 41 59 
    50 
    
  • 相关阅读:
    POJ-1318(list.sort()输出不为字典序,map才是按字典序排列)
    C++ 进阶
    命令模式在MVC框架中的应用
    使用NoSQL Manager for MongoDBclient连接mongodb
    第一部分 学习函数式思维
    【剑指offer】复杂链表的复制
    Hadoop-2.4.0分布式安装手冊
    Impala中多列转为一行
    js(jquery)绑定点击事件
    hdu1243 最长公共子序列(LCS)
  • 原文地址:https://www.cnblogs.com/hello-tomorrow/p/9313056.html
Copyright © 2020-2023  润新知