首页 > 编程语言 >试题 算法提高 长度统计

试题 算法提高 长度统计

时间:2024-03-24 20:29:23浏览次数:24  
标签:试题 int 线段 算法 端点 长度 sum Scanner

资源限制

内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  给出n个线段以及它们的左端点和右端点。我们要求得到这些线段覆盖部分的长度。如线段[1,2]和[2,3]覆盖了数轴上1到3这个部分,所以它们覆盖的长度就是2。

输入格式

  第一行一个数n表示有n条线段,之后的n行每行两个整数表示每个线段的左端点和右端点。

输出格式

  一个数表示覆盖部分的长度。

样例输入

3
1 2
2 3
4 5

样例输出

3

数据规模和约定

  0<n<=1000, 答案不超过32位整数。

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		int n=scanner.nextInt();
		int[] s=new int[n];
		int[] f=new int[n];
		for(int i=0;i<n;i++) {
			s[i]=scanner.nextInt();
			f[i]=scanner.nextInt();
		}
		/**
		 * 下面先进行排序,排序准则:先按照第一个按照从小到大的顺序排列,在第一个数相同的基础上,第二个数也按照从小到大的顺序排列。
		 * 下面也是带flag的冒泡排序
		 */
		for(int i=0;i<n-1;i++) {
			int flag=0;
			for(int j=0;j<n-1-i;j++) {
				if(s[j]>s[j+1]) {
					flag=1;
					int t=s[j];
					s[j]=s[j+1];
					s[j+1]=t;
					t=f[j];
					f[j]=f[j+1];
					f[j+1]=t;
				}
				if(s[j]==s[j+1]&&f[j]>f[j+1]) {
					flag=1;
					int t=f[j];
					f[j]=f[j+1];
					f[j+1]=t;
					
				}
			}
		}
//		/**
//		 * 检测排序是否正确
//		 */
//		for(int i=0;i<n;i++) {
//			System.out.println(s[i]+" "+f[i]);
//		}
		/**
		 * 下面开始进行该算法的核心
		 * 本算法主要是进行对便捷的更新
		 */
		int x=s[0];//左边界;
		int y=f[0];//右边界;
		int sum=0;//用于统计总占面积
		for(int i=1;i<n;i++) {
			if(s[i]<=y&&f[i]>y) {
				y=f[i];//这里只对右边界进行更新。
			}
			if(s[i]>y) {
				sum+=(y-x);
				x=s[i];
				y=f[i];
				//这里面先将上一段的长度存下,在对左右边界进行更新。
			}
		}
		sum+=(y-x);
		//对最后一段进行存储..
		System.out.println(sum);
	}

}

这次写的代码和之前的一个代码很相似,好像是找出草堆的最少藏人数。差不多忘掉了!!!

标签:试题,int,线段,算法,端点,长度,sum,Scanner
From: https://blog.csdn.net/2303_80814551/article/details/136994282

相关文章

  • 编程界的万能钥匙:揭秘程序员常用的超实用算法!
    程序员常用的算法引言一、排序算法:为数据秩序井然二、搜索算法:高效定位数据三、图算法:理解复杂网络结构四、动态规划:优化递归求解过程五、贪心算法:简单高效的局部最优解六、数据结构相关算法:必不可少的工具七、算法的选择与实践:如何选择合适的算法结语引言大家好,这......
  • 【晴问算法】入门篇—日期处理—日期加法
    题目描述给定一个日期DAY和一个正整数n,求日期DAY加上n天后的日期。输入描述第一行为给定的日期DAY(格式为YYYY-MM-DD,范围为1900-01-01<DAY≤2199-12-31),数据保证一定合法;第二行为需要增加的天数n(1≤n≤10000)。输出描述以YYYY-MM-DD的格式输出增加了n天后的日期。样例1......
  • 【晴问算法】提高篇—动态规划专题—最长公共子序列
    题目描述现有两个字符串s1​​​​与s2​,求s1​​​​与s2​​​​的最长公共子序列的长度(子序列可以不连续)。输入描述第一行为字符串s1​​,仅由小写字母组成,长度不超过100;第一行为字符串s2​​​,仅由小写字母组成,长度不超过100。输出描述输出一个整数,表示最长公共......
  • 20240318-2-推荐算法Graph_Embedding
    GraphEmbedding在许多推荐场景下,可以用网络结构数据来刻画对象(用户、商品等)之间的关系。例如:可以将用户和商品作为网络中的结点,用户和商品之间的边代表购买关系。GraphEmbedding是一种将网络中对象之间的关系转换为每个对象的(向量)特征的一种技术。其主要想法是输入网......
  • 20240318-1-推荐算法gbdt_lr
    gbdtlrgbdt+lr是facebook提出在线广告模型,我们知道LR之前在广告和推荐系统由于其快速的计算而被广泛使用,使用由于lr是线性模型,其模型表现能力不强,需要做大量的特征工程。facebook提出提出使用决策树进行特征embedding。为了提升线性分类器的准确度,有两种方法进行特征......
  • 基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
    1.算法运行效果图预览RTL图:   仿真图:   导入到matlab显示效果如下:   2.算法运行软件版本matlab2022a vivado2019.2 3.算法理论概述      在计算机视觉领域,基于肤色模型和中值滤波的手部检测方法是一种常见的初步定位策略。该方法主要分为......
  • 指数退避算法
    指数退避算法指数退避算法在查看Ants的源码时,发现了一个关于自旋锁spinlock的一个操作,就此引入指数退避算法以及相关的实现.互斥锁/自旋锁示例代码func(sl*spinLock)Lock(){backoff:=1for!atomic.CompareAndSwapUint32((*uint32)(sl),0,1){//Le......
  • 算法思想总结:位运算
                            创作不易,感谢三连支持!!一、常见的位运算总结标题  二、位1的个数.-力扣(LeetCode) 利用第七条特性:n&(n-1)干掉最后一个1,然后每次都用count++去统计,直到变成0classSolu......
  • 【算法双周赛】蓝桥杯【小白赛】
    坤星球【算法赛】问题描述坤星球是一颗十万光年之外的星球,相比于地球的时间流逝它的时间流逝更加缓慢,坤星球1年等于地球2.5年。现在问你,2024坤年等于地球多少年?注意:答案输出阿拉伯数字,不能为浮点数。输入格式本题为填空题,无需输入即可作答。输出格式输出一个数......
  • 计算机网络安全试题
     计算机网络安全试题一、是非题(每题1分,共10分。正确的在括号内划√,错的划×,填入其它符号按错论。)( )1.城域网采用LAN技术。( )2.TCP/IP体系有7个层次,ISO/OSI体系有4个层次。( )3.ARP协议的作用是将物理地址转化为IP地址。( )4.在差分曼彻斯特......