usaco Arithmetic Progressions(看了题解)

来源:互联网 发布:oppo网络销售授权书 编辑:程序博客网 时间:2024/06/06 01:24

usaco也开始限时了,这题是搜索加剪枝。剪枝很关键。(哎。。。。。。。。怎么才能不看题解解题啊)

/*ID: jinbo wuLANG: C++TASK: ariprog*/#include<bits/stdc++.h>using namespace std;bool v[125010];int a[100000];int n; bool check(int b,int i){   int k=a[i];for(int i=1;i<n;i++){if(!v[k+=b])return 0;}return 1;}int main(){freopen("ariprog.in","r",stdin);freopen("ariprog.out","w",stdout);int m;scanf("%d %d",&n,&m);int l=0;for(int i=0;i<=m;i++)for(int j=0;j<=m;j++){if(!v[i*i+j*j]){a[l++]=i*i+j*j;v[a[l-1]]=1;    }}sort(a,a+l);int d=(a[l-1]-a[0])/(n-1);//剪枝int flag=0;for(int b=1;b<=d;b++){for(int i=0;i<l;i++){if(a[i]+(n-1)*b>a[l-1])break;//剪枝 if(check(b,i)){  printf("%d %d\n",a[i],b);  flag=1;    }} }  if(!flag) puts("NONE");}


0 0