摘要
题意
n核处理器,如果在某时间多核访问到同一内存,或者访问到已经被锁的内存,那么锁定该内存和该处理器,问每个处理器被锁定的时间。
题解
按要求模拟即可。
代码
411B.cpp代码已折叠
展开折叠内容
|
- #include<cstdio>
- #include<iostream>
- #include<string>
- #include<algorithm>
- #include<cstring>
- using namespace std;
- #define dsi(n) int n;scanf("%d",&n)
- #define si(n) scanf("%d",&n)
- #define f(i,n) for(int i=1;i<=n;++i)
- #define fi(n) f(i,n)
- #define f0(i,n) for(int i=0;i!=n;++i)
- #define fd(i,n) for(int i=n;i>=1;--i)
- #define ci const int&
- #define foreach(i,s) for(typeof(s.begin()) i=s.begin();i!=s.end();++i)
- #define c(x) const x&
- class st
- {
- int x,y;
- friend bool operator <(const st&a,const st&b){return a.x<b.x;}
- };
- int a[1000][1000]={},used[1000]={},ans[1000]={},deadM[1000]={},deadC[1000]={};
- int main()
- {
- dsi(n);
- dsi(m);
- dsi(k);
- f(i,n)f(j,m)
- {
- si(a[i][j]);
- }
- memset(ans,17,sizeof(ans));
- f(j,m)//cycle//
- {
- memset(used,0,sizeof(used));
- f(i,n)//core//
- {
- if(!deadC[i])
- ++used[a[i][j]];
- }
- f(i,n)//core//
- {
- if(!a[i][j])continue;
- if(used[a[i][j]]>=2||deadM[a[i][j]])
- {
- ans[i]=min(j,ans[i]);
- deadM[a[i][j]]=1;
- deadC[i]=1;
- }
- }
- }
- f(i,n)
- printf("%d\n",ans[i]==ans[999]?0:ans[i]);
- return 0;
- }
|