这是出给pj的题ccccc

  1. #include <bits/stdc++.h>
  2.  
  3. #define ll long long
  4. #define INF 2147483647
  5. #define y1 uihaoissa
  6. #define y2 oaioiuwio
  7.  
  8. using namespace std;
  9. const int wx[]= {,,,-},wy[]= {,,-,};
  10.  
  11. int T,n,m,k,maxh,ltt;
  12. int a[][],sum[][],cal[];
  13. char tow[][][];
  14. bool f[][][];
  15. int cnt[][][];
  16. short pre1[][][],pre2[][][],fl[][][];
  17. bool debug;
  18.  
  19. inline int read() {
  20. int x=;
  21. char ch=getchar();
  22. while(ch<''||ch>'')ch=getchar();
  23. while(ch>=''&&ch<='') {
  24. x=x*+ch-'';
  25. ch=getchar();
  26. }
  27. return x;
  28. }
  29.  
  30. inline int sqr(int x) {
  31. return x*x;
  32. }
  33.  
  34. inline int toedge(int x,int y) {
  35. return min(min(x,y),min(n-x+,m-y+));
  36. }
  37.  
  38. inline int islarge1(int x1,int y1,int y2,int z) {
  39. return pre1[x1][y2][z]-pre1[x1][y1-][z];
  40. }
  41.  
  42. inline int islarge2(int x1,int x2,int y1,int z) {
  43. return pre2[x2][y1][z]-pre2[x1-][y1][z];
  44. }
  45.  
  46. inline int getsum(int x1,int y1,int x2,int y2) {
  47. return sum[x2][y2]-sum[x1-][y2]-sum[x2][y1-]+sum[x1-][y1-];
  48. }
  49.  
  50. int check(int x,int y,int z) {
  51. if (x>) {
  52. int h;
  53. if (cnt[x-][y][z]==-)
  54. switch (tow[x-][y][z]) {
  55. case :
  56. if (fl[x-][y][z]!=z-) {
  57. h=fl[x-][y][z]+;
  58. if (islarge1(x-h,y-h,y+h,z-h)>) return fl[x][y][z]=h,tow[x][y][z]=,cnt[x][y][z]=-,;
  59. }
  60. break;
  61. case :
  62. h=fl[x-][y][z];
  63. if (islarge2(x-h,x+h,y-h,z-h)>) return fl[x][y][z]=h,tow[x][y][z]=,cnt[x][y][z]=-,;
  64. break;
  65. case :
  66. h=fl[x-][y][z];
  67. if (islarge2(x-h,x+h,y+h,z-h)>) return fl[x][y][z]=h,tow[x][y][z]=,cnt[x][y][z]=-,;
  68. break;
  69. case :
  70. h=fl[x-][y][z]-;
  71. if (islarge1(x+h,y-h,y+h,z-h)>) return fl[x][y][z]=h,tow[x][y][z]=,cnt[x][y][z]=-,;
  72. break;
  73. }
  74. }
  75. if (y>) {
  76. int h;
  77. if (cnt[x][y-][z]==-) {
  78. if (fl[x][y][z]==) tow[x][y][z]=;
  79. switch (tow[x][y-][z]) {
  80. case :
  81. h=fl[x][y-][z];
  82. if (islarge1(x-h,y-h,y+h,z-h)>) return fl[x][y][z]=h,tow[x][y][z]=,cnt[x][y][z]=-,;
  83. break;
  84. case :
  85. if (fl[x][y-][z]!=z-) {
  86. h=fl[x][y-][z]+;
  87. if (islarge2(x-h,x+h,y-h,z-h)>) return fl[x][y][z]=h,tow[x][y][z]=,cnt[x][y][z]=-,;
  88. }
  89. break;
  90. case :
  91. h=fl[x][y-][z]-;
  92. if (islarge2(x-h,x+h,y+h,z-h)>) return fl[x][y][z]=h,tow[x][y][z]=,cnt[x][y][z]=-,;
  93. break;
  94. case :
  95. h=fl[x][y-][z];
  96. if (islarge1(x+h,y-h,y+h,z-h)>) return fl[x][y][z]=h,tow[x][y][z]=,cnt[x][y][z]=-,;
  97. break;
  98. }
  99. }
  100. }
  101. if (z>) {
  102. if (cnt[x][y][z-]==-) {
  103. int h=fl[x][y][z-];
  104. switch (tow[x][y][z-]) {
  105. case :
  106. if (islarge1(x-h,y-h,y+h,z-h)>) return fl[x][y][z]=h,tow[x][y][z]=,cnt[x][y][z]=-,;
  107. break;
  108. case :
  109. if (islarge2(x-h,x+h,y-h,z-h)>) return fl[x][y][z]=h,tow[x][y][z]=,cnt[x][y][z]=-,;
  110. break;
  111. case :
  112. if (islarge2(x-h,x+h,y+h,z-h)>) return fl[x][y][z]=h,tow[x][y][z]=,cnt[x][y][z]=-,;
  113. break;
  114. case :
  115. if (islarge1(x+h,y-h,y+h,z-h)>) return fl[x][y][z]=h,tow[x][y][z]=,cnt[x][y][z]=-,;
  116. break;
  117. }
  118. }
  119. }
  120. for (int h=z-; h>=; h--) { //h为中心到该圈的差数
  121. if (cnt[x][y][h+]!=-) break;
  122. if (islarge1(x-h,y-h,y+h,z-h)>) return fl[x][y][z]=h,tow[x][y][z]=,cnt[x][y][z]=-,;
  123. if (islarge2(x-h,x+h,y-h,z-h)>) return fl[x][y][z]=h,tow[x][y][z]=,cnt[x][y][z]=-,;
  124. if (islarge2(x-h,x+h,y+h,z-h)>) return fl[x][y][z]=h,tow[x][y][z]=,cnt[x][y][z]=-,;
  125. if (islarge1(x+h,y-h,y+h,z-h)>) return fl[x][y][z]=h,tow[x][y][z]=,cnt[x][y][z]=-,;
  126. }
  127. int tot=cal[z]-getsum(x-z+,y-z+,x+z-,y+z-);
  128. return tot>k?:(cnt[x][y][z]=tot,);
  129. }
  130.  
  131. int main() {
  132. for (int i=; i<=; i++)
  133. cal[i]=cal[i-]+(*i-)*(*i-);
  134. T=read();
  135. while (T--) {
  136. maxh=;
  137. memset(cnt,-,sizeof(cnt));
  138. n=read(),m=read(),k=read();
  139. for (int i=; i<=n; i++)
  140. for (int j=; j<=m; j++) {
  141. a[i][j]=read();
  142. sum[i][j]=sum[i-][j]+sum[i][j-]-sum[i-][j-]+a[i][j];
  143. for (int k=,to=toedge(i,j); k<=to; k++) {
  144. f[i][j][k]=(a[i][j]>k);
  145. pre1[i][j][k]=pre1[i][j-][k]+f[i][j][k];
  146. pre2[i][j][k]=pre2[i-][j][k]+f[i][j][k];
  147. }
  148. }
  149. for (int i=; i<=n; i++)
  150. for (int j=; j<=m; j++) {
  151. cnt[i][j][]=-a[i][j];
  152. if (a[i][j]<=) maxh=max(maxh,);
  153. for (int l=max(max(a[i][j],),maxh+),to=toedge(i,j); l<=to;) {
  154. int tmp=check(i,j,l);
  155. if (!tmp) maxh=max(maxh,l),tmp++;
  156. l+=tmp;
  157. }
  158. }
  159. printf("%d\n",maxh);
  160. }
  161. return ;
  162. }

[Luogu] 金字塔神话的更多相关文章

  1. luogu P1216 [IOI1994][USACO1.5]数字三角形 Number Triangles (递推)

    链接:https://www.luogu.org/problemnew/show/P1216 题面: 题目描述 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的 ...

  2. Atitit.软件开发的三层结构isv金字塔模型

    Atitit.软件开发的三层结构isv金字塔模型 第一层,Implements 层,着重与功能的实现.. 第二次,spec层,理论层,设计规范,接口,等.流程.方法论 顶层,val层,价值观层,原则, ...

  3. 在Excel中制作金字塔条形图

    使用场景:一项市场调查研究中,男性和女性.赞同和反对.满意和不满意的两方面的消费者,他们在某些项目上的指标分布特性一项产品组合决策中,乐观场景和悲观场景下各产品的获利情况一个产品试销活动中,不同门店渠 ...

  4. Luogu 魔法学院杯-第二弹(萌新的第一法blog)

    虽然有点久远  还是放一下吧. 传送门:https://www.luogu.org/contest/show?tid=754 第一题  沉迷游戏,伤感情 #include <queue> ...

  5. luogu p1268 树的重量——构造,真正考验编程能力

    题目链接:http://www.luogu.org/problem/show?pid=1268#sub -------- 这道题费了我不少心思= =其实思路和标称毫无差别,但是由于不习惯ACM风格的题 ...

  6. SIFT中的尺度空间和传统图像金字塔

    SIFT中的尺度空间和传统图像金字塔 http://www.zhizhihu.com/html/y2010/2146.html 最近自己混淆了好多概念,一边弄明白的同时,也做了一些记录,分享一下.最近 ...

  7. Atitit 图像金字塔原理与概率 attilax的理解总结qb23

    Atitit 图像金字塔原理与概率 attilax的理解总结qb23 1.1. 高斯金字塔  (  Gaussianpyramid): 拉普拉斯金字塔 (Laplacianpyramid):1 1.2 ...

  8. 软件项目发展历史<人月神话>这本书好

    几乎是计算机软件开发的发展历史     人月神话,增加人手并不一定能提高开发速度. 原因在于,有些任务是无法分解的,存在先后顺序.无法同步进行. 增加人手,增加的是沟通成本,相互牵制.可以分解的任务就 ...

  9. OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

    这篇已经写得很好,真心给作者点个赞.题目都是直接转过来的,直接去看吧. Reference Link : http://blog.csdn.net/poem_qianmo/article/detail ...

随机推荐

  1. preg_replace

    preg_replace — 执行一个正则表达式的搜索和替换 说明: preg_replace ( mixed $pattern , mixed $replacement , mixed $subje ...

  2. oracle 、mysql 取昨天 前天 本周 数据

    查询今天数据: SELECT COUNT(1) FROM T_CALL_RECORDS WHERE TO_CHAR(T_RKSJ,'YYYY-MM-DD')=TO_CHAR(SYSDATE,'YYYY ...

  3. 监听lsnrctl status查询状态报错linux error 111:connection refused

    报错现象 今天给客户一个单实例环境配置监听,创建正常,查询状态异常报错 tns tns tns linux error :connection refused 匹配MOS Starting TNS L ...

  4. Apache ---- Solrl漏洞复现

    Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也可以通过Http Get操 ...

  5. 详解为什么设置overflow为hidden可以清除浮动带来的影响

    1.问题起源 在平时的业务开发写CSS中,为了满足页面布局,元素的浮动特性我们用的不能再多了.使用浮动的确能够解决一些布局问题,但是也带了一些副作用影响,比如,父元素高度塌陷,我们有好几种可以清除浮动 ...

  6. 数据库入门(mySQL):数据操作与查询

    增删改 单表查询 多表查询 一.增删改 1.插入数据记录(增) insert into table_name(field1,field2,field3,...fieldn) valuses(value ...

  7. maccms代码审计

    由于工作原因,分析了很多的cms也都写过文章,不过觉得好像没什么骚操作都是网上的基本操作,所以也就没发表在网站上,都保存在本地.最近突然发现自己博客中实战的东西太少了,决定将以前写的一些文章搬过来,由 ...

  8. K2 BPM_携手捷普:让流程立于云端,臻于至上_全球领先的工作流引擎

    在工业4.0地催化下,新一代信息技术与高科制造业深度融合,正在引发影响深远的产业变革,形成了新的生产方式.产业形态.商业模式和经济增长点. 捷普作为世界上最大型的电子制造服务公司之一,正站在新的历史发 ...

  9. stm32 独立看门狗 IWDG

    独立看门狗IWDG 独立看门狗简单理解就是一个12位递减计数器,当计数器从某一个值递减到0时,系统就会产生一次复位 独立看门狗由专用低速时钟LSI驱动,其频率一般在30-60KHz之间,通常选择40K ...

  10. Spark学习笔记2——RDD(上)

    目录 Spark学习笔记2--RDD(上) RDD是什么? 例子 创建 RDD 并行化方式 读取外部数据集方式 RDD 操作 转化操作 行动操作 惰性求值 Spark学习笔记2--RDD(上) 笔记摘 ...