这题我先是用离散化做了下,发现可以过,时间当然要久点。在离散化中有这样一个概念:超元线段。这些线段将平面分割成
大小不相当(或相等)的矩形,这些矩形的边要么是给定矩形的边的一部份要么完全和给定矩形无关。我们只有按给定矩形的顶点
的x坐标,y坐标分别画出垂直x轴,y轴的直线,用这些直线来分割平面,它们相交得到的线段就是超元线段。只有统计出超元线段
出现的次数矩形的总周长就可以算到了。
- /*pku1177
- Name: Picture
- Date: 29-07-08 13:52
- Description: 计算几何,离散化后求周长
- */
- #include<stdio.h>
- #include<algorithm>
- #define pr printf
- int x[10002],y[10002];
- int a[5002][4];
- int A[10002],n;
- int cmp(const void * a,const void *b)
- {
- return *(int *)a-*(int * )b;
- }
- int search_bin(int *t,int k,int start,int end)
- {
- int low=start,high=end-1,mid;
- while (low<=high)
- {
- mid=(low+high)/2;
- if (k==t[mid]) return mid;
- else if (k<t[mid]) high=mid-1;
- else low=mid+1;
- }
- return -1;
- }
- void count_x(int index){
- int i,x1=x[index],x2=x[index+1];
- int y1,y2;
- for(i=0;i<n;i++)
- if(a[i][0]<=x1 && a[i][2]>=x2){//这个矩形跨越了该原线段
-
- A[y1=search_bin(y,a[i][3],0,2*n)]++;
- A[y2=search_bin(y,a[i][1],0,2*n)]--;
- }
- }
- void count_y(int index){
- int i,y1=y[index],y2=y[index+1];
- for(i=0;i<n;i++)
- if(a[i][1]<=y1 && a[i][3]>=y2){//这个矩形跨越了该原线段
- A[search_bin(x,a[i][2],0,2*n)]++;
- A[search_bin(x,a[i][0],0,2*n)]--;
- }
- }
- int add(){//该超元线段出现次数
- int i,sum,ad;
- sum=0;ad=0;
- for(i=0;i<2*n;i++)
- {
- if(A[i]!=0)
- {
- if(ad==0)sum++;
- ad+=A[i];
- if(ad==0)sum++;
- }
-
- }
- return sum;
- }
- int main(){
- int i,j,k,v1,v2,h2,h1;
- scanf("%d",&n);
- for(i=0,k=0;i<n;i++,k++)
- {
- scanf("%d%d%d%d",&a[i][0],&a[i][1],&a[i][2],&a[i][3]);
- x[k]=a[i][0],y[k]=a[i][1],x[++k]=a[i][2],y[k]=a[i][3];
- }
- qsort(x,2*n,sizeof(int),cmp);
- qsort(y,2*n,sizeof(int),cmp);
- int ans=0,len,tmp;
- for(i=0;i<2*n-1;i++)//横线的超元线段
- {
- len=x[i+1]-x[i];
- if(len==0)continue;
- for(j=0;j<2*n;j++)A[j]=0;
- count_x(i);
- tmp=add();
- ans+=(tmp*len);
- }
- for(i=0;i<2*n-1;i++)//竖线的超元线段
- {
- for(j=0;j<2*n;j++)A[j]=0;
- len=y[i+1]-y[i];
- if(len==0)continue;
- count_y(i);
- tmp=add();
- ans+=(tmp*len);
- }
- pr("%d/n",ans);
- }
- /*
- 2
- 4 2 10 9
- 6 5 15 13
- 44
- 3
- -15 0 5 10
- -5 8 20 25
- 15 -4 24 14
- */
相关推荐
不平衡电网下自抗扰顺序模型预测PWM整流器控制仿真模型(Simulink仿真实现)
内容概要:本文围绕面向城市空中交通的多无人机路径规划问题展开研究,提出了一套融合全局规划、动态避障与局部协同调整的综合路径规划方法。研究内容涵盖基于改进RRT算法与图论的全局路径规划、基于动态风险场和动态窗口法(DWA)的模型预测控制实现动态避障,以及基于分布式协同控制的多无人机局部路径协同策略。通过Matlab平台构建仿真环境,在多种典型城市交通场景下对所提方法进行了系统性验证,结果表明该方法在路径安全性、编队稳定性与任务效率方面表现优异。文章还深入探讨了算法的创新点与未来研究方向,为复杂城市环境下多无人机系统的自主协同提供了理论支撑与技术路径。; 适合人群:具备自动化、控制理论、计算机科学或相关领域基础知识,从事无人机系统、智能交通、路径规划、多智能体协同控制等方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①为城市空中交通系统中的多无人机安全、高效飞行提供可靠的路径规划解决方案;②支持在复杂、动态的城市场景中开展无人机自主导航、编队飞行与协同控制的技术研究与仿真验证。; 阅读建议:建议结合提供的Matlab代码进行实践操作,重点关注算法的具体实现细节、参数配置对性能的影响以及不同仿真场景下的实验设计,以深入理解各模块的集成逻辑与实际应用效果。
PKU 1177 Picture
题目:http://poj.org/problem?id=1177 题意:墙上贴着一些海报、照片等矩形,所有的边都为垂直或水平。每个矩形可以被其它矩形部分或完全遮盖,所有矩形合并成区域的边界周长称为轮廓周长。 思路:见陈宏论文//一维数组 #include #include #include #include using namespace std; const int max
手把手教你用PlantVillage数据集搭建农作物病害识别模型(Python实战)
本文详细介绍了如何使用PlantVillage数据集和Python构建农作物病害识别模型。从环境准备、数据获取到模型构建、训练与评估,手把手教你实现一个实用的农业AI应用。特别针对PlantVillage数据集的特点,提供了处理类别不平衡、图像预处理和模型优化的实战技巧,帮助开发者快速掌握农作物病害识别技术。
hdu 1828 / poj/pku 1177(Picture)(线段树求矩形覆盖面周长)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1828 题意描述:题意大家都懂的 分析:此题求的方法和求面积并的方法是一样的,只是在线段树中增加了一些域方便求周长、此题的做法,因为这里的坐标是整点,如果你不采用离
esim分布式云卡池技术
eSIM卡,即Embedded-SIM,嵌入式SIM卡。eSIM卡的概念就是将传统SIM卡直接嵌入到设备芯片上,而不是作为独立的可移除零部件加入设备中,用户无需插入物理SIM卡。这一做法将允许用户更加灵活的选择运营商套餐,或者在无需解锁设备、购买新设备的前提下随时更换运营商。未来通用的eSIM标准建立将为普通消费者、企业用户节省更多移动设备使用成本,并带来更多的便利、安全性。 2018年 3月7日,中国联通宣布,正式在上海、天津、广州、深圳、郑州、长沙6座城市率先启动“eSIM一号双终端”业务的办理。[.
java毕设:基于springboot的服装搭配推荐系统(springboot+layui+jq+html)1011
项目描述 基于springboot的服装搭配推荐系统: 基于天气服装搭配推荐系统为用户提供未来一周的天气预报情况,并根据预报天气和用户现有的服装进行着装搭配,以及显示未来6小时精确温度数据为用户提供更精确的天气信息便于用户在出行前对自己的着装进行调整,每日用户可以根据自己当日对系统推荐的着装搭配舒适度进行反馈,系统将根据用户的反馈对用户着装的保暖系数进行相应调整,通过多次的反馈和调整形成对用户着装的个体化和精确化的推荐。 本系统可以为用户提供以下服务: 1.未来五天的天气信息显示; 2.未来六小时内天气温度
PKU 1177 Picture .
Picture Time Limit: 2000MS Memory Limit: 10000K Total Submissions: 7116 Accepted: 3711 Description A number of rectangular posters, photographs and other pictures of the s...
[QMT量化交易小白入门]-九十五、多因子选股和趋势择时股票量化交易策略,年化收益率40.61%
本策略采用“双层过滤”机制:第一层基于多维度财务指标进行股票池筛选(多因子选股),第二层运用均线系统和MACD指标实施动态择时(趋势跟踪)。这种设计既保证了组合的质量下限,又能灵活应对市场波动。因子配置科学性:涵盖估值、成长、盈利、动量四大类因子风险控制精细化:设置动态止损与仓位管理机制信号验证严格性:多重条件交叉验证提升胜率。
数学类小结
pku 1150 The Last Non-zero Digit 和计算排列数末尾有多少个零有些类似,把2,5因子都拿出来,剩下的数的最后一个数字只有1,3,7,9。只有各位上的数字才会影响最后一个非零数字。统计可以用递归来统计,求出1~n中因子2,5的个数,以及3,7,9结尾的数和去掉2,5后新的到的数中3,7,9结尾的数。结果就是 2^(dig[2]-dig[5])*3^(dig[3])*
数据分析:蛋白质组的GO term的富集分析详解
在获取差异表达蛋白质的数据之后,依据蛋白质与基因的对应映射关系,开展GO(Gene Ontology)term的富集分析。通过这一分析流程,能够精准地识别出不同实验组中过表达基因所关联的显著富集的GO term通路。这些富集的GO term通路为后续的生物学研究提供了关键线索,有助于深入探究基因功能、揭示潜在的生物学机制,从而推动生物学发现的进程。
【声纳技术】声呐时间反转镜技术:从被动聚焦到主动空间复用
时间反转镜技术以其独特的物理机制,为水声通信与声呐探测提供了一条绕过传统自适应均衡器的新路径。被动时间反转利用接收端的空间分集实现脉冲压缩,结构简洁、计算高效;主动时间反转则通过发射端预编码,将多径能量引导至目标位置,为多用户下行链路的空间复用奠定了物理基础。从Kuperman等人在海洋中首次验证声学时间反转镜,到TR-MIMO声呐的湖试验证,再到VTRM-CRK多用户通信系统的海试成功,该技术已从理论概念逐步走向工程实用。
pku 3533 Light Switching Game(nim 积)
第一个nim积题目。nim积与nim和够成一个正整数域上的群。nim积用⊗表示,nim和用⊕表示。和乘法类似: x⊗1=1⊗x=x y⊗0=0 (x⊗y)⊗z=x⊗(y⊗z)⊕是异或运算。⊗的运算法则定义为: 1.The nimber product of distinct Fermat 2-powers (numbers of the form ) is equal to
嵌套学习 (Nested Learning, NL):赋予AI持续学习能力的革命性范式
嵌套学习(Nested Learning, NL)的核心哲学在于彻底颠覆传统深度学习中将模型架构(Architecture)与优化算法(Optimization)视为两个独立组件的“扁平化”视角 。传统方法通常将神经网络的结构设计和其训练过程分离开来,模型架构是预先定义好的静态蓝图,而优化算法(如SGD、Adam)则是一个外部的、统一的规则引擎,负责在训练期间调整模型参数 。这种分离的视角隐藏了模型内部不同组件之间复杂的梯度流和动态更新过程,将整个学习系统视为一个单一层次的优化问题。然而,嵌套学习范式提出,
pku 1149 PIGS(最大流)
这题的网络是这样建的。设一个源点s,s将于客户节点相连,连接方式为对考虑一个猪圈是第一次被光顾s将于这位顾客之间有一条流容量是该猪圈的猪数,若这个猪圈被人光顾过,则在这个顾客和前一个顾客间有一条无限流量的通道。依次下去完成顾客节点和s,顾客节点和顾客阶段间的网络。最后是顾客和汇点的网络,每个顾客和汇点t都有条通道,容量是顾客希望购买的数量。 /*pku1149 Name:
使用R语言整理GEO数据的简易教程
本教程介绍了使用R语言从GEO数据库下载数据并进行数据整理的基本步骤。根据实际研究问题,你可能需要进行更复杂的数据处理和分析。R语言作为一种强大的生物信息学工具,为GEO数据的整理、分析和可视化提供了丰富的功能和工具。希望这个教程能够帮助你入门GEO数据整理和R语言的应用。如果你在使用过程中遇到问题,或需要进一步的指导,请随时向我询问。祝你在GEO数据分析的旅程中取得成功!
IDEA的使用指南
IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.
基于频繁增长树(FP-树)的频繁项集挖掘算法实现
花了两天的时间终于完成了。一开始照着论文实现了一下,总是感觉怪怪的,结果果然不对,论文里描述看上去都差不多,就是抓不住要点,最后还是看懂了原版paper,才实现了。感觉FP-Tree的实现并不难,就是一些链表指来指去,倒是觉得FP_growth函数不好写,这个函数主要是在一棵大FP-Tree上操作,来生产小FP-Tree树,最终得到只有一个枝的树,就能打印组合了。递归是肯定的。另外,第一次用
visio安装包
Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。
计算几何小结
pku 1039 Pipe 这题的最优解在于最优直线至少会过两个拐点,枚举拐点对。pku 1092 Farmland 总是是过了。这题有点像找凸包,不同的是凸包是以最左下点作为参考。首先对每个顶点的邻接点排序(按极角),以源点和顶点为参照边,从小到大排序其邻接点。通过排序后各顶点的邻接点按逆时针排列。下一步就是去找所以的封闭多边形,按着从一条边以该边为轴逆时针旋转到邻近的边,由于事先对邻
VC中sqlite的使用
在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示
pku 1737 Connected Graph(组合数学,高精度)
package pku1737;import java.math.BigInteger;import java.util.*;public class Main { static BigInteger f[]; public static void main(String[] args) { int n; Scanner
pku 2348 Euclid's Game
这题的意思是说:给两个数,两个人轮流减少他们,不能再减的那个人输。每次只能在这两数中选小的(倍数)减大的.可以看出这类题不是NIM类题,因为每次减少的数目是不能确定下来的。先看些简单的情况。假设这两个数是a>b. 1。当a%b==0时,先行者胜,即(N-position). 2。当a%b!=0时, 设a=b*q+r。(q>1) 可以看出先者可以做出让a减b,2b,3b..qb这q种选择。在这些
hdu 2513 cake clicing(切蛋糕)
这题是用四维过的。dp[i][j][h][w],i,j表示蛋糕的左上角,h,w代表高和宽。在dp前还要统计一下每个子蛋糕方块中樱桃的数目。状态转移方程是这样的(考虑行,列两种切法) 在[i][j][h][w]这块蛋糕中没有樱桃,则 dp[i][j][h][w]=0 否则 dp[i][j][h][w]=min{ dp[i][j][h][w-w0]+dp[i][
pku2352 Stars(线段树实现)
第一个线段树。。。线段树真是灵活多变啊。。。看来要好好掌握还要多加练习。。/*pku2352 Name: Stars Date: 02-08-08 16:41 Description: 统计问题,线段树 */#include#define MAX 72010#define pr printf// FILE * pp=fopen("temp.txt
pku2406 Power Strings(kmp字符匹配,next数组)
重看了下数据结构,发现有些知识还没有吃透。kmp算法就是一个。kmp的关键就是next数组,求出了next数组后就和O(n*m)的算法类似。求next数组有dp的思想,假设知道next[i]=k,现在要求next[i+1], next[i]+1 ch[i]=ch[i+1] next[i+1]= next[k]+1 沿着前面的next数组找到一个k
动态规划小结
pku 3132 Sum of Different Primes(素数和) 一个数被k不同的素数相加,共有多少中方法。dp[i][k][j],表示数i由k个不同的素数相加,j表示第几个素数。dp[i][k][j]=sigma(dp[i-prime[j]][k-1][h]) 1pku 3291 Cousins(贪心,LCS) 求出两个字符串的最长公共子序列,题目要求的是构造出两个串的最长公
pku3277 City Horizon.(离散化+二分查找)
还是用到了离散化和二分查找的一个题目,题目是求每段线段可以达到最大的矩形面积,再求总和。/* Name: City Horizon Date: 31-07-08 17:06 Description: 离散化+二分查找 用了个链表*/#include#include#include#define pr printf__int64 x[100003]
647



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



