记录编号 597400 评测结果 AAAAAAAAAA
题目名称 魔法阵 最终得分 100
用户昵称 Gravatar孤独的氢离子 是否通过 通过
代码语言 C++ 运行时间 0.194 s
提交时间 2024-11-27 16:16:58 内存使用 3.32 MiB
显示代码纯文本
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int n,m,k1,k2;
  4. int o[2600][3];
  5. int vis[55][55];
  6. int ans=1e9;
  7. void dfs(int x,int y,int p,int mx)
  8. {
  9. if(mx>ans) return;
  10. if(p<=n*m/2)
  11. {
  12. o[p][0]=x;
  13. o[p][1]=y;
  14. }
  15. if(p>n*m/2)
  16. {
  17. int s1=abs(k1*(o[p-n*m/2][0]-x))+abs(k2*(o[p-n*m/2][1]-y));
  18. if(s1>mx) mx=s1;
  19. }
  20. if(p==n*m)
  21. {
  22. if(ans>mx) ans=mx;
  23. return ;
  24. }
  25. if(vis[x+1][y]==0&&vis[x-1][y]==0&&vis[x][y+1]==1&&vis[x][y-1]==1) return;
  26. if(vis[x+1][y]==1&&vis[x-1][y]==1&&vis[x][y+1]==0&&vis[x][y-1]==0) return;
  27. p++;
  28. if(vis[x-1][y]==0)
  29. {
  30. vis[x-1][y]=1;
  31. dfs(x-1,y,p,mx);
  32. vis[x-1][y]=0;
  33. }
  34. if(vis[x][y-1]==0)
  35. {
  36. vis[x][y-1]=1;
  37. dfs(x,y-1,p,mx);
  38. vis[x][y-1]=0;
  39. }
  40. if(vis[x+1][y]==0)
  41. {
  42. vis[x+1][y]=1;
  43. dfs(x+1,y,p,mx);
  44. vis[x+1][y]=0;
  45. }
  46. if(vis[x][y+1]==0)
  47. {
  48. vis[x][y+1]=1;
  49. dfs(x,y+1,p,mx);
  50. vis[x][y+1]=0;
  51. }
  52. return;
  53. }
  54. int main()
  55. {
  56. freopen("mmatrix.in","r",stdin);
  57. freopen("mmatrix.out","w",stdout);
  58. cin>>n>>m>>k1>>k2;
  59. vis[1][1]=1;
  60. for(int i=0;i<=n+1;i++)
  61. {
  62. vis[i][0]=1;
  63. vis[i][m+1]=1;
  64. }
  65. for(int i=0;i<=m+1;i++)
  66. {
  67. vis[0][i]=1;
  68. vis[n+1][i]=1;
  69. }
  70. dfs(1,1,1,0);
  71. cout<<ans;
  72. return 0;
  73. }