首页 > 其他分享 >abc365E Max/Min

abc365E Max/Min

时间:2024-10-08 20:00:33浏览次数:1  
标签:std cnt Min int Max abc365E long maxn

给定数组A[N],对所有i<j,计算max(A[i],A[j])/min(A[i],A[j])之和,除法为向下取整。
2<=N<=2E5; 1<=A[i]<=1E6

分析:排序不影响结果,先对A[N]排序和计数,然后枚举每个数作为除数时产生的商,注意数可以重复,因此重复的数要单独统计,以及商为1的那部分也要单独算。

#include <bits/stdc++.h>
using i64 = long long;

const int maxn = 1000000;
void solve() {
    int N;
    std::cin >> N;
    std::vector<int> cnt(maxn + 1), pre(maxn + 1);
    for (int i = 0; i < N; i++) {
        int x;
        std::cin >> x;
        cnt[x] += 1;
    }
    for (int i = 1; i <= maxn; i++) {
        pre[i] = pre[i-1] + cnt[i];
    }

    auto sum = [&](int l, int r) {
        return l <= r ? pre[r] - pre[l - 1] : 0;
    };

    i64 ans = 0;
    for (int i = 1; i <= maxn; i++) {
        if (cnt[i] == 0) {
            continue;
        }
        ans += 1LL * cnt[i] * (cnt[i] - 1) / 2;
        ans += 1LL * cnt[i] * sum(i + 1, std::min(2 * i - 1, maxn));
        for (int j = 2; j * i <= maxn; j++) {
            int L = j * i;
            int R = j * i + i - 1;
            int z = sum(L, std::min(R, maxn));
            ans += 1LL * cnt[i] * j * z;
        }
    }
    std::cout << ans << "\n";
}

int main() {
    std::cin.tie(0)->sync_with_stdio(0);
    int t = 1;
    while (t--) solve();
    return 0;
}

标签:std,cnt,Min,int,Max,abc365E,long,maxn
From: https://www.cnblogs.com/chenfy27/p/18452393

相关文章

  • eladmin前后端分离jenkins自动发版
    CICD&前后端自动发版一、初步部署VM主机名IPgitlabgitlab100.100.137.3/248/8/100jenkensjenkins100.100.137.4/248/8/100前端node-1100.100.137.5/242/2/25后端node-2100.100.137.6/242/2/25MySQLmysql100.100.137.7/242/2/25Redisr......
  • LeetCode 209 Minimum Size Subarray Sum 题目解析和python代码
    题目:Givenanarrayofpositiveintegersnumsandapositiveintegertarget,returntheminimallengthofasubarraywhosesumisgreaterthanorequaltotarget.Ifthereisnosuchsubarray,return0instead.Example1:Input:target=7,nums=[2,3,......
  • DeAdmin 1对多关联FormList编辑实现
    简介当模型关系中有1对多时。一般有两种方法实现,1.在表单中直接使用表格组件每次都是独立创建或编辑,缺点是当新增数据时因为没有主数据id所以不能使用,只有编辑主数据时可以使用2.在表单中直接使用formlist组件直接编辑信息。缺点是在数据量不大的情况下使用。这里......
  • svnhook-在提交时,检查redmine问题当前状态是否已关闭
    为了防止svn仓库的乱提交,我们规定了提交时,提交日志必须输入需求单或者bug链接,而且我们需要去检测当前的链接是有效并且状态时处于非关闭的,主要操作是下面两个步骤 1:验证输入链接的有效性:使用 curl 检查链接是否可以访问。2:获取问题状态:通过RedmineAPI获取问题的状态,并检......
  • 如何使用minikube搭建k8s集群
    使用minikube搭建K8s(Kubernetes)集群是一个在本地快速设置Kubernetes环境的方法,特别适合用于学习和开发。以下是详细步骤:一、环境准备操作系统:如LinuxCentOS7.964位。CPU和内存:至少2核CPU和4GiB内存,建议2核CPU和更多内存以获得更好的性能。硬盘:至少需要20GB的硬盘空间。网......
  • divide by zero encountered in log10 my_vmin=np.log10(data['PValue'].min())
     sm=plt.cm.ScalarMappable(cmap='viridis',norm=plt.Normalize(vmin=np.log10(data['PValue'].min()),vmax=np.log10(data['PValue'].max()))) C:\Python310\lib\site-packages\pandas\core\arraylike.py:397:RuntimeWarning:d......
  • The 2020 ICPC Asia Shenyang Regional Programming Contest Northeastern University
    The2020ICPCAsiaShenyangRegionalProgrammingContestNortheasternUniversity(SMU2024ICPC网络赛选拔赛2)D.JourneytoUn'Goro思路队友写得,没看。代码#include<bits/stdc++.h>usingnamespacestd;typedeflonglongintll;#defineintlonglong#defineP......
  • The 10th Shandong Provincial Collegiate Programming Contest
    A-Sekiro题意初始有\(n\)个金币,死了\(m\)次,死一次\(n=\lceil\fracn2\rceil\)。求最后的金币数。思路模拟。代码点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongvoidsolve(){ intn,m; cin>>n>>m; while(m--......
  • 网站忘记管理员密码怎么办?_网站admin密码忘记了怎么办
    如果你忘记了网站的管理员密码,可以按照以下步骤尝试解决:使用“忘记密码”功能:访问登录页面,查找“忘记密码”或“找回密码”链接。点击该链接并按照提示操作,通常会发送一封包含重置链接的邮件到你的注册邮箱。联系技术支持或网站管理员:如果你是普通用户,联系网站的技术......
  • torch--minst手写体识别
    utils.pyimporttorchimportmatplotlib.pyplotaspltdefplot_curve(data):fig=plt.figure()plt.plot(range(len(data)),data,color='blue')plt.legend(['value'],loc='upperright')plt.xlabel('step�......