usaco Arithmetic Progressions(看了题解)
生活随笔
收集整理的這篇文章主要介紹了
usaco Arithmetic Progressions(看了题解)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
usaco也開始限時了,這題是搜索加剪枝。剪枝很關鍵。(哎。。。。。。。。怎么才能不看題解解題啊)
/*
ID: jinbo wu
LANG: 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");
}
總結
以上是生活随笔為你收集整理的usaco Arithmetic Progressions(看了题解)的全部內容,希望文章能夠幫你解決所遇到的問題。