zoukankan      html  css  js  c++  java
  • 2017年10月07日普及组 蚂蚁

    这里写图片描述
    这里写图片描述

    分析
    a[i]表示第i只蚂蚁是否相碰。
    1.因为横纵坐标为-1000~1000,就枚举步数2000次就好了,因为他可能在某个带小数的坐标相碰,所以每一步走0.5而不能走1,这样的话步数就是4000次0.5而不是2000次1.
    2.每一次把相碰的蚂蚁全部找出来,并且标记,在找的过程中用另外的数组b标记,因为正在找的过程是参照上一次经过排除后的蚂蚁来找的,这一次标记不能用上去。
    3.做完以后把b数组更新后的值赋给a。

    程序:

    var
    a,b:array[0..51]of boolean;
    x,y:array[0..51]of real;
    t:array[0..51,1..2]of real;
    i,j,k,n,ans:longint;
    s:string;
    begin
        assign(input,'ant.in');
        reset(input);
        assign(output,'ant.out');
        rewrite(output);
        readln(n);
        readln(s);
        for i:=1 to n do
        begin
            readln(x[i],y[i]);
            a[i]:=true;
            b[i]:=true;
            if s[i]='N' then t[i,2]:=0.5 else
            if s[i]='E' then t[i,1]:=0.5 else
            if s[i]='S' then t[i,2]:=-0.5 else
            if s[i]='W' then t[i,1]:=-0.5;
        end;
        for i:=1 to 4000 do
        begin
            for j:=1 to n do
            if a[j]=true then
            begin
                x[j]:=x[j]+t[j,1];
                y[j]:=y[j]+t[j,2];
            end;
            for j:=1 to n do
            if a[j]=true then
            begin
                for k:=1 to n do
                if a[k]=true then
                if (j<>k) then
                if (x[k]=x[j]) and (y[k]=y[j])
                then
                begin
                    b[j]:=false;
                    b[k]:=false;
                    a[0]:=false;
                end;
            end;
            a:=b;
            if a[0]=true then break;
        end;
        for i:=1 to n do
        if a[i]=true then inc(ans);
        writeln(ans);
        close(input);
        close(output);
    end.
    
    
  • 相关阅读:
    写个比较通用的makefile
    十款原型设计工具
    网站色彩搭配
    [导入]用我的MyGeneration模板生成NHibernate映射文件和关系(onetoone,onetomany,manytomany)
    概要设计与详细设计
    原型设计样图
    PHPUnit安装
    php去掉字符串的最后一个字符 substr()的用法
    文档阅读器开发思路
    非原型 不设计
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/9500039.html
Copyright © 2011-2022 走看看