题目:http://poj.org/problem?id=1151 题意:求矩形并的面积 思路:线段树+离散化+扫描线#include <stdio.h> #include <algorithm> #include <iostream> #include <math.h> using namespace std; const int maxn=200; struct SegmentTree { int l, r, cover; double len, sum; }st[maxn<<2]; struct line { double y_top, y_btm, x; int in; bool operator<(line l) const { return x<l.x; } }l[maxn+10]; int n, cnt; double y[maxn+10], ans, last_area; void BuildTree(int v, int left, int right) { st[v].l=left, st[v].r=right, st[v].cover=0, st[v].len=y[right]-y[left]; if (right-left==1) { st[v].sum=0; return; } int mid=(left+right)>>1; int lc=v<<1; int rc=lc+1; BuildTree(lc, left, mid); BuildTree(rc, mid, right); st[v].sum=st[lc].sum+st[rc].sum; } void Update(int v) { if (st[v].cover>0) st[v].sum=st[v].len; else if (st[v].r-st[v].l>1) st[v].sum=st[v*2].sum+st[v*2+1].sum; else st[v].sum=0; } void Insert(int v, int left, int right) { if (st[v].l==left&&st[v].r==right) st[v].cover++; else { int lc=v<<1; int rc=lc+1; int mid=(st[v].l+st[v].r)>>1; if (right<=mid) Insert(lc, left, right); else if (left>=mid) Insert(rc, left, right); else { Insert(lc, left, mid); Insert(rc, mid, right); } } Update(v); } void Delete(int v, int left, int right) { if (st[v].l==left&&st[v].r==right) st[v].cover--; else { int lc=v<<1; int rc=lc+1; int mid=(st[v].l+st[v].r)>>1; if (right<=mid) Delete(lc, left, right); else if (left>=mid) Delete(rc, left, right); else { Delete(lc, left, mid); Delete(rc, mid, right); } } Update(v); } int GetIndex(double x) { return lower_bound(y, y+cnt, x)-y; } int main() { //freopen("in.txt", "r", stdin); int cc=1; while (scanf("%d", &n), n) { double x1, y1, x2, y2; for (int i=0; i<n; i++) { scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2); l[i*2].x=x1, l[i*2+1].x=x2; l[i*2].y_top=l[i*2+1].y_top=y1; l[i*2].y_btm=l[i*2+1].y_btm=y2; l[i*2].in=1, l[i*2+1].in=0; y[i*2]=y1, y[i*2+1]=y2; } sort(y, y+2*n); sort(l, l+2*n); cnt=0; for (int i=1; i<2*n; i++) { if (y[i]!=y[i-1]) y[cnt++]=y[i-1]; } y[cnt++]=y[2*n-1]; BuildTree(1, 0, cnt-1); ans=0; for (int i=0; i<2*n-1; i++) { if (l[i].in) Insert(1, GetIndex(l[i].y_top), GetIndex(l[i].y_btm)); else Delete(1, GetIndex(l[i].y_top), GetIndex(l[i].y_btm)); ans+=(l[i+1].x-l[i].x)*st[1].sum; } printf("Test case #%d\n", cc++); printf("Total explored area: %.2lf\n\n", ans); } return 0; }
相关推荐
Maxwell中铜导体热损计算的关键步骤与技巧
本文详细介绍了在Maxwell软件中准确计算铜导体热损的关键步骤与实用技巧。重点阐述了如何正确设置涡流场求解器、启用涡流效应、根据工作频率计算并应用肌肤深度以指导网格剖分,以及准确施加激励和定义电流回路。文章还强调了使用温度相关材料属性和进行后处理验证的重要性,旨在帮助工程师获得可靠的热损计算结果,优化产品设计。
PKU1151线段树解法
模仿别人的代码写的这题不用线段树也可以过 #include<stdio.h>#include<string.h>#include<stdlib.h>structline{doublex,y1,y2;intin;};structnode{node*pl,*pr;intiL,iR;do...
【论文精读】DisCo: Graph-Based Disentangled Contrastive Learning for Cold-Start Cross-Domain Recommendat
源域中具有相似偏好的用户在目标域中可能会表现出不同的兴趣。因此,直接迁移嵌入可能会引入不相关的源域协同信息。提出了一个基于图的解耦对比学习框架,以捕捉细粒度的用户意图并过滤掉不相关的协同信息,从而避免负迁移。 具体而言,对于每个域,我们使用多通道图编码器来捕捉多样化的用户意图。然后,我们在嵌入空间中构建亲和图,并执行多步随机游走以捕捉高阶用户相似性关系。将一个域视为目标域,我们提出了一种以用户相似性为指导的解耦意图对比学习方法,以优化跨域的用户意图桥接。
pku 1151
#include #include using namespace std;#define MAX 101#define INF 100001.0fstruct TNode{ int left, right; double top; double sum;};TNode T[MAX*12];double map[MAX][4];// left rig
【LLM】ms-Swift框架下SFT与GRPO协同优化的高效训练策略
本文深入探讨了ms-Swift框架下监督微调(SFT)与群组相对策略优化(GRPO)的协同训练策略,提升大型语言模型(LLM)的性能与效率。通过创新的架构设计和两阶段训练流程,结合GRPO的群组奖励估计与动态基线调整技术,显著优化了数学推理等任务的准确率。文章还分享了计算资源高效利用和参数调优的实战经验,为LLM训练提供了实用指导。
MIUI升级后录音神秘消失?别慌!手把手教你从Android/data目录找回宝贵录音文件
本文详细解析了MIUI升级后录音文件消失的原因,并提供了从Android/data目录找回录音文件的实用指南。通过技术分析和步骤演示,帮助小米手机用户解决录音文件丢失问题,同时分享预防措施和高级恢复方案,确保重要录音数据安全。
pku 1151 Atlantis(线段树+离散化+扫描线)
<br />先不说,因为还不是很懂的说~~~~~~<br />#include<iostream> #include<cstdlib> #define N 105 using namespace std; struct elem{ double x; double s; double t; bool flag; }; struct node{ int l; int r; int cover; double m; }; elem cor[2*N]
惊呆了!Oracle 11g从入门到放弃的保姆级指南(新手必看)
本文为Oracle 11g数据库新手提供了一份详尽的入门指南。内容涵盖从安装配置、SQL*Plus工具使用、核心的SQL增删改查操作,到事务、索引等进阶概念的解析。文章旨在帮助初学者避开常见陷阱,快速掌握这一经典关系型数据库管理系统的基本操作与核心技能,实现从入门到上手。
pku1151 atlantis
没啥说的,直接代码: //pku 1151 atlantis #include #include #include #include #include #include #define Sleft(x) ((x<<1)) #define Sright(x) ((x<<1|1)) #define Sfather(x) ((x>>1)) using namespac
深入解析TMC2209 UART寄存器配置:从基础指令到高级参数调优
本文深入解析TMC2209 UART寄存器配置,从基础指令到高级参数调优,涵盖电流控制、微步细分等关键设置。通过实战案例和优化技巧,帮助开发者高效配置步进电机驱动,提升系统性能和稳定性。特别介绍了UART通信协议和CRC校验实现,确保数据传输可靠性。
java毕设:基于springboot的服装搭配推荐系统(springboot+layui+jq+html)1011
项目描述 基于springboot的服装搭配推荐系统: 基于天气服装搭配推荐系统为用户提供未来一周的天气预报情况,并根据预报天气和用户现有的服装进行着装搭配,以及显示未来6小时精确温度数据为用户提供更精确的天气信息便于用户在出行前对自己的着装进行调整,每日用户可以根据自己当日对系统推荐的着装搭配舒适度进行反馈,系统将根据用户的反馈对用户着装的保暖系数进行相应调整,通过多次的反馈和调整形成对用户着装的个体化和精确化的推荐。 本系统可以为用户提供以下服务: 1.未来五天的天气信息显示; 2.未来六小时内天气温度
pku 1151 Atlantis(离散化)
Atlantis Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14357 Accepted: 5516 Description There are several ancient Greek texts that contain descriptions
工业相机——靶面尺寸、像元尺寸、分辨率 、传感器尺寸
由Sensor对角线长度表示,单位英寸,这里的1英寸=16mm。——靶面尺寸为宽12.7mm*高9.6mm,对角线16mm。——靶面尺寸为宽8.8mm*高6.6mm,对角线11mm。——靶面尺寸为宽7.2mm*高5.4mm,对角线9mm。——靶面尺寸为宽6.4mm*高4.8mm,对角线8mm。——靶面尺寸为宽4.8mm*高3.6mm,对角线6mm。——靶面尺寸为宽3.2mm*高2.4mm,对角线4mm。——靶面尺寸为宽14*高10.5mm,对角线17mm。
POJ1151 Atlantis ——离散优化——Pku1151
分别将x、y坐标排序之后统计有效小矩形即可。这类题目也可以加上线段树优化,可是这道题的数据范围仅仅为n<=100,是可以不用线段树的,直接统计也能AC. CODE Program Atlantis;//By_Thispoet Const maxn=300; Var i,j,k,m,n,p,q :Longint; ans :Extended...
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
IMSL CNL 7.0.0 (x86-64)Crack
IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件
hdu1542 && pku 1151 Atlantis(面积并)
求N个矩形的面积并,这个比周长并要简单的多,不过涉及到了离散化,根据相对大小,给对应的double型数据编号,插入是再二分查找编号即可 也可以用矩形切割去做,代码简单很多 矩形切割 #include<iostream> #include<algorithm> #include<string> #include<math.h> usi...
IDEA的使用指南
IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.
pku1151 Atlantis(矩阵面积并)
话说这题很多人直接离散化过的,但我想这题的考察点应该是一个经典的问题(矩阵面积并),由于矩阵面积并的求法和上一篇blog矩阵周长并的求发极为相似,故在此不多加说明,以下是我的代码,希望对大家有帮助:#include#include#include#includeusing namespace std;struct lineTree{ int down,up;
ssm框架搭建
这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载
POJ 1151 HDU 1542 Atlantis(扫描线)
题目大意就是:去一个地方探险,然后给你一些地图描述这个地方,每个描述是一个矩形的右下角和左上角。地图有些地方是重叠的,所以让你求出被描述的地方的总面积。 扫描线的第一道题,想了又想,啸爷还给我讲了讲,终于有点理解了啊。 先说扫描线:书上说扫描线不是一个物体,而是一个概念。在计算几何中的作用类似于图论中的bfs与dfs。所以还是需要多做题目来体会一下啊。 这道题目的做法是:离散化x坐标,然后按
POJ 1151 Atlantis
/*http://acm.pku.edu.cn/JudgeOnline/problem?id=1151离散化方法思想是将整个地图划分为最小的子方格,然后将子方格的面积相加即可得到最终结果1)首先分别将输入数据的x坐标和y坐标保存到x和y数组里面,然后对这两个数组排序2)然后遍历所有矩形,对于矩形(x1, y1)(x2, y2), 分别遍历x数组和y数组,对于所有满足满足
矩形面积并 POJ Atlantis
HDU 1542 PKU 1151 Atlantis 【线段树求矩形并】 Atlantis Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9204 Accepted: 3617 Description The
PKU 2352 Stars
题目:http://poj.org/problem?id=2352 题意:平面上有n个星星,每个星星的等级是比该星星的X和Y坐标都小的星星的个数,给出每个星星的坐标(按y轴升序),输出等级0~n-1每个等级的星星个数。 思路:线段树,因为y轴升序给出,我们只考虑x轴就可以, 每次查询只需要查询0~x区间的个数即可。 #include #include const int maxn=320
PKU 2104 K-th Number
题目:http://poj.org/problem?id=2104 借此题学习了一下划分树 划分树定义: 他的每个节点保存【l, r】区间的所有元素,元素的排列顺序与输入的顺序相同,但是其两个子树的元素是所有元素排序后, 有(l+r)/2个元素进入左子树,其余的进入右子树,同时 维护一个num[]变量, num[i]表示l->i中, 有多少个元素进入了左子树。 红色代表进入左子树的元素
PKU 2063 Investment
题目:http://poj.org/problem?id=2063 题意:Jone 有M钱,有d种股票,给出每种股票的价值和年利息,给你y年的时间,使你的钱最多。 思路:典型的完全背包,可以参见背包九讲,需要注意的是The value of a bond is always a multiple of $1000,就是股票的价值是1000的倍数,这样就可以降低 时间复杂度了。。。。
PKU 2947 Widget Factory
题目:http://poj.org/problem?id=2947 题意:工人生产不同的部件需要不同的时间,最少需要3天,最多需要9天。 现有给出n种部件和m条记录,每条记录包括该工人生产部件的总数k和他开始生产时间和结束时间(只给出是周几,不给出具体时间),之后给出这K个部件跟别所属的种类。 最后求出生产这n种部件分别所需要的时间。 思路:高斯消元,设每种部件生产一个所需
PKU 1014 Dividing
题目:http://poj.org/problem?id=1014 题意:有6个物品,价值分别为1、2、3、4、5、6,输入6个数,代表相应的物品的个数,问的是 能不能物品分成两份,每份的价值总和相同。 思路:深搜或多重背包~~~ 好久没写了 生啊~~~ //深搜 #include #include int array[10]; int a, b, c, d, e, f; int
PKU 1018 Communication System
题目:http://poj.org/problem?id=1018 题意:有一个系统有n个设备,每个设备有m个制造商,每个制造商制造的设备的最大带宽和价值是不同的, 题目要求计算n个设备组成的系统中最小的带宽和总价值的最大值,有点绕~~ 思路:选出所有设备的最大带宽和最小带宽,然后从最小带宽枚举到最大带宽,找出每种设备价值最小切带宽大于当前当前带宽~~ #include #in
493



被折叠的 条评论
为什么被折叠?



