USACO ariprog 暴力枚举+剪枝
2014-06-03 16:28
387 查看
/* ID:kevin_s1 PROG:ariprog LANG:C++ */ #include <iostream> #include <cstdio> #include <string> #include <cstring> #include <vector> #include <map> #include <set> #include <algorithm> #include <cstdlib> #include <list> #include <cmath> using namespace std; //gobal variable==== int doubleSqure[999999]; int table[999999]; int _index; int M,N; int lim; struct node{ int a; int d; }; vector<node> result; //================== //function========== void init(){ memset(table,0,sizeof(table)); _index = 1; for(int i = 0; i <= M; i++){ for(int j = 0; j <= M; j++){ int num = i * i + j * j; if(table[num] == 0){ doubleSqure[_index++] = num; table[num] = 1; } } } _index--; } void deal(int x){ int num = doubleSqure[x]; for(int i = x + 1; i <= _index - N + 2; i++){ if(doubleSqure[x] + (doubleSqure[i] - doubleSqure[x])*(N - 1) > lim) break;
<span style="white-space:pre"> </span>//剪枝,没有这一步的话会第七组数据会超时 int d = doubleSqure[i] - num; bool flag = true; int count = doubleSqure[i]; for(int j = 3; j <= N; j++){ count += d; if(table[count] == 0) flag = false; } if(flag){ node no; no.a = num; no.d = d; result.push_back(no); } } } bool cmp(const node& n1, const node& n2){ if(n1.d == n2.d) return n1.a < n2.a; else return n1.d < n2.d; } //================== int main(){ freopen("ariprog.in","r",stdin); freopen("ariprog.out","w",stdout); cin>>N>>M; init(); sort(doubleSqure, doubleSqure + _index); lim = doubleSqure[_index]; for(int i = 1; i <= _index - N + 1; i++){ deal(i); } sort(result.begin(), result.end(), cmp); vector<node>::iterator iter; if(result.size() == 0) cout<<"NONE"<<endl; else{ for(iter = result.begin(); iter != result.end(); iter++){ cout<<iter->a<<" "<<iter->d<<endl; } } return 0; }
相关文章推荐
- USACO ariprog 暴力枚举+剪枝
- usaco 1.4 ariprog...暴力枚举...
- HDU 1856 More is better(并查集路径压缩+剪枝优化+暴力枚举)
- USACO 1.3 - Combination Lock(暴力枚举)
- UVA 140 带宽 Bandwidth (暴力枚举+剪枝)
- USACO-Section1.2 Name That Number【暴力枚举】【二分查找】
- USACO-Section1.3 Wormholes 【深度优先搜索】【暴力枚举】
- USACO 1.4 The Clocks (暴力枚举)
- USACO-Section1.3 Prime Cryptarithm【暴力枚举】
- USACO 1.3 - Prime Cryptarithm(暴力枚举)
- USACO-Section1.3 Combination Lock【暴力枚举】
- HDOJ-----5339---Untitled暴力枚举+剪枝
- USACO 1.2 - Transformations(暴力枚举)
- USACO-Section 1.2 Palindromic Squares【暴力枚举】
- USACO-Section2.1 Hamming Codes【暴力枚举】
- HDU 4431 Mahjong (DFS,暴力枚举,剪枝)
- USACO-Section1.5 Prime Palindromes【暴力枚举】
- USACO-Section1.4 Arithmetic Progressions[其他][暴力枚举]
- USACO-Section1.3 Ski Course Design【暴力枚举】
- USACO 1.2 Milking Cows(暴力枚举)