题目链接 | 难度等级 | 完成状态 | 完成分数 | 最后编辑时间 | 需要注意 |
---|---|---|---|---|---|
Multi-core Processor | ★☆☆☆☆ | 答案正确 | 100 | 2015-02-24 13:12:28 | 无 |
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; } |