HZOJ 辣鸡(ljh)
题解?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;就可以了。
- #include<algorithm>
- #include<iostream>
- #include<cstdlib>
- #include<cstring>
- #include<cstdio>
- #include<cmath>
- #define MAXN 100010
- #define LL long long
- #define int LL
- #define max(a,b) ((a)>(b)?(a):(b))
- #define ma(x,y) memset(x,y,sizeof(x))
- using namespace std;
- int n,maxn,maxy;
- int map[][];
- struct ques
- {
- int x1,x2,ty1,ty2;
- #define x1(i) que[i].x1
- #define x2(i) que[i].x2
- #define ty1(i) que[i].ty1
- #define ty2(i) que[i].ty2
- friend bool operator < (ques a,ques b)
- {
- return a.x1==b.x1?a.ty1<b.ty1:a.x1<b.x1;
- }
- }que[MAXN];
- inline int read();
- void QJ2();
- signed main()
- {
- n=read();
- for(int i=;i<=n;i++)
- x1(i)=read(),ty1(i)=read(),x2(i)=read(),ty2(i)=read();
- QJ2();
- }
- inline int read()
- {
- int s=;char a=getchar();
- while(a<''||a>'')a=getchar();
- while(a>=''&&a<=''){s=s*+a-'';a=getchar();}
- return s;
- }
- void QJ2()
- {
- sort(que+,que+n+);
- LL ans=;
- for(int i=;i<=n;i++)
- ans+=1ll*abs(x1(i)-x2(i))*abs(ty1(i)-ty2(i))*;
- for(int i=;i<=n;i++)
- for(int j=i+;j<=n;j++)
- {
- if(i!=j)
- {
- if(ty1(j)==ty2(i)+)//j上
- {
- int ttt=min(x2(j),x2(i))-max(x1(j),x1(i))+;
- if(ttt>)
- {
- ans+=(ttt-)*;
- if(abs(x1(i)-x1(j))>)ans++;
- if(abs(x2(i)-x2(j))>)ans++;
- }
- else if(abs(x1(i)-x1(j))==||abs(x2(i)-x2(j))==)ans++;
- }
- else if(ty2(j)==ty1(i)-)//j下
- {
- int ttt=min(x2(j),x2(i))-max(x1(j),x1(i))+;
- if(ttt>)
- {
- ans+=(ttt-)*;
- if(abs(x1(i)-x1(j))>)ans++;
- if(abs(x2(i)-x2(j))>)ans++;
- }
- else if(abs(x1(i)-x1(j))==||abs(x2(i)-x2(j))==)ans++;
- }
- else if(x2(j)==x1(i)-)//j左
- {
- int ttt=min(ty2(j),ty2(i))-max(ty1(j),ty1(i))+;
- if(ttt>)
- {
- ans+=(ttt-)*;
- if(abs(ty1(i)-ty1(j))>)ans++;
- if(abs(ty2(i)-ty2(j))>)ans++;
- }
- }
- else if(x1(j)==x2(i)+)//j右
- {
- int ttt=min(ty2(j),ty2(i))-max(ty1(j),ty1(i))+;
- if(ttt>)
- {
- ans+=(ttt-)*;
- if(abs(ty1(i)-ty1(j))>)ans++;
- if(abs(ty2(i)-ty2(j))>)ans++;
- }
- }
- else if(x1(j)>x2(i)&&ty1(j)>ty2(i))break;
- }
- }
- printf("%lld\n",ans);
- exit();
- }
HZOJ 辣鸡(ljh)的更多相关文章
- 7.29 NOIP模拟测试10 辣鸡(ljh)+模板(ac)+大佬(kat)
T1 辣鸡(ljh) 就是一道分类讨论的暴搜,外加一丢丢的减枝,然而我挂了,为啥呢,分类讨论变量名打错,大于小于号打反,能对才怪,写了sort为了调试就注释了,后来忘了解开,小减枝也没打.但是这道题做 ...
- [CSP-S模拟测试]:辣鸡(ljh) (暴力)
题目描述 辣鸡$ljh\ NOI$之后就退役了,然后就滚去学文化课了.然而在上化学课的时候,数学和化学都不好的$ljh$却被一道简单题难住了,受到了大佬的嘲笑.题目描述是这样的:在一个二维平面上有一层 ...
- [NOIP模拟测试10]辣鸡(ljh) 题解
首先计算块内贡献,很显然是$(x_2-x_1)*(y_2-y_1)*2$. 然后考虑矩形之间的贡献,sort一遍分类讨论$n^2$暴力即可. 注意考虑边界情况是否能多两个,以及角对角的情况. 另外,排 ...
- noip模拟6[辣鸡·模板·大佬·宝藏]
这怕不是学长出的题吧 这题就很迷 这第一题吧,正解竟然是O(n2)的,我这是快气死了,考场上一直觉得aaaaa n2过不了过不了, 我就去枚举边了,然后调了两个小时,愣是没调出来,然后交了个暴力,就走 ...
- JVM 辣鸡回收
垃圾回收算法 标记清除法 先标记出需要回收的对象,然后一次性回收.缺点:会产生内存碎片,并且效率也不高. 标记压缩法 先标记出需要回收的对象,然后让存活对象向一端移动,移动的过程中进行回收辣鸡.避免了 ...
- NOIP模拟测试10「大佬·辣鸡·模板」
大佬 显然假期望 我奇思妙想出了一个式子$f[i]=f[i-1]+\sum\limits_{j=1}^{j<=m} C_{k \times j}^{k}\times w[j]$ 然后一想不对得容 ...
- bzoj2141排队(辣鸡但是好写的方法)
题意很明确,也非常经典: 一个支持查询 区间中比k大的数的个数 并且支持单点修改的序列 ——因为题意可以转化为:查询这两个数中比后者大的个数.比后者小的个数.比前者大的个数.比前者小的个数(根据这4个 ...
- SA的一个辣鸡trick
基础板子 namespace SA{ int x[400010],y[400010],SA[400010],rk[400010],ht[400010],t[400010]; int st[19][40 ...
- 辣鸡蒟蒻Klaier的一些计划
需要熟练的东西:cdq分治,堆,树链剖分,tarjan及其它一些图论算法,网络流,kmp,字符串哈希,线段树主席树,树状数组,斜率优化dp 需要学的东西:lct,后缀数组,AC自动机,平衡树 球队收益 ...
随机推荐
- 转载 WPF -- 控件模板 (ControlTemplate)(一) https://blog.csdn.net/qq_23018459/article/details/79899838
ControlTemplate(控件模板) https://blog.csdn.net/qq_23018459/article/details/79899838 WPF包含数据模板和控件模板,其中 ...
- 举例分析private的作用【c/c++学习】
抛砖引玉: c++中private的用处 我知道我们可以用 public 中的值,把private中的数据给提出来,但是还是搞不懂private该怎么用,或者说在一个具体程序中,private有什么用 ...
- JavaScript-JQ实现自定义滚动条插件1.0
此滚动条仅支持竖向(Y轴) 一.Css /*这里是让用户鼠标在里面不能选中文字,避免拖动的时候出错*/ body { -moz-user-select: none; /*火狐*/ -webkit-us ...
- 使用Data Lake Analytics + OSS分析CSV格式的TPC-H数据集
0. Data Lake Analytics(DLA)简介 关于Data Lake的概念,更多阅读可以参考:https://en.wikipedia.org/wiki/Data_lake 以及AWS和 ...
- set的基本使用
构造一个集合 现在我们来构造一个集合. C++ 中直接构造一个 set的语句为: sets.这样我们定义了一个名为 s的.储存 T类型数据的 集合,其中 T是集合要储存的数据类型.初始的时候 s是空集 ...
- CSS 连接后面加上"?"表示什么意思?
举例来说: <link rel="stylesheet" href="http://static.ak.facebook.com/css/actionspro.cs ...
- !important覆写css行内样式
<div class="block"> <span style="font-weight: bold; color: red;">Hel ...
- Bootstrap —— tab切换
tab切换 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- ansible Ansible Galaxy ansible-playbook 安装 使用 命令 笔记 生成密钥 管控机 被管控机 wget epel源
笔记 ansible 安装 与salt对比 相同 都是为了同时在多台机器上执行相同的命令 都是python开发 不同 agent(saltstack需要安装.ansible不需要) 配置(salt配置 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 全书总结
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 全书总结 本系列文章中可能有很多翻译有问题或者错误的地方:并且有些章节 ...