Codeforces 961

我一直感觉Codeforces最牛逼的一件事就是可以把一件很简单的事用英语描述得谁也看不懂,尤其是对我这种刷题多半要靠翻译的人来说更是如此,比如这次刷到的961A. Tetris,就是把一件很简单的事描述得十分复杂。我甚至去专门搜了别人的博客,看里面翻译也是看得挺懵逼的,只看懂了是关于俄罗斯方块的。

然后我在本子上画了画,瞬间我就懂啥意思了,好家伙一个计数排序给描述得生怕别人看懂啊。我也看了一些博主的代码,实在是太麻烦了。

在这里插入图片描述
在这里插入图片描述
说了这么多,意思就是一个只有n列的俄罗斯方块,给你m块1x1的小方块以及它们会出现的位置。问你最多能消去几行。

那你就只需要找出现最少的那个数字,就是可以消去的行数啊,一个桶排加一个快排就解决了。

时间复杂度:O(M+NlogN) M为读取输入, NlogN为对N个变量进行排序

#include <bits\stdc++.h>
#define ll long long
#define ld long double
using namespace std;
int main() {
	ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
	int n, m, a[1010], x;
	while(cin >> n >> m) {
		memset(a, 0, sizeof(a));
		for(int i = 0; i < m; ++ i) cin >> x, a[x - 1] ++;
		sort(a, a + n);
		cout << a[0] << endl;
	}
	return 0;
}

以后刷到这场比赛的后续题,本帖继续更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿扬来了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值