专栏文章

题解:P14197 [ICPC 2024 Hangzhou R] Kind of Bingo

P14197题解参与者 2已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@minmt81i
此快照首次捕获于
2025/12/02 04:58
3 个月前
此快照最后确认于
2025/12/02 04:58
3 个月前
查看原文
签到题。
对每一行开一个 vector,遍历 pp,把 pip_i 的位置塞进对应行的 vector, kk 次操作可以把最后 kk 个移到最前,那么该行期望的最少操作次数就是从后往前第 k+1k+1 个的下标。
需要注意的是特判一下 kmk\ge m,这种时候答案一定为 mm,否则会数组越界。
CPP
#include <bits/stdc++.h>
// #define int long long
#define lint long long
#define endl '\n'
using namespace std;
const int N = 1e5+5;

int n,m,k;
int p[N];
vector<int> v[N];

signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	int T;
	cin >> T;
	while(T--){
		cin >> n >> m >> k;

		for(int i = 1; i <= n; i++)
			v[i].clear();

		for(int i = 1; i <= n*m; i++){
			cin >> p[i];
			v[p[i]/m+!!(p[i] % m)].push_back(i);
		}

		if(k >= m){
			cout << m << endl;
			continue;
		}

		int ans = n*m;
		for(int i = 1; i <= n; i++)
			ans = min(ans,max(v[i][m-k-1],m));
		cout << ans << endl;
	}
	return 0;
}

评论

1 条评论,欢迎与作者交流。

正在加载评论...