• POJ 1852 Ants 分析


    1、暴搜 

                每只蚂蚁朝向有两种,可以枚举n只蚂蚁的朝向,然后模拟蚂蚁相遇的情景,总共2^n中情况。

    2、分析ants相碰的情况:

                                          (a->)  (<-b) 变成 (<-a)(b->)

                由于每只蚂蚁是相同的,所以等价与(<-b)(a->),这和两只蚂蚁原来的走向是一样的,即把碰撞当作没发生过

                所以可以对每一只蚂蚁检查一次就可以了

    3、空间优化

                存蚂蚁的初始位置O(n),但是我们每次只要比较 a[i] 和 len-a[i] 就可以了,后面不需要这两个值了,所以完全可以用一个x来存ant position,空间O(1)

     最终每一次 时间O(n) 空间O(1)

    /* 贪心,挑战程序设计竞赛 巫 */
    #include<cstdio>
    
    int min(int a,int b){ return a<b?a:b;}
    
    int main()
    {
        int T,len,n,x,minn,maxn,tmp;
        scanf("%d",&T);
        while(T--){
            scanf("%d %d",&len,&n);
            minn=-1111111,maxn=-11111;
            while(n--){
                scanf("%d",&x);
                tmp=min(x,len-x); /* smaller one */
                if(tmp>minn) minn=tmp;
                tmp=len-tmp;     /* bigger one */
                if(tmp>maxn) maxn=tmp;
            }
            printf("%d %d
    ",minn,maxn);
        }
        return 0;
    }
  • 相关阅读:
    Eclipse项目上传和下载到码云上
    java.lang.IllegalArgumentException,java.util.zip.ZipException 解决办法
    #{}和${}的区别
    Lambda 表达式
    存储器的按字寻址和按字节寻址
    二叉树的三种遍历方式
    线性表和链表
    java泛型理解
    java字符输入输出流
    applet的生命周期
  • 原文地址:https://www.cnblogs.com/tinyork/p/4268502.html
Copyright © 2020-2023  润新知