您的位置:首页 > 其它

POJ 1852 Ants 分析

2015-02-02 19:05 316 查看
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\n",minn,maxn);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: