摘要

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

题意

n核处理器,如果在某时间多核访问到同一内存,或者访问到已经被锁的内存,那么锁定该内存和该处理器,问每个处理器被锁定的时间。

题解

按要求模拟即可。

代码

411B.cpp代码已折叠
展开折叠内容
显示/移除行号
  1. #include<cstdio>
  2. #include<iostream>
  3. #include<string>
  4. #include<algorithm>
  5. #include<cstring>
  6. using namespace std;
  7. #define dsi(n) int n;scanf("%d",&n)
  8. #define si(n) scanf("%d",&n)
  9. #define f(i,n) for(int i=1;i<=n;++i)
  10. #define fi(n) f(i,n)
  11. #define f0(i,n) for(int i=0;i!=n;++i)
  12. #define fd(i,n) for(int i=n;i>=1;--i)
  13. #define ci const int&
  14. #define foreach(i,s) for(typeof(s.begin()) i=s.begin();i!=s.end();++i)
  15. #define c(x) const x&
  16. class st
  17. {
  18. int x,y;
  19. friend bool operator <(const st&a,const st&b){return a.x<b.x;}
  20. };
  21. int a[1000][1000]={},used[1000]={},ans[1000]={},deadM[1000]={},deadC[1000]={};
  22. int main()
  23. {
  24. dsi(n);
  25. dsi(m);
  26. dsi(k);
  27. f(i,n)f(j,m)
  28. {
  29. si(a[i][j]);
  30. }
  31. memset(ans,17,sizeof(ans));
  32. f(j,m)//cycle//
  33. {
  34. memset(used,0,sizeof(used));
  35. f(i,n)//core//
  36. {
  37. if(!deadC[i])
  38. ++used[a[i][j]];
  39. }
  40. f(i,n)//core//
  41. {
  42. if(!a[i][j])continue;
  43. if(used[a[i][j]]>=2||deadM[a[i][j]])
  44. {
  45. ans[i]=min(j,ans[i]);
  46. deadM[a[i][j]]=1;
  47. deadC[i]=1;
  48. }
  49. }
  50. }
  51. f(i,n)
  52. printf("%d\n",ans[i]==ans[999]?0:ans[i]);
  53. return 0;
  54. }

著作权声明[编辑]

关于[编辑]