列表

详情


NC19487. Eustia of the Tarnished Wings

描述

Novus Aither是一个潜藏着多个势力的城市。每个势力都有一个唯一的领导人,每个领导人有一个属性值。如果两个势力的领导人的属性值分别为a,b,且|a-b| ≤ m,说明这两个领导人的思想有一定的相似之处,这两个势力可以合并,新的领导人可以指定为原来的两个领导人中的任意一个。新产生的势力可以依照相同的规则,继续与其他势力合并。问在所有可能的情况中,最少会剩下几个势力。

输入描述

第一行两个空格隔开的整数n(1 ≤ n ≤ 106),m(0 ≤ m ≤ 109)。n代表当前势力的个数。m的含义如题目描述。
第二行n个空格隔开的整数di(0 ≤ di ≤ 109),代表第i个势力的领导人的属性值。

输出描述

输出一个数表示势力的最少数量。

示例1

输入:

4 1
2 1 3 10

输出:

2

原站题解

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

C++14(g++5.4) 解法, 执行用时: 669ms, 内存消耗: 4324K, 提交时间: 2018-10-01 12:23:57

#include<bits/stdc++.h>
using namespace std;
int n,m,i,sum,a[1000001];
int main()
{
	cin>>n>>m;
	sum=n;
	for(i=0;i<n;i++)
	cin>>a[i];
	sort(a,a+n);
	for(i=0;i<n-1;i++)
	if(a[i+1]-a[i]<=m)
	sum--;
	cout<<sum<<endl;
    return 0;
}

C++ 解法, 执行用时: 504ms, 内存消耗: 4284K, 提交时间: 2022-01-24 12:04:18

#include <bits/stdc++.h>
using namespace std;

int main()
{
	int n,m;
	cin>>n>>m;
	int a[n];
	int N=n;
	for(int i=0;i<n;++i)cin>>a[i];
	sort(a,a+n);
	for(int i=0;i<n-1;++i)if(a[i+1]-a[i]<=m)--N;
	cout<<N;
}

Python(2.7.3) 解法, 执行用时: 1345ms, 内存消耗: 89912K, 提交时间: 2018-10-01 12:23:08

n, m = map(int, raw_input().split())
a = sorted(map(int, raw_input().split()))
ans = 1
for i in xrange(n - 1):
    if a[i + 1] - a[i] > m:
        ans += 1
print ans

Python3(3.5.2) 解法, 执行用时: 1500ms, 内存消耗: 116960K, 提交时间: 2018-10-01 15:45:43

n, m = map(int, input().split())
a = sorted(list(map(int, input().split())))
k = n
for i in range(1, n):
	if a[i] - a[i - 1] <= m:
		k -= 1
print(k)

上一题