标签:
Time Limit: 1000MS | Memory Limit: 30000K | |
Total Submissions: 12431 | Accepted: 5462 |
2 10 3 2 6 7 214 7 11 12 7 13 176 23 191
4 8 38 207
如果这个题使用穷竭搜索的话,时间复杂度O(2^n);显然不行,我们可以采取一种更为巧妙的方法。如果两只蚂蚁碰头以后,他们互相折返,能不能把他们看成是向左的蚂蚁按照的向右的方向向右走,向右的亦是如此,实质上就是两个蚂蚁继续按照原方向行进。所以我们维护一个最小值,一个最大值即可。
var n,m,i,j,mint,maxt,t:longint; a:array[1..100000] of longint; function min(x,y:longint):longint; begin if x>y then exit(y) else exit(x); end; function max(x,y:longint):longint; begin if x>y then exit(x) else exit(y); end; procedure main; var i:longint; begin readln(m,n); for i:=1 to n do read(a[i]); mint:=0; maxt:=0; for i:=1 to n do begin mint:=max(mint,min(a[i],m-a[i])); maxt:=max(maxt,max(a[i],m-a[i])); end; writeln(mint,‘ ‘,maxt); end; begin readln(t); for i:=1 to t do main; end.
标签:
原文地址:http://www.cnblogs.com/yangqingli/p/4883668.html