“飞雪连天射白鹿,笑书神侠倚碧鸳”。作为一名碧血丹心的大侠,山山时常在江湖之上行侠仗义,惩恶扬善,而且江湖素有“神雕大侠杨过,走遍江南名扬天下;逍遥神侠山山,踏尽漠北誉满江湖”。可是,又有谁知道,山山能有如今的成就,全都源起他幼年时的一次奇遇。 二十年前,还是孩童的山山正与村中几位玩伴嬉戏玩耍。正当他们玩得尽兴之时,忽然一位过路的乞丐叫住了山山。 乞丐说道:“小朋友,我看你灵智已开,颇具慧根,如果你能解读我这秘籍上的神秘语言,我将教你一门绝世武功”。 其他几个小朋友一看到瘦骨嶙峋、灰头土脸的乞丐,全都吓坏了,赶忙哭喊着逃回了家,而山山却毫无惧意,说道:“让我看看!”。 乞丐笑了笑,拿出了秘籍。山山接过秘籍,发现上面写着:“求有多少a, b, c, d满足a3=b3+c3+d3,其中a, b, c, d满足1 <= a, b, c, d <= n,且都是正整数”。 山山看完之后,忽然好像被雷击了一般,不假思索,想都不带想的说出了答案。乞丐一时傻了眼,但是看山山一脸认真的模样,又觉得他不像在撒谎,叹了一口气说道:“果然,你才是天选之人,这本《图灵圈》你拿去吧,上面记录了江湖上所有的绝世武功,你勤加修炼,定能成为旷世大侠的”,说罢,乞丐缓缓转身离去。 山山一脸不解地看着乞丐离开的背影,心里却被秘籍上的武功所吸引。于是,山山把秘籍藏在了后山之上,每天晚上偷偷去练习信息学竞赛。后来,就有了山山行走江湖的故事了。后世之人都对秘籍上所写的神秘语言感兴趣,这也引发了全民参与到这个问题的解读过程中,久而久之,就有了信息学竞赛(Doge)。 (以上故事纯属虚构,如有雷同,纯属虚构)

输入格式:

一个正整数n,含义见题目描述

n <= 100(简单)

n<=1000(困难)

输出格式:

一个正整数表示答案

限制:

空间限制:512MByte

时间限制:1秒(简单and困难)

时间限制:0.25秒(毒瘤)

样例:

输入:

10

输出:

12

既然是a^3=b^3+c^3+d^3,所以理所当然的四重循环:

#include<iostream>
using namespace std;
int main(){int n,sum=0;cin>>n;for(int a=1;a<=n;a++){for(int b=1;b<=n;b++){for(int c=1;c<=n;c++){for(int d=1;d<=n;d++){if((a*a*a)==(b*b*b)+(c*c*c)+(d*d*d)){sum++;}}}}}cout<<sum;return 0;
}

但这样肯定过不了,时间复杂度已经是O(n^4),肯定会超时。

那怎么办呢?预处理:

#include<iostream>
using namespace std;
const int N = 1e6+100;
int sum[N];
int main() {for(int i=1; i<=100; i++) {sum[i] = i*i*i;}int n,ans=0;cin>>n;for(int a=1; a<=n; a++) {for(int b=1; b<=n; b++) {for(int c=1; c<=n;c++) {for(int d=1; d<=n; d++) {if(sum[a]==sum[b]+sum[c]+sum[d]) {ans++;}}}}}cout<<ans;return 0;
}

虽然还是O(n^4),但100是没问题的,简单版也过了。

我们看看a^3=b^3+c^3+d^3这个式子,它可以进行一些变形,将b^3移过去,就变成了a^3-b^3=c^3+d^3,瞬间变成O(n^2)。

#include<iostream>
#include<map>
using namespace std;
const int N = 1e6+100;
map<int,int>vis;
int sum[N];
int main() {for(int i=1; i<=100; i++) {sum[i] = i*i*i;}int n,ans=0;cin>>n;for(int a=1; a<=n; a++) {for(int b=1; b<=a; b++) {vis[sum[a]-sum[b]]++;}}for(int c=1;c<=n;c++){for(int d=1;d<=n;d++){ans+=vis[sum[c]+sum[d]];}}cout<<ans;return 0;
}

但还不够,map虽然方便,但方便的东西是有代价的(此处引用张学长的名言),map的复杂度是

O(logn)的,这说明这个代码复杂度实际上是O(n^2logn)的。

按理说问题也不大,可恰恰这里出了问题。

没错,过不了(我们的张学长卡的太死)

那咋办,别慌,不用map的来了:

#include<iostream>
#include<map>
#include<cstring>
#include<string>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<queue>
using namespace std;const int N = 1e6+100;int sum[N];
int vis[N],vis1[N];
int len,len1;
int main() {for(int i=1; i<=1000; i++) {sum[i] = i*i*i;}int n;cin>>n;int ans=0;for(int c=1; c<=n; c++) {for(int d=1; d<=n; d++) {vis[len++] = sum[c]+sum[d];}}for(int a=1; a<=n; a++) {for(int b=1; b<=a; b++) {vis1[len1++] = sum[a]-sum[b];}}sort(vis,vis+len);sort(vis1,vis1+len1);int i=0,j=0;int i1=0,j1=0;while( i<len && j<len1 ) {i1=0,j1=0;if(vis[i] == vis1[j] ) {while( i+1 < len && vis1[j] == vis[i+1]) {i++;i1++;}while( j+1 < len1 && vis[i] == vis1[j+1] ) {j++;j1++;}i++;i1++;j1++;ans+=i1*j1;j++;} else if(vis[i]>vis1[j]) {j++;} else {i++;}}cout<<ans<<endl;return 0;
}

到这,困难版总算过了,至于毒瘤版。。。

我也不会,你们自己做吧

山山的数学(简单and困难and毒瘤)相关推荐

  1. 关于数学计算机手抄报简单的,二年级数学简单手抄报图片大全

    数学能力是数学素质的主要方面和重要体现.下面是学习啦小编为大家带来的二年级数学简单手抄报图片及资料,希望大家喜欢. 二年级数学简单手抄报图片欣赏 二年级数学简单手抄报图片一 二年级数学简单手抄报图片二 ...

  2. 关于数学计算机手抄报简单的,数学简单手抄报图片

    数学是一门演绎的学问,从一组公设,经过逻辑的推理,获得结论.下面我们来看看关于数学简单手抄报图片,欢迎阅读借鉴. 数学学习励志名言 1.数学是符号加逻辑.--罗素 2.数学的本质在于它的自由.--康托 ...

  3. 用户登录功能:说简单也困难

    摘要:用户登录说起来只是一个很普通的功能,不过它的逻辑一点也不简单. 本文分享自华为云社区<性能分析之用户登录TPS低以及CPU被打满问题分析>,作者:zuozewei . 用户登录说起来 ...

  4. 51单片机点亮LED的5中方法(由简单到困难)

    本文将介绍用各种不同的方法和算法点亮51单片机LED的程序,包括详细的注释和说明. 方法1:使用GPIO口点亮LED #include<reg52.h> //头文件 sbit LED=P1 ...

  5. 各种简单的困难的模板,持续更新

    大部分模板为代码片段,可能有少部分的完整程序 邻接表 struct os {int fa,son,next,v; }a[100000];//边数 int first[10000]//点数 //定义vo ...

  6. 0位运算/数学简单 剑指 Offer 65. 不用加减乘除做加法

    剑指 Offer 65. 不用加减乘除做加法 描述 写一个函数,求两个整数之和,要求在函数体内不得使用 "+"."-"."*"." ...

  7. 计算机的数学知识的手抄报图片大全,【数学小报图片大全】数学小报简单又漂亮_简单数学小报图片大全_亲亲宝贝网...

    数学小报图片大全:数学的定义与结构 定义 亚里士多德把数学定义为"数量科学",这个定义直到18世纪.从19世纪开始,数学研究越来越严格,开始涉及与数量和量度无明确关系的群论和投影几 ...

  8. 为什么美国学生学的数学比我们简单,却能做出很牛逼的东西?

    来源:IT有个 圈儿 "美国给予不热爱数学的学生最基础的数学教育,而给予热爱数学的学生最高水平的数学教育." 长久以来,中国人的迷思就是,为何「美国人数学这么差,还能出这么多牛逼科学家?」这个问题的答 ...

  9. 【学术相关】为什么美国学生学的数学比我们简单,却能做出很牛逼的东西?...

    本文转自|视觉算法 "美国给予不热爱数学的学生最基础的数学教育,而给予热爱数学的学生最高水平的数学教育." 长久以来,中国人的迷思就是,为何「美国人数学这么差,还能出这么多牛逼科学家?」这个问题的答案 ...

最新文章

  1. mysql建立联合索引,mysql建立唯一键,mysql如何解决重复记录联合索引
  2. 几种 ETL 工具的比较(Kettle,Talend,Informatica 等)
  3. 阿卡迪亚大学的计算机科学,阿卡迪亚大学计算机科学
  4. ubuntu修改pip的官方源为豆瓣源
  5. 使用halcon结合机械XY轴对相机进行9点标定
  6. 论文浅尝 | 知识图谱问答中的层次类型约束主题实体识别
  7. 显卡花屏显存测试软件6,显卡花屏诊断好帮手:Video Memory Stress Test
  8. 寒门问题少年到计算机博士,硅谷穷小子是如何成为“创业之神”
  9. LV自动挂载,快照,删除等操作
  10. 为了USB3,吾还是换了电脑
  11. Ardunio开发实例-雨滴传感器
  12. [和秋叶一起学ppt]四步做好段落排版(笔记)
  13. 怎样制作透明底艺术字水印?教你在线制作艺术字的方法
  14. Bootstrap下拉单选框,下拉搜索多选框Bootstrap-select
  15. 文献阅读笔记(2022.11.14)
  16. java 订单减库存_下单减库存
  17. BICC协议(简介)
  18. vps系统服务器,vps系统和云服务器
  19. 推荐系统的召回算法(一)—— 协同过滤法(基于用户)
  20. 12个最真实的人型机器人,肉眼几乎无法区分,你见过几个?【楚才国科】

热门文章

  1. android中如何实现蓝牙后台运行,Android实现的简单蓝牙程序示例
  2. Vijos P1404 遭遇战
  3. 关于SQL查询语句关键字
  4. sleep()和wait()区别
  5. 全球十大数据安全事件
  6. 测试BXERP生产服务器的各项可用性(梗概)
  7. php上传进度条问题,php上传进度条
  8. docker中使用$PWD: 提示 ‘:‘ was not followed by a valid variable name character. 解决方案
  9. linux pe uefi启动不了,uefi bios u盘启动不了怎么办?
  10. 【金九银十】Android开发真等于废人?面试必问