列表

详情


NC239212. 困难卷积

描述

给定整数序列 ,求:
其中 表示不超过 x 的最大整数,例如

输入描述

第一行一个整数 n

第二行 n 个整数表示序列

第三行 n 个整数表示序列


输出描述

一行一个整数表示答案。

示例1

输入:

4
1 2 3 4
2 3 3 3

输出:

12

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

pypy3 解法, 执行用时: 1514ms, 内存消耗: 135720K, 提交时间: 2022-10-29 14:37:49

import math
input()
a=list(map(int,input().split()))
b=list(map(int,input().split()))
dic1,dic2={},{}
for k in a:
    if k not in dic1:
        dic1[k]=1
    else:
        dic1[k]+=1
for k in b:
    if k not in dic2:
        dic2[k]=1
    else:
        dic2[k]+=1
ans=0
for m in dic1:
    for n in dic2:
        ans+=int(math.sqrt(abs(m-n)))*dic1[m]*dic2[n]
print(ans)
        

C++(g++ 7.5.0) 解法, 执行用时: 611ms, 内存消耗: 900K, 提交时间: 2022-10-28 20:33:35

#include<bits/stdc++.h>

using namespace std;

int main(){

int n;cin>>n;

map<long long,long long>a,b;

for(int i=1,x;i<=n;i++)cin>>x,a[x]++;

for(int i=1,x;i<=n;i++)cin>>x,b[x]++;

long long ans=0;

for(auto i:a)

for(auto j:b)

ans+=i.second*j.second*floor(sqrt(abs(i.first-j.first)));

cout<<ans;

}

C++(clang++ 11.0.1) 解法, 执行用时: 596ms, 内存消耗: 876K, 提交时间: 2023-03-14 20:02:52

#include<bits/stdc++.h>
using namespace std;
int main(){
int n;cin>>n;
map<long long,long long>a,b;
for(int i=1,x;i<=n;i++)cin>>x,a[x]++;
for(int i=1,x;i<=n;i++)cin>>x,b[x]++;
long long ans=0;
for(auto i:a)
for(auto j:b)
ans+=i.second*j.second * floor(sqrt(abs(i.first-j.first)));
cout<<ans;
}

上一题