题解?noipT1还需要题解?正解就是$n^2$大暴力。

考试的时候打了$n^2$的暴力,也想到了正解的优化,然而觉得它太麻烦了,而且$n^2$怎么优化也过不了50000啊,而且即使不优化前面30分我也能拿到。

然而就把正解放弃了……完戏。

然而这题ifelse打的我好恶心啊……

ps.linux终端还是挺良心的,y1给我报错了,不然凉凉……

题解:

一个方块内部的贡献为:abs(x1(i)-x2(i))*abs(y1(i)-y2(i))*2;

然后$n^2$考虑方块间的贡献。

直接枚举肯定会T,考虑将输入排序,当不符合条件是break,居然快了这么多。

有一个坑点:

开始我写的是:else if(x1(j)>x2(i)&&y1(j)>y2(i))break;

但其实:else if(x1(j)>x2(i))break;就可以了。

  1. #include<algorithm>
  2. #include<iostream>
  3. #include<cstdlib>
  4. #include<cstring>
  5. #include<cstdio>
  6. #include<cmath>
  7. #define MAXN 100010
  8. #define LL long long
  9. #define int LL
  10. #define max(a,b) ((a)>(b)?(a):(b))
  11. #define ma(x,y) memset(x,y,sizeof(x))
  12. using namespace std;
  13. int n,maxn,maxy;
  14. int map[][];
  15. struct ques
  16. {
  17. int x1,x2,ty1,ty2;
  18. #define x1(i) que[i].x1
  19. #define x2(i) que[i].x2
  20. #define ty1(i) que[i].ty1
  21. #define ty2(i) que[i].ty2
  22. friend bool operator < (ques a,ques b)
  23. {
  24. return a.x1==b.x1?a.ty1<b.ty1:a.x1<b.x1;
  25. }
  26. }que[MAXN];
  27. inline int read();
  28. void QJ2();
  29. signed main()
  30. {
  31. n=read();
  32. for(int i=;i<=n;i++)
  33. x1(i)=read(),ty1(i)=read(),x2(i)=read(),ty2(i)=read();
  34. QJ2();
  35. }
  36. inline int read()
  37. {
  38. int s=;char a=getchar();
  39. while(a<''||a>'')a=getchar();
  40. while(a>=''&&a<=''){s=s*+a-'';a=getchar();}
  41. return s;
  42. }
  43. void QJ2()
  44. {
  45. sort(que+,que+n+);
  46. LL ans=;
  47. for(int i=;i<=n;i++)
  48. ans+=1ll*abs(x1(i)-x2(i))*abs(ty1(i)-ty2(i))*;
  49. for(int i=;i<=n;i++)
  50. for(int j=i+;j<=n;j++)
  51. {
  52. if(i!=j)
  53. {
  54. if(ty1(j)==ty2(i)+)//j上
  55. {
  56. int ttt=min(x2(j),x2(i))-max(x1(j),x1(i))+;
  57. if(ttt>)
  58. {
  59. ans+=(ttt-)*;
  60. if(abs(x1(i)-x1(j))>)ans++;
  61. if(abs(x2(i)-x2(j))>)ans++;
  62. }
  63. else if(abs(x1(i)-x1(j))==||abs(x2(i)-x2(j))==)ans++;
  64. }
  65. else if(ty2(j)==ty1(i)-)//j下
  66. {
  67. int ttt=min(x2(j),x2(i))-max(x1(j),x1(i))+;
  68. if(ttt>)
  69. {
  70. ans+=(ttt-)*;
  71. if(abs(x1(i)-x1(j))>)ans++;
  72. if(abs(x2(i)-x2(j))>)ans++;
  73. }
  74. else if(abs(x1(i)-x1(j))==||abs(x2(i)-x2(j))==)ans++;
  75. }
  76. else if(x2(j)==x1(i)-)//j左
  77. {
  78. int ttt=min(ty2(j),ty2(i))-max(ty1(j),ty1(i))+;
  79. if(ttt>)
  80. {
  81. ans+=(ttt-)*;
  82. if(abs(ty1(i)-ty1(j))>)ans++;
  83. if(abs(ty2(i)-ty2(j))>)ans++;
  84. }
  85. }
  86. else if(x1(j)==x2(i)+)//j右
  87. {
  88. int ttt=min(ty2(j),ty2(i))-max(ty1(j),ty1(i))+;
  89. if(ttt>)
  90. {
  91. ans+=(ttt-)*;
  92. if(abs(ty1(i)-ty1(j))>)ans++;
  93. if(abs(ty2(i)-ty2(j))>)ans++;
  94. }
  95. }
  96. else if(x1(j)>x2(i)&&ty1(j)>ty2(i))break;
  97. }
  98. }
  99. printf("%lld\n",ans);
  100. exit();
  101. }

HZOJ 辣鸡(ljh)的更多相关文章

  1. 7.29 NOIP模拟测试10 辣鸡(ljh)+模板(ac)+大佬(kat)

    T1 辣鸡(ljh) 就是一道分类讨论的暴搜,外加一丢丢的减枝,然而我挂了,为啥呢,分类讨论变量名打错,大于小于号打反,能对才怪,写了sort为了调试就注释了,后来忘了解开,小减枝也没打.但是这道题做 ...

  2. [CSP-S模拟测试]:辣鸡(ljh) (暴力)

    题目描述 辣鸡$ljh\ NOI$之后就退役了,然后就滚去学文化课了.然而在上化学课的时候,数学和化学都不好的$ljh$却被一道简单题难住了,受到了大佬的嘲笑.题目描述是这样的:在一个二维平面上有一层 ...

  3. [NOIP模拟测试10]辣鸡(ljh) 题解

    首先计算块内贡献,很显然是$(x_2-x_1)*(y_2-y_1)*2$. 然后考虑矩形之间的贡献,sort一遍分类讨论$n^2$暴力即可. 注意考虑边界情况是否能多两个,以及角对角的情况. 另外,排 ...

  4. noip模拟6[辣鸡·模板·大佬·宝藏]

    这怕不是学长出的题吧 这题就很迷 这第一题吧,正解竟然是O(n2)的,我这是快气死了,考场上一直觉得aaaaa n2过不了过不了, 我就去枚举边了,然后调了两个小时,愣是没调出来,然后交了个暴力,就走 ...

  5. JVM 辣鸡回收

    垃圾回收算法 标记清除法 先标记出需要回收的对象,然后一次性回收.缺点:会产生内存碎片,并且效率也不高. 标记压缩法 先标记出需要回收的对象,然后让存活对象向一端移动,移动的过程中进行回收辣鸡.避免了 ...

  6. NOIP模拟测试10「大佬·辣鸡·模板」

    大佬 显然假期望 我奇思妙想出了一个式子$f[i]=f[i-1]+\sum\limits_{j=1}^{j<=m} C_{k \times j}^{k}\times w[j]$ 然后一想不对得容 ...

  7. bzoj2141排队(辣鸡但是好写的方法)

    题意很明确,也非常经典: 一个支持查询 区间中比k大的数的个数 并且支持单点修改的序列 ——因为题意可以转化为:查询这两个数中比后者大的个数.比后者小的个数.比前者大的个数.比前者小的个数(根据这4个 ...

  8. SA的一个辣鸡trick

    基础板子 namespace SA{ int x[400010],y[400010],SA[400010],rk[400010],ht[400010],t[400010]; int st[19][40 ...

  9. 辣鸡蒟蒻Klaier的一些计划

    需要熟练的东西:cdq分治,堆,树链剖分,tarjan及其它一些图论算法,网络流,kmp,字符串哈希,线段树主席树,树状数组,斜率优化dp 需要学的东西:lct,后缀数组,AC自动机,平衡树 球队收益 ...

随机推荐

  1. 转载 WPF -- 控件模板 (ControlTemplate)(一) https://blog.csdn.net/qq_23018459/article/details/79899838

    ControlTemplate(控件模板)   https://blog.csdn.net/qq_23018459/article/details/79899838 WPF包含数据模板和控件模板,其中 ...

  2. 举例分析private的作用【c/c++学习】

    抛砖引玉: c++中private的用处 我知道我们可以用 public 中的值,把private中的数据给提出来,但是还是搞不懂private该怎么用,或者说在一个具体程序中,private有什么用 ...

  3. JavaScript-JQ实现自定义滚动条插件1.0

    此滚动条仅支持竖向(Y轴) 一.Css /*这里是让用户鼠标在里面不能选中文字,避免拖动的时候出错*/ body { -moz-user-select: none; /*火狐*/ -webkit-us ...

  4. 使用Data Lake Analytics + OSS分析CSV格式的TPC-H数据集

    0. Data Lake Analytics(DLA)简介 关于Data Lake的概念,更多阅读可以参考:https://en.wikipedia.org/wiki/Data_lake 以及AWS和 ...

  5. set的基本使用

    构造一个集合 现在我们来构造一个集合. C++ 中直接构造一个 set的语句为: sets.这样我们定义了一个名为 s的.储存 T类型数据的 集合,其中 T是集合要储存的数据类型.初始的时候 s是空集 ...

  6. CSS 连接后面加上"?"表示什么意思?

    举例来说: <link rel="stylesheet" href="http://static.ak.facebook.com/css/actionspro.cs ...

  7. !important覆写css行内样式

    <div class="block"> <span style="font-weight: bold; color: red;">Hel ...

  8. Bootstrap —— tab切换

    tab切换 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  9. ansible Ansible Galaxy ansible-playbook 安装 使用 命令 笔记 生成密钥 管控机 被管控机 wget epel源

    笔记 ansible 安装 与salt对比 相同 都是为了同时在多台机器上执行相同的命令 都是python开发 不同 agent(saltstack需要安装.ansible不需要) 配置(salt配置 ...

  10. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 全书总结

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 全书总结 本系列文章中可能有很多翻译有问题或者错误的地方:并且有些章节 ...