| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:同样是暴力,为什么一个500+,一个tle呢? 麻烦大牛解释一下,谢谢啦.In Reply To:同样是暴力,为什么一个500+,一个tle呢? 麻烦大牛解释一下,谢谢啦. Posted by:ct314171238 at 2008-11-20 18:40:08 > 这个是tle的代码:
> #include <iostream>
> using namespace std;
>
> int flag[1000000];
>
> int main() {
> int n, g, s[301];
> int i, j, tmp;
> scanf("%d", &n);
> while(n--){
> scanf("%d", &g);
> for(i=1; i<=g; i++) scanf("%d", s+i);
> for(j=1; ;j++){
> memset(flag,0,sizeof(flag)); <--这里TLE
> for(i=1; i<=g; i++){
> tmp = s[i]%j;
> if(flag[tmp]) break;
> flag[tmp] = 1;
> }
> if(i>g) break;
> }
> printf("%d\n",j);
> }
> return 0;
> }
>
我一开始跟你一样TLE,后来把memset(flag, 0, sizeof(flag))去掉,每次保存flag[]置1的位置,退出循环前设置那些位置回0。就变成100ms+了。。。
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator