首页 > 其他分享 >数字出现次数与复杂度相关例题,出现次数与和的转化

数字出现次数与复杂度相关例题,出现次数与和的转化

时间:2022-10-30 23:14:25浏览次数:71  
标签:数字 int 复杂度 次数 num br 序列 例题

https://ac.nowcoder.com/acm/contest/43844/F

  • 暴力去求的复杂度为n^n
  • 如果序列a的个数为lengtha,序列b的个数为lengthb,序列a的数字全为numa,序列a的数字全为numb,那么lengtha即为numa出现的次数,lengthb即为numb出现的次数,则答案为

image

  • 观察数字出现的个数,考虑极端的情况,每个数字都只出现一次,出现的次数要尽可能多,那么就是一个从0开始,公差为1的等差数列。
    image
  • 说明一个序列中数字的种类最多为sqrt(2e7).
  • 扫一遍两个序列,把每个序列中数字出现的次数存储下来,最后暴力求出答案,复杂的为O(2e7),可以承受
点击查看代码
#include<bits/stdc++.h>
using namespace std;
int ar[3000010];
int br[3000010];
vector<pair<int,int>> ap,bp;
int main(){
    int n;
    int num;
    cin>>n;
    memset(ar,0,sizeof(ar));
    memset(br,0,sizeof(br));
    for(int i = 1;i<=n;i++) {
        cin>>num;
        ar[num]++;
    }
    for(int i = 1;i<=n;i++) {
        cin>>num;
        br[num]++;
    }
 //   cout<<1<<endl;
    for(int i = 0;i<=3000000;i++){
        if(ar[i]) ap.push_back({i,ar[i]});
    }
    for(int i = 0;i<=3000000;i++){
        if(br[i]) bp.push_back({i,br[i]});
    }
   // cout<<ap.size()<<endl;
    long long ans = 0;
    for(auto pa:ap){
        for(auto pb:bp){
            ans += (long long)pa.second*(long long)pb.second*floor(sqrt(abs(pa.first-pb.first)));
        }
    }
    cout<<ans<<endl;
}

标签:数字,int,复杂度,次数,num,br,序列,例题
From: https://www.cnblogs.com/wujw11world/p/16842578.html

相关文章

  • 算法队列之最近请求次数
    题目:写一个RecentCounter类来计算特定时间范围内最近的请求。请你实现RecentCounter类:RecentCounter()初始化计数器,请求数为0。intping(intt)在时间t添加一个......
  • git 查看项目成员代码提交行数和次数统计
    在实际开发中,常常会想查看自己对于某个项目的贡献,管理者会查看项目下各成员的贡献,就需要使用到git的命令进行代码提交的统计。查看个人提交的代码行数统计gitlog--au......
  • 【XSY3405】零糖麦片(二分图,复杂度均衡)
    一个听说很套路但我不会的套路:对于一个非\(1\)数\(w_i\),把它看成是\((w_i-1)+1\),于是原式变为:\[ans=\sum_{e_1,\cdots,e_t}(n-t)!\prod_{i=1}^{t}(w_{e_i}-1)\]其中......
  • 【XSY3326】米缸(时间复杂度均衡,线段树,基环树,倍增)
    时间复杂度的均衡。先考虑暴力的想法:显然这是一棵基环树,那么我们每次修改时暴力\(O(nm)\)重构基环树,然后询问的时候就能\(O(1)\)查询。时间复杂度\(O(nmq)\)。考虑......
  • 困难-2449. 使数组相似的最少操作次数
    给你两个正整数数组 nums和 target ,两个数组长度相等。在一次操作中,你可以选择两个不同 的下标 i和 j ,其中 0<=i,j<nums.length ,并且:令 nums[i]=num......
  • 多重背包例题:庆功会
    多重背包例题:庆功会朴素版,二进制优化,单调队列优化三种写法。原题链接:https://www.acwing.com/problem/content/1021/补充我的二进制优化博客彩色铅笔大佬的多重背包II......
  • 第一次数据库实验代码整理-表与视图的基础操作
    一、 实验环境1. Windows2000或以上版本;2. SQLServer2005或以上版本。二、 实验目的1. 掌握数据库表与视图的基础知识;2. 掌握创建、修改、使用、删除表与视图的不......
  • A*算法 详解与例题
    ......
  • 时间复杂度
    时间复杂度概述在恒定的环境内,他的执行次数和对应的变量的比列构成的值为时间复杂度。时间复杂度是在一定程度上表示当前的程序的运行速度,时间复杂度越低那么运行速度就越......
  • 排序算法(常见的排序算法的时间复杂度 O(n2))
    排序算法(常见的排序算法的时间复杂度O(n2))1.冒泡排序(俩俩(相邻的俩个)相比位置交换)O(n2)```js//冒泡排序functionbubleSort(arr){//冒泡排序外层的轮数......