https://www.luogu.org/problemnew/show/P1214

首先暴力枚举可以凑出来的数,对于每个数进行标记。

对于每一个等差数列,当我们知道前两个数后即可以得出整个序列,那么我们就要判断序列中的每一个数是否被标记过,合法记录答案。

最后对于答案进行排序,输出。

  1. #include <algorithm>
  2. #include <iostream>
  3. #include <cstring>
  4. #include <cstdio>
  5. #include <cmath>
  6. #include <queue>
  7. using namespace std;
  8. #define LL long long
  9. int a[],tot,cnt,n,m;
  10. bool vis[];
  11. struct ahah
  12. {
  13. int s,k;
  14. } ans[];
  15. bool cmp(ahah a,ahah b)
  16. {
  17. return a.k<b.k;
  18. }
  19. void prepare(int x)
  20. {
  21. for(int i=; i<=x; i++)
  22. {
  23. for(int j=; j<=x; j++)
  24. {
  25. a[++tot]=i*i+j*j;
  26. }
  27. }
  28. sort(a+,a++tot);
  29. tot=unique(a+,a++tot)-a-;
  30. for(int i=; i<=tot; i++)vis[a[i]]=;
  31. }
  32. int main()
  33. {
  34.  
  35. scanf("%d%d",&n,&m);
  36. prepare(m);
  37. for(int i=; i<=tot; i++)
  38. {
  39. if(a[i]>m*m*)break;
  40. for(int j=i+; j<=tot; j++)
  41. {
  42. int d=a[j]-a[i];
  43. if(a[i]+(n-)*d > m*m*)break;
  44. for(int k=; k<=n; k++)
  45. {
  46. if(!vis[a[i]+d*(k-)])break;
  47. if(k==n)ans[++cnt].s=a[i],ans[cnt].k=d;
  48. }
  49. }
  50. }
  51. if(cnt==)printf("NONE");
  52. else
  53. {
  54. sort(ans+,ans++cnt,cmp);
  55. for(int i=; i<=cnt; i++)printf("%d %d\n",ans[i].s,ans[i].k);
  56. }
  57. }
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <cstring>
  4. #include <cstdio>
  5. #include <cmath>
  6. #include <queue>
  7. using namespace std;
  8. #define LL long long
  9. int a[],tot,cnt,n,m;
  10. bool vis[];
  11. struct ahah
  12. {
  13. int s,k;
  14. } ans[];
  15. bool cmp(ahah a,ahah b)
  16. {
  17. return a.k<b.k;
  18. }
  19. void prepare(int x)
  20. {
  21. for(int i=; i<=x; i++)
  22. {
  23. for(int j=; j<=x; j++)
  24. {
  25. a[++tot]=i*i+j*j;
  26. }
  27. }
  28. sort(a+,a++tot);
  29. tot=unique(a+,a++tot)-a-;
  30. for(int i=; i<=tot; i++)vis[a[i]]=;
  31. }
  32. int main()
  33. {
  34.  
  35. scanf("%d%d",&n,&m);
  36. prepare(m);
  37. for(int i=; i<=tot; i++)
  38. {
  39. if(a[i]>m*m*)break;
  40. for(int j=i+; j<=tot; j++)
  41. {
  42. int d=a[j]-a[i];
  43. if(a[i]+(n-)*d > m*m*)break;
  44. for(int k=; k<=n; k++)
  45. {
  46. if(!vis[a[i]+d*(k-)])break;
  47. if(k==n)ans[++cnt].s=a[i],ans[cnt].k=d;
  48. }
  49. }
  50. }
  51. if(cnt==)printf("NONE");
  52. else
  53. {
  54. sort(ans+,ans++cnt,cmp);
  55. for(int i=; i<=cnt; i++)printf("%d %d\n",ans[i].s,ans[i].k);
  56. }
  57. }

洛谷 P1214 等差数列的更多相关文章

  1. 洛谷P1214 [USACO1.4]等差数列 Arithmetic Progressions

    P1214 [USACO1.4]等差数列 Arithmetic Progressions• o 156通过o 463提交• 题目提供者该用户不存在• 标签USACO• 难度普及+/提高 提交 讨论 题 ...

  2. 【洛谷P1214】等差数列

    题目大意:列出从一个给定上界的双平方数集合中选出若干个数,组成长度为 N 的等差数列的首项和公差. 题解:首先,因为是在双平方数集合上的等差数列,而且根据题目范围可知,上界不超过 2e5,可以先打表, ...

  3. 洛谷 P4559: bzoj 5319: [JSOI2018]军训列队

    题目传送门:洛谷 P4559. 题意简述: 有 \(n\) 个学生,编号为 \(i\) 的学生有一个位置 \(a_i\). 有 \(m\) 个询问,每次询问编号在 \([l,r]\) 区间内的学生跑到 ...

  4. 【洛谷】【洛谷月赛】4月月赛Round 1/2

    洛谷月赛“月”来“月”丧了,一月更比一月丧,做得我十分不“月”…… 4月的两轮月赛,都只会T1,就写一下吧,等待后续更新…… 先看看Round1的T1: [R1T1] 网址:点我 [题意简述] 给定一 ...

  5. [洛谷P3228] [HNOI2013]数列

    洛谷题目链接:[HNOI2013]数列 题目描述 小T最近在学着买股票,他得到内部消息:F公司的股票将会疯涨.股票每天的价格已知是正整数,并且由于客观上的原因,最多只能为N.在疯涨的K天中小T观察到: ...

  6. 洛谷 P2261 [CQOI2007]余数求和

    洛谷 一看就知道是一个数学题.嘿嘿- 讲讲各种分的做法吧. 30分做法:不知道,这大概是这题的难点吧! 60分做法: 一是直接暴力,看下代码吧- #include <bits/stdc++.h& ...

  7. 【洛谷4933】大师(DP)

    题目: 洛谷4933 分析: (自己瞎yy的DP方程竟然1A了,写篇博客庆祝一下) (以及特斯拉电塔是向Red Alert致敬吗233) 这里只讨论公差不小于\(0\)的情况,小于\(0\)的情况进行 ...

  8. 洛谷 p6858 深海少女与胖头鱼 洛谷月赛 期望dp

    洛谷10月月赛 2 t2 深海少女与胖头鱼 题目链接 参考资料:洛谷10月赛2讲评ppt; 本篇题解考完那天就开始写,断断续续写到今天才写完 本题作为基础的期望dp题,用来学习期望dp还是很不错的 ( ...

  9. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

随机推荐

  1. CF1175E Minimal Segment Cover 题解

    题意:给出\(n\)个形如\([l,r]\)的线段.\(m\)次询问,每次询问区间\([x,y]\),问至少选出几条线段,使得区间\([x,y]\)的任何一个部位都被至少一条线段覆盖. 首先有一个显然 ...

  2. 第十九篇 .NET高级技术之C#中的线程(一)

    原文://http://www.cnblogs.com/miniwiki/archive/2010/06/18/1760540.html 文章系参考转载,英文原文网址请参考:http://www.al ...

  3. PostgreSQL-13-缺失值处理

    -- 1.查看缺失值CREATE TABLE dnull AS SELECT * FROM data; -- 复制数据SELECT * FROM dnull WHERE 房屋编码 IS NULL OR ...

  4. Flask (三) 数据迁移

    数据迁移 安装 pip install flask-migrate 初始化 使用app和db进行migrate对象初始化   from flask_migrate import Migrate mig ...

  5. python 基础(四) 函数

    函数 一.什么是函数? 函数是可以实现一些特定功能的 小方法 或者是小程序 优点: 提高 了代码的后期维护 增加了代码的重复使用率 减少了代码量 提高了代码可读性 二.函数的定义 使用 def关键+函 ...

  6. redis配置配置文件

    # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => 1000 bytes # 1kb ...

  7. 转 Oracle Cluster Health Monitor(CHM)简介

    Cluster Health Monitor(以下简称CHM)是一个Oracle提供的工具,用来自动收集操作系统的资源(CPU.内存.SWAP.进程.I/O以及网络等)的使用情况.CHM会每秒收集一次 ...

  8. C语言的面向对象技术

    引言:面向过程的C有效率高,代码紧凑的特点,在单片机嵌入式领域是C的主要阵地,while(1)+中断是其主要的开发模式,但是当系统复杂到一定程度,想要添加一个功能需要改动很多地方,耦合性太强:跟别人交 ...

  9. vi编辑器查找

    当你用vi打开一个文件后,因为文件太长,如何才能找到你所要查找的关键字呢? 你在命令模式下敲斜杆( / )这时在状态栏(也就是屏幕左下脚)就出现了 “/” 然后输入你要查找的关键字敲回车就可以了. 如 ...

  10. TI德州芯片TLV系列和TPS系列芯片区别(转)

    TLV和TPS一般会有pin to pin的对应型号: 一般来讲,TPS精度.准确度和性能会好一些,所以价钱要贵一些: 对应TLV就是一样可以实现上述功能,但是精度和性能等级是稍微低一点的: 具体选择 ...