USACO1.4.1 Arithmetic Progressions (ariprog)
来源:互联网 发布:小熊刷金币软件 编辑:程序博客网 时间:2024/05/17 04:43
先算出每一个双平方数放在arr里,还需要一个数组done来记录每一个整数是不是双平方数。
然后先枚举等差数列的首项,再枚举第二项,计算出公差,在算出之后的n-2项。
如果都是双平方数则记录答案。
这里用了一个剪枝,对于每一个枚举的首项,在枚举第二项时,先计算末项,如果大于了最大的双平方数则直接break,枚举下一个首项。
然后先枚举等差数列的首项,再枚举第二项,计算出公差,在算出之后的n-2项。
如果都是双平方数则记录答案。
这里用了一个剪枝,对于每一个枚举的首项,在枚举第二项时,先计算末项,如果大于了最大的双平方数则直接break,枚举下一个首项。
/*ID:shijiey1PROG:ariprogLANG:C++*/#include <cstdio>#include <cstring>#include <algorithm>#include <map>using namespace std;struct Node{int a, b;bool operator < (const Node &n) const {if (b != n.b) return b < n.b;return a < n.a;}};int n, m;int len = 0;int arr[70000];Node ans[10010];int cnt = 0;map<int, int> vis;int done[200000];int main() {freopen("ariprog.in", "r", stdin);freopen("ariprog.out", "w", stdout);scanf("%d %d", &n, &m);for (int i = 0; i <= m; i++) {for (int j = 0; j <= m; j++) {int t = i * i + j * j;// if (!vis[t]) {// vis[t] = 1;// arr[len++] = t;// }if (!done[t]) {done[t] = 1;arr[len++] = t;}}}sort(arr, arr + len);int now = 0;// 枚举首项for (int i = 0; i + n <= len; i++) {// 枚举第二项for (int j = i + 1; j + n - 1 <= len; j++) {if (arr[i] + (arr[j] - arr[i]) * (n - 1) > arr[len - 1]) {break;}int t = arr[j] - arr[i];now = 0;for (int k = arr[i]; k <= arr[len - 1]; k += t) {if (done[k]) {now++;} else {break;}if (now == n) {ans[cnt].a = arr[i];ans[cnt].b = t;cnt++;break;}}}}if (!cnt) {printf("NONE\n");return 0;}sort(ans, ans + cnt);for (int i = 0; i < cnt; i++) {printf("%d %d\n", ans[i].a, ans[i].b);}return 0;}
0 0
- USACO1.4.1 Arithmetic Progressions (ariprog)
- USACO1.4.1 Arithmetic Progressions (ariprog)
- usaco1.4.1 Arithmetic Progressions
- USACO 1.4 Arithmetic Progressions (ariprog)
- USACO Section 1.4 Arithmetic Progressions (ariprog)
- [USACO1.4]等差数列 Arithmetic Progressions
- USACO1.4 等差数列 Arithmetic Progressions
- [USACO1.4]等差数列 Arithmetic Progressions
- P1214 [USACO1.4]等差数列 Arithmetic Progressions
- 洛谷 P1214 [USACO1.4] 等差数列 Arithmetic Progressions
- [USACO1.4]等差数列Arithmetic Progressions 枚举
- 【数论】洛谷 P1214 [USACO1.4]等差数列 Arithmetic Progressions
- Arithmetic Progressions
- Arithmetic Progressions
- Arithmetic Progressions
- Arithmetic Progressions
- Arithmetic Progressions
- USACO 1.4-Arithmetic Progressions
- AngularJS(Part 10)
- Hadoop大象之旅010-使用eclipse查看hadoop源码
- USACO1.3.6 Ski Course Design (skidesign)
- mom.exe进程什么?
- Raspberry - 让命令后台运行避免受到SSH断开影响的方法
- USACO1.4.1 Arithmetic Progressions (ariprog)
- MQTT与CoAP比较
- USACO1.4.2 Mother's Milk (milk3)
- C语言内存管理
- USACO1.5.1 Number Triangles (numtri)
- 第281天(29W+4)
- UVA 1583 - Digit Generator
- Java中CountDownLatch的用法
- USACO1.5.2 Prime Palindromes (pprime)