1305 Pairwise Sum and Divide

题目来源: HackerRank

基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题

 收藏

 关注

有这样一段程序,fun会对整数数组A进行求值,其中Floor表示向下取整:

fun(A)

sum = 0

for i = 1 to A.length

for j = i+1 to A.length

sum = sum + Floor((A[i]+A[j])/(A[i]*A[j]))

return sum

给出数组A,由你来计算fun(A)的结果。例如:A = {1, 4, 1},fun(A) = [5/4] + [2/1] + [5/4] = 1 + 2 + 1 = 4。

Input

第1行:1个数N,表示数组A的长度(1 <= N <= 100000)。
第2 - N + 1行:每行1个数A[i](1 <= A[i] <= 10^9)。

Output

输出fun(A)的计算结果。

Input示例

3
1 4 1

Output示例

4

按照题目的意思来模拟的话,代码应该是如下所示:

#pragma GCC optimize(2)
#include <bits/stdc++.h>
using namespace std;
#define clr(a) memset(a,0,sizeof(a))
#define line cout<<"-----------------"<<endl;typedef long long ll;
const int maxn = 1e5+10;
const int MAXN = 1e6+10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9+7;
const int N = 1010;ll n;
ll a[maxn];
ll fun(ll n){ll sum = 0;for(int i = 1; i <= n; i++){for(int j = i + 1; j <= n; j++){sum = sum + floor((a[i] + a[j]) / (a[i] * a[j]));}}return sum;
}int main(){scanf("%lld", &n);for(int i = 1; i <= n; i++){scanf("%lld", &a[i]);}printf("%lld\n", fun(n));return 0;
}

毫无疑问,肯定超时。我们再来重新思考一下这道题目。

对于两个数 x , y.   floor((x + y) / (x * y)) 只可能有三种情况。0 、 1 、 2

x == 1 y == 1 的时候结果为2

x == 1 y == R 的时候结果为1

x == 2 y == 2  的时候结果为2

分别统计1 和 2 出现的次数 统计其对结果的贡献

#pragma GCC optimize(2)
#include <bits/stdc++.h>
using namespace std;
#define clr(a) memset(a,0,sizeof(a))
#define line cout<<"-----------------"<<endl;typedef long long ll;
const int maxn = 1e5+10;
const int MAXN = 1e6+10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9+7;
const int N = 1010;int n;
int a[maxn];int main(){scanf("%d", &n);int num1 = 0, num2 = 0;for(int i = 1; i <= n; i++){scanf("%d", &a[i]); if(a[i] == 1) num1 ++;else if(a[i] == 2) num2 ++;}ll ans = 0;ans += num2 * (num2 - 1) / 2;ans += num1 * (n - 1);cout << ans << endl;return 0;
}

51NOD - 1305 Pairwise Sum and Divide(思维)相关推荐

  1. Educational Codeforces Round 108 (Rated for Div. 2) D. Maximum Sum of Products 思维 + dp

    传送门 文章目录 题意: 思路: 题意: 给你两个长度为nnn的数组a,ba,ba,b,你可以至多反转一段连续区间,求∑i=1nai∗bi\sum _{i=1}^n a_i*b_i∑i=1n​ai​∗ ...

  2. 【CodeForces - 1150C】Prefix Sum Primes(思维)

    题干: We're giving away nice huge bags containing number tiles! A bag we want to present to you contai ...

  3. 【51Nod - 1344】走格子 (思维)

    题干: 有编号1-n的n个格子,机器人从1号格子顺序向后走,一直走到n号格子,并需要从n号格子走出去.机器人有一个初始能量,每个格子对应一个整数Aii,表示这个格子的能量值.如果Aii > 0, ...

  4. 【51Nod - 1279】 扔盘子(思维)(on-p会超时)

    题干: 有一口井,井的高度为N,每隔1个单位它的宽度有变化.现在从井口往下面扔圆盘,如果圆盘的宽度大于井在某个高度的宽度,则圆盘被卡住(恰好等于的话会下去). 盘子有几种命运:1.掉到井底.2.被卡住 ...

  5. B. Equalize by Divide - 思维+构造+排序

    题意: 给定一个数组,可以进行任意多次以下操作: 1.选择第i和第j个数. 2.使a[i]=a[i]/a[j](向上取整). 不可以插入或者删减数组元素,求多少次使数组元素都相同,输出次数以及每次操作 ...

  6. 史上最全的Java学习路线

    java基础 一.Java的历史和三大版本 1. Java的发展史 2. Java语言能做什么 二.Java的开发环境 1. 配置开发环境 三.Java的第一个程序及运行原理 JVM 的组成部分 写第 ...

  7. 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划 第一节 动 ...

  8. KDD Cup 2020 推荐系统赛道:数据分析

    写在前面 近期对推荐系统颇为感兴趣,正巧看到今年KDD Cup赛题中有两道都是推荐相关的,借着这次机会学习学习.本文将对其中的一道,KDD Cup 2020 Challenges for Modern ...

  9. 正整数分解为几个连续自然数之和

    题目:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列. 一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 ...

最新文章

  1. stm32换芯片编译
  2. mysql 单号,利用 MySQL 自增列生成订单号
  3. A different twist on pre-compiling JSPs--reference
  4. java miniui datagrid_miniui datagrid 的客户端分页解决方案
  5. python3 socket 接收 bytes 长度 会变,Python解析Socket数据流异常bytes的问题(详细)...
  6. c++ 基本知识汇总
  7. Visual Leak Detector 2.2.3 Visual C++内存检测工具
  8. 网格搜索、随机搜索和贝叶斯调参总结与python代码实践
  9. 最短路径(状压dp)(ybtoj)
  10. 加解密篇 - 非对称加密算法 (RSA、DSA、ECC、DH)
  11. 我的python中级班学习之路(全程笔记第一模块) (第二章)(第3部分:元祖、哈希(hash)、字典、集合...
  12. java覆盖的概念_java中覆盖是什么意思?java方法覆盖的概念详解
  13. 复杂sql语句:按部门统计人数
  14. Linux软件开发工程师
  15. java awt canvas_java.awt 类 Canvas - Java 中文参考手册
  16. 使用js获得26个英文字母
  17. 云计算为什么发展_为什么快速发展的公司需要云计算? 第1部分
  18. 硬盘/分区克隆:怎么无损迁移老硬盘数据到新硬盘?
  19. java 时分秒加减_JAVA日期加减运算
  20. MySQL 客户端安装

热门文章

  1. 肺结节圆形边界光滑_肺结节良恶性的六大鉴别要点
  2. gtsam 学习七(读取BAL数据集)
  3. 关于磁盘分区除c盘外消失吐槽
  4. 车路协同到底要协同什么?
  5. NO、NC、COM、FG端的含义
  6. VTK 3D图像显示
  7. 【android11】设置-应用-默认应用相关修改
  8. 使用SOLIDWORKS验证光线模拟
  9. 测度论与概率论基础学习笔记4——2.2外测度
  10. 法规标准-ISO 21717标准解读