[ZOJ 4025] King of Karaoke

Posted youpeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ZOJ 4025] King of Karaoke相关的知识,希望对你有一定的参考价值。

题目链接: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的主要内容,如果未能解决你的问题,请参考以下文章

「ZOJ 2334」Monkey King

zoj 2334 Monkey King

zoj1260 king

Gym 101666K King of the Waves(dfs)

ZOJ 2975: Kinds of Fuwas

codeforces- Shortest path of the king