题目请点我

题解:

这道题的题意是找出集合里全部固定长度为N的等差数列。集合内的元素均为P^2+q^2的形式(0<=p,q<=M)。时间要求5s内。本着KISS,直接暴力。

可是后来竟超时了。检查后发现是map的问题,本想利用map实现常数级的查找。可是显然map内部不是这种。所以对于普通的数据类型。数据量不大(250^2+250^2)的情况下还是利用数组标记查找好一点,get。

代码实现:

/*
ID: eashion
LANG: C++
TASK: ariprog
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <map>
#include <algorithm>
#define MAX 125000 using namespace std; int N,M;
bool flag;
int num[MAX];
int mm[MAX];
bool test(int start,int len);
int main()
{
freopen("ariprog.in","r",stdin);
freopen("ariprog.out","w",stdout);
while( scanf("%d%d",&N,&M) != EOF ){
int pos = 0;
flag = false;
memset(mm,0,sizeof(mm));
for( int i = 0; i <= M; i++ ){
for( int j = 0; j <= M; j++ ){
int tmp = i*i+j*j;
if( mm[tmp] != 1 ){
num[pos] = tmp;
mm[tmp] = 1;
pos++;
}
}
}
sort(num,num+pos);
int up_B = (num[pos-1]-num[0])/(N-1);
for( int i = 1; i <= up_B; i++ ){
for( int j = 0; j < pos; j++ ){
if( test(num[j],i) ){
flag = true;
printf("%d %d\n",num[j],i);
}
if( num[j]+(N-1)*i > num[pos-1] ){
break;
}
}
}
if( flag == false ){
printf("NONE\n");
}
}
return 0;
} bool test(int start,int len){
int tmp = start;
for( int i = 0; i < N; i++ ){
if( mm[tmp] != 1 ){
return false;
}
tmp += len;
}
return true;
}

最新文章

  1. Spark源码编译并在YARN上运行WordCount实例
  2. 关于phpcms 万一忘记密码怎么破?
  3. C++ security issue analyze
  4. SQL语句统计一段时间内的记录数
  5. ffmpeg转码MPEG2-TS的音视频同步机制分析
  6. 聊天气泡的绘制(圆角矩形+三角形+黑色边框,关键学会QPainter的draw函数就行了),注意每个QLabel都有自己的独立坐标
  7. 14.6.3 Grouping DML Operations with Transactions 组DML操作
  8. POJ9384 迷宫(基金会BFS)
  9. Union、Union All、Except、InterSect的区别
  10. js刷新页面不回到顶部
  11. vue实现简单表格组件
  12. bzoj 2243 [SDOI2011]染色(树链剖分+线段树合并)
  13. Python之作用域
  14. 手动导入xmpp后,再使用cocoapods的时候出现的问题
  15. Php中文件下载功能实现超详细流程分析
  16. java.lang.ClassNotFoundException: javax.servlet.SessionCookieConfig
  17. CentOS---zabbix使用sendEamil发送报警
  18. [django]前后端分离之JWT用户认证
  19. 在WINDOWS上开发IOS应用的方法
  20. sqoop产生背景及概述

热门文章

  1. ASP.NET MVC下实现前端视图页的Session
  2. 淘宝接口 TopAPi
  3. canvas使用3
  4. 如何解决iOS6、iOS7 3.5寸和4.0寸屏的适配问题?不要写两个xib文件
  5. mysql查询字段时实现左右补零
  6. 丑闻第一季 /全集Scandal迅雷下载
  7. Library drmframework_jni not found
  8. Android加密解密
  9. Asp.Net Core发布绑定域名和端口
  10. 将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)