码迷,mamicode.com
首页 > 其他好文 > 详细

[ZOJ 4025] King of Karaoke

时间:2019-05-01 16:08:49      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:代码   i+1   name   计算   数组   序列   链接   出现   else   

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5766

求两个序列的相对元素的差出现次数最多的,最低出现一次。

AC代码 1 :

//用数组先把所有值都读入,再进行判断
//Run Time(ms): 170
#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

const int maxn = 100005;
int test;
int n;
int d[maxn],s[maxn],p[maxn];

int main()
{
    ios::sync_with_stdio(false);
    cin>>test;
    while(test--)
    {
        cin>>n;
        for(int i = 0;i < n;i++) cin>>d[i];
        for(int i = 0;i < n;i++)
        {
            cin>>s[i];
            p[i] = s[i] - d[i];
        }
        sort(p,p+n);
        int ans=1;
        int cnt=1;
        for(int i = 0;i < n-1;i++)
        {
            if(p[i] == p[i+1])
                cnt++;
            else
                cnt=1;
            if(cnt > ans)
                ans = cnt;
        }
        cout<<ans<<endl;
    }
    return 0;
}

AC代码 2 :

//先用一个数组存储第一个序列,第二个序列边输入边计算
// Run Time(ms) : 250 
#include <iostream>
#include <cstdio>
#include <map>

using namespace std;

const int maxn = 100005;

int test;
int n;
int d[maxn];
int x;

int main()
{
    ios::sync_with_stdio(false);
    cin>>test;
    while(test--)
    {
        cin>>n;
        for(int i = 0;i < n;i++) cin>>d[i];
        map<int,int> mp;
        int ans = 1;
        for(int i = 0;i < n;i++)
        {
            cin>>x;
            mp[d[i]-x]++;
            if(mp[d[i]-x] > ans)
                ans=mp[d[i]-x];
        }
        cout<<ans<<endl;
    }
    return 0;
}

[ZOJ 4025] King of Karaoke

标签:代码   i+1   name   计算   数组   序列   链接   出现   else   

原文地址:https://www.cnblogs.com/youpeng/p/10799964.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!