列表

详情


NC21536. 金桔玩方块

描述

金桔喜欢玩俄罗斯方块,现在有一个带N列的平台。在这个平台上,一些方块会相继出现。如果列中没有方块,则方块将占据底部行。否则,方块将停留在该列的最高方块的顶部。
当所有n列中最底行均有一个方块时,最底行将被清空,你会得到1分,剩下的所有方块会掉下一行。
现在将会依次按顺序出现m方块,且金桔知道它们将会降落的列号。
金桔的任务是计算她将收到的分数。

输入描述

第一行输入包含两个整数n和m——平台的列数和方块的数目。
下一行包含m个整数c1,c2,…,cm列,分别代表第i个方块将会出现在ci列。

输出描述

输出一个整数,代表金桔的最终得分

示例1

输入:

3 9
1 1 2 2 2 3 1 2 3

输出:

2

说明:

出现第6个方块之后将会删除最底行(平台上的方块的计数从[2 3 1]变为[1 2 0])。
在第9次方块降落之后,将是[2 3 1],在移除一行之后,变为[1 2 0]。
所以答案等于2。

原站题解

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

C++14(g++5.4) 解法, 执行用时: 6ms, 内存消耗: 488K, 提交时间: 2020-06-02 07:04:03

#include<bits/stdc++.h>
using namespace std;
int b[10001];
int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        int x;
        cin>>x;
        b[x]++;
    }
    sort(b+1,b+n+1);
    cout<<b[1]<<endl;
    
}

C++(g++ 7.5.0) 解法, 执行用时: 4ms, 内存消耗: 440K, 提交时间: 2022-12-25 02:02:47

#include<bits/stdc++.h>
using namespace std;
int t[100005];
int main(){
	int m,n,x;scanf("%d %d",&n,&m);	
	for(int i=1;i<=m;i++){
		scanf("%d",&x);
		t[x]++;
	}
sort(t+1,t+n+1);
printf("%d",t[1]);			
}

C++11(clang++ 3.9) 解法, 执行用时: 5ms, 内存消耗: 504K, 提交时间: 2020-02-19 14:21:05

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

Python3(3.5.2) 解法, 执行用时: 26ms, 内存消耗: 3816K, 提交时间: 2020-07-16 20:05:44

n, m = [int(x) for x in input().split()]
c = [int(x) for x in input().split()]

lis = [0 for i in range(n)]

for x in c:
    lis[x-1] += 1

print(min(lis))

上一题