2016湘潭邀请赛 xtu1250

2024-02-13 17:08
文章标签 邀请赛 2016 湘潭 xtu1250

本文主要是介绍2016湘潭邀请赛 xtu1250,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Super Fast Fourier Transform

 
Accepted : 67 Submit : 354
Time Limit : 2000 MS Memory Limit : 65536 KB

Super Fast Fourier Transform

Bobo has two sequences of integers {a1,a2,,an} and {b1,b2,,bm} . He would like to find

i=1nj=1m|aibj|.

Note that x denotes the maximum integer does not exceed x , and |x| denotes the absolute value of x .

Input

The input contains at most 30 sets. For each set:

The first line contains 2 integers n,m ( 1n,m105 ).

The second line contains n integers a1,a2,,an .

The thrid line contains m integers b1,b2,,bm .

( ai,bi0,a1+a2++an,b1+b2+,bm106 )

Output

For each set, an integer denotes the sum.

Sample Input

1 2
1
2 3
2 3
1 2
3 4 5

Sample Output

2
7

题解:

因为( ai,bi0,a1+a2++an,b1+b2+,bm106 )         ( 1n,m105 ).

可以知道重复的数字很多

极端小的情况:平均每个数字为10

极端大的情况:平均每个数字为十的六次方

故知重复的数字很多


#include<math.h>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;#define mem(arr) memset(arr,0,sizeof(arr))
#define LL long long
#define N 100005
int a[N],b[N],c[N];
int k1[N],k2[N];int main()
{int n,m;//freopen("in.txt","r",stdin);while(scanf("%d%d",&n,&m)!=EOF){mem(k1),mem(k2);for(int i=1;i<=n;i++){scanf("%d",&a[i]);c[i]=a[i];}sort(a+1,a+1+n);int cnt1=unique(a+1,a+1+n)-(a+1);///去重后的数组长度for(int i=1;i<=n;i++)++k1[lower_bound(a+1,a+1+cnt1,c[i])-a];///计算数组c各个数字出现的频率///lower_bound(a+1,a+1+cnt1,c[i])-a  表示这个数字在数组a中的位置for(int i=1;i<=m;i++){scanf("%d",&b[i]);c[i]=b[i];}sort(b+1,b+1+m);int cnt2=unique(b+1,b+1+m)-(b+1);for(int i=1;i<=m;i++)++k2[lower_bound(b+1,b+1+cnt2,c[i])-b];LL ans=0;for(int i=1;i<=cnt1;i++){for(int j=1;j<=cnt2;j++){LL tmp=sqrt(abs(a[i]-b[j]));ans+=k1[i]*k2[j]*tmp;}}printf("%I64d\n",ans);}return 0;
}



unique函数是一个去重函数


ForwardIter lower_bound(ForwardIter first, ForwardIter last,const _Tp& val)算法返回一个非递减序列[first, last)中的第一个大于等于值val的位置

ForwardIter upper_bound(ForwardIter first, ForwardIter last, const _Tp& val)算法返回一个非递减序列[first, last)中第一个大于val的位置

     lower_bound和upper_bound如下图所示:

 



int lower_bound(int *array, int size, int key)
{int first = 0, middle;int half, len;len = size;while(len > 0) {half = len >> 1;middle = first + half;if(array[middle] < key) {     first = middle + 1;          len = len-half-1;       //在右边子序列中查找}elselen = half;            //在左边子序列(包含middle)中查找}return first;
}



int upper_bound(int *array, int size, int key)
{int first = 0, len = size-1;int half, middle;while(len > 0){half = len >> 1;middle = first + half;if(array[middle] > key)     //中位数大于key,在包含last的左半边序列中查找。len = half;else{first = middle + 1;    //中位数小于等于key,在右半边序列中查找。len = len - half - 1;}}return first;
}


这篇关于2016湘潭邀请赛 xtu1250的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/706104

相关文章

实践课堂|2016成都站|报名开始啦!

Hi,QingCloud 的小伙伴们,欢迎参加史上最有营养的云知识讲堂。 QingCloud 实践课堂系列开始于 2014 年末,在深圳、上海、广州、成都、杭州、北京六个城市,QingCloud 的研发工程师们同近千名 CIO 、架构师、开发者、运维工程师……分享了 QingCloud 的技术理念、功能特性和使用技巧,还有来自人民网、融云、泰捷视频、杏树林、友好速搭、百姓网、冰点、顺丰速运、洋葱

Enlight官方第四届“金融帝国杯”玩家游戏视频邀请赛〔参赛玩家作品展播〕(一)(持续更新中)

Enlight官方第四届“金融帝国杯”玩家游戏视频邀请赛 〔参赛玩家作品展播〕(一)(持续更新中) ————————————— Ⅰ〖比赛时间〗 ◇ 报名参赛(视频发布)时间:2024年06月10日~12月09日 ◇ 比赛颁奖时间:2024年12月底前(届时将在官方①、②、③群同步举行) ◇ 获奖名单刊登:3DM论坛(金融帝国2专区)、百度贴吧(金融帝国2吧) —————————————

2016/9/11--一周的工作总结

自从九月一号开始上班到现在,现在总结一下自己的问题: 第一个问题:自己没有认真的解决问题! 刚去的第二天,施工给我了一张图纸,让我对电路图进行分析,我刚开始查了一些资料,也看了看但是一直不会做,后边就放一边了也不管了,自己一直说实习学不到东西,但是真正的问题来的时候,是否全力以赴的解决问题?这个问题你真的尽全力去解决了吗?回答是:不,我没有。我还不如一个本科的学生,我一直在逃避,一直没有

日记 01/27/2016.

有机会再看看这个: https://www.zhihu.com/question/27578379 想拿高package,多去拿几个offer再来谈,特别是hot startup的package,往往拿来要挟大公司的HR很好用。 最近在学习Angular JS,自己一定要坚持下来。然后把前端的知识补上。 打算Aug的时候,然后把Princeton的算法课上了,重新充电,然后把

2016年末程序员应该知道的基本架构思想

http://www.toutiao.com/i6352598153379709442/?tt_from=mobile_qq&utm_campaign=client_share&app=news_article&utm_source=mobile_qq&iid=6176041275&utm_medium=toutiao_ios

上海邀请赛之热身赛2_2013成都邀请赛

先写总结。 感觉这次跟scf和sjc组队有种瞬间碉堡了的感觉,虽然是临时组建的队伍凑齐准备去上海参加邀请赛,从这次比赛磨练配合。 今天比赛难度比前天那次的难度低,感觉更适合我们来练习。 话说好像比赛提早了5分钟,我们三个人都不知道,五分钟后一看A题学长已经A了,一想肯定特水。。。我就没看题,sjc和scf两个看了题,scf就开始敲了,我刚开始负责翻译题,虽然我英语是个渣渣。。。没办法,没翻译

高教社杯数模竞赛特辑论文篇-2016年C题:电池剩余放电时间预测(附MATLAB代码实现)

目录 摘要 一、 问题重述 1.1 已知铅酸电池的基本情况与要求 1.2 需要解决的问题 1.2.1 问题 1 需要解决以下三点: 1.2.2 需要解决以下三点: 1.2.3 问题3需要解决: 二、问题分析 2.1 问题1 2.2 问题 2 2.3 问题3 三、模型假设与约定 四、符号说明及名词定义 五、模型的建立与求解 5.1 问题一的分析与求解 5.2 问题二的分析与求解 5.3 问题三的分

蘑菇街2016研发工程师编程题--回文串

题目 给定一个字符串,问是否能通过添加一个字母将其变为回文串。 输入描述: 一行一个由小写字母构成的字符串,字符串长度小于等于10。 输出描述: 输出答案(YES\NO). 示例1 输入 coco 输出 YES 解法1 使用动态规划,先看一下回文串的性质,如果一个字符串为回文串,那么翻转这个字符串以后跟原来的子串相同如下: 根据题目如果加一个字符就能使字符串成为回文串

网易2016研发工程师编程题--完全解析

前言 之前做公司的真题,碰到动态规划,还有一些数学性质的题目比较多一点。网易2016研发工程师编程题跟之前做的题目有很大的不同,不仅涉及到二叉树的编码,还涉及到图的广度遍历,最后还有一个快排。可以说这次的三个题目含金量非常的高,因此做了一下总结和分析。 1.比较重量 题目描述:小明陪小红去看钻石,他们从一堆钻石中随机抽取两颗并比较她们的重量。这些钻石的重量各不相同。在他们们比较了一段时间

mysql 与java 转换格式化格林威治时间(Tue Sep 13 00:00:00 CST 2016)两种方式

1  mysql 中处理 SELECT STR_TO_DATE('Thu Jul 20 15:04:03  2017','%a %b %e %T %Y %Y %Y') from dual ;   STR_TO_DATE(REPLACE('Tue Sep 13 00:00:00 CST 2016', '00:00:00 CST ', '') ,'%a %b %e %Y %Y %Y') 2 ja