题解:CF411B Multi-core Processor
OIerJiang_1017 · · 题解
CF411B 题目传送门
题目大意
有编号从
解决思路
注意数据范围:
代码展示
#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int n, m, k, a[N][N];
int cnt[N], ans[N];
bool vis[N];
int main()
{ //建议scanf,更快
scanf("%d%d%d", &n, &m, &k);
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
scanf("%d", &a[i][j]);
for(int i = 1; i <= m; i++)
{
memset(cnt, 0, sizeof(cnt));
for(int j = 1; j <= n; j++)
{
if(ans[j] || !a[j][i] == 0)//处理器被锁定
continue; //或没有发出指令
if(vis[a[j][i]])
{
ans[j] = i;
continue;
}//处理器向已锁定的单元发送指令
cnt[a[j][i]]++;//统计每个单元接收到的指令数
}
for(int j = 1; j <= n; j++)
{
if(ans[j]) continue;//处理器已锁定,跳过
if(cnt[a[j][i]] >= 2)
//有多个处理器同时向某个单元发送指令
{
ans[j] = i;
vis[a[j][i]] = 1;
//单元和处理器均被锁定
}
}
}
for(int i = 1; i <= n; i++)//建议printf,更快
printf("%d\n", ans[i]);
return 0;
}